diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form index 937b7e1ce..b43898f82 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form @@ -75,7 +75,7 @@ false - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Form.form index 4b7258c61..b82c2a640 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Form.form @@ -698,6 +698,11 @@ Объект.ФормулаРасчетаКурса None + + ru + Курсы других валют в формуле обозначаются в виде наименований, заключенных в квадратные скобки. Пример: +(0.55 * [Доллар США] + 0.45 * [Евро]) / 2 + Button ФормулаРасчетаКурсаРасширеннаяПодсказка @@ -720,11 +725,16 @@ Left true + + StartChoice + ФормулаРасчетаКурсаНачалоВыбора + 35 true true false true + true true true true @@ -926,6 +936,20 @@ + + ПредставлениеФормулы + 15 + + String + + + + true + + + true + + ПараметрыПрописиВалютыНаДругихЯзыках diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl index 2d72b9f58..1fbcfbcd0 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl @@ -60,6 +60,13 @@ И КодыВалютЗагружаемыхИзИнтернета.НайтиПоЗначению(Объект.Код) <> Неопределено; Элементы.КурсВалютыЗагружаетсяИзИнтернета.Доступность = ДоступнаЗагрузкаИзИнтернета; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + ПредставлениеФормулы = МодульКонструкторФормул.ПредставлениеФормулы(ПараметрыФормулы()); + Иначе + Элементы.ФормулаРасчетаКурса.КнопкаВыбора = Ложь; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -293,4 +300,87 @@ КонецПроцедуры +&НаКлиенте +Процедура ФормулаРасчетаКурсаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + СтандартнаяОбработка = Ложь; + ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииРедактированияФормулы", ЭтотОбъект); + МодульКонструкторФормулКлиент.НачатьРедактированиеФормулы(ПараметрыФормулы(), ОписаниеОповещения); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПараметрыФормулы() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + + ПараметрыФормулы = МодульКонструкторФормул.ПараметрыРедактированияФормулы(); + ПараметрыФормулы.Формула = Объект.ФормулаРасчетаКурса; + ПараметрыФормулы.СкобкиОперандов = Ложь; + ПараметрыФормулы.Операнды = ОперандыФормулыРасчетаКурса(УникальныйИдентификатор); + ПараметрыФормулы.Операторы = ОператорыФормулыРасчетаКурса(УникальныйИдентификатор); + + Возврат ПараметрыФормулы; + КонецЕсли; + +КонецФункции + +&НаСервереБезКонтекста +Функция ОперандыФормулыРасчетаКурса(УникальныйИдентификатор) + + Возврат ПоместитьВоВременноеХранилище(ТаблицаОперандов(), УникальныйИдентификатор); + +КонецФункции + +&НаСервереБезКонтекста +Функция ОператорыФормулыРасчетаКурса(УникальныйИдентификатор) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + СписокОператоров = МодульКонструкторФормул.СписокОператоров("Операторы, ЧисловыеФункции"); + Возврат ПоместитьВоВременноеХранилище(СписокОператоров, УникальныйИдентификатор); + КонецЕсли; + +КонецФункции + +&НаСервереБезКонтекста +Функция ТаблицаОперандов() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + + ТаблицаОперандов = МодульКонструкторФормул.ТаблицаПолей(); + + Для Каждого ОписаниеВалюты Из Справочники.Валюты.КодыВалют() Цикл + Если ЗначениеЗаполнено(СтрСоединить(СтрРазделить(ОписаниеВалюты.СимвольныйКод, "0123456789", Ложь), "")) Тогда + Операнд = ТаблицаОперандов.Добавить(); + Операнд.Идентификатор = ОписаниеВалюты.СимвольныйКод; + Операнд.Представление = ОписаниеВалюты.СимвольныйКод; + Операнд.ТипЗначения = Новый ОписаниеТипов("Число"); + КонецЕсли; + КонецЦикла; + + Возврат ТаблицаОперандов; + + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура ПриЗавершенииРедактированияФормулы(ОписаниеФормулы, ДополнительныеПараметры) Экспорт + + Если ОписаниеФормулы = Неопределено Тогда + Возврат; + КонецЕсли; + + Объект.ФормулаРасчетаКурса = ОписаниеФормулы.Формула; + ПредставлениеФормулы = ОписаниеФормулы.ПредставлениеФормулы; + Модифицированность = Истина; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Catalogs/Валюты/ManagerModule.bsl b/SSL/src/Catalogs/Валюты/ManagerModule.bsl index c01dd840b..02272566f 100644 --- a/SSL/src/Catalogs/Валюты/ManagerModule.bsl +++ b/SSL/src/Catalogs/Валюты/ManagerModule.bsl @@ -44,7 +44,8 @@ ТекстЗапроса = "ВЫБРАТЬ | Валюты.Ссылка КАК Ссылка, - | Валюты.Наименование КАК СимвольныйКод + | Валюты.Наименование КАК СимвольныйКод, + | Валюты.НаименованиеПолное КАК Представление |ИЗ | Справочник.Валюты КАК Валюты |ГДЕ diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl index 5541aa549..5a8e05b38 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl @@ -297,7 +297,7 @@ | КОНЕЦ КАК Важность |ИЗ | НастройкиОбщих КАК НастройкиОбщих - | ПОЛНОЕ СОЕДИНЕНИЕ НастройкиРазделенных КАК НастройкиРазделенных + | ПОЛНОЕ СОЕДИНЕНИЕ НастройкиРазделенных КАК НастройкиРазделенных // АПК:70 - существенно не замедляет запрос, так как в соединяемых таблицах малое количество записей. | ПО НастройкиОбщих.Ссылка = НастройкиРазделенных.Ссылка | И НастройкиОбщих.Подсистема = НастройкиРазделенных.Подсистема |ГДЕ diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form index 6ffc5428a..b369e18d4 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form @@ -1922,86 +1922,76 @@ <main>true</main> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ - ВариантыОтчетов.Ссылка, - ВариантыОтчетов.ВерсияДанных, - ВариантыОтчетов.ПометкаУдаления, - ЕСТЬNULL(ВариантыКонфигурации.КлючЗамеров, ВариантыРасширений.КлючЗамеров) КАК КлючЗамеров, - ВариантыОтчетов.Пользовательский, - НЕ ВариантыОтчетов.Пользовательский КАК Предопределенный, + ВариантыОтчетовПереопределяемый.Ссылка, + ВариантыОтчетовПереопределяемый.ВерсияДанных, + ВариантыОтчетовПереопределяемый.ПометкаУдаления, + ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.КлючЗамеров, ВариантыРасширенийПереопределяемый.КлючЗамеров) КАК + КлючЗамеров, + ВариантыОтчетовПереопределяемый.Пользовательский, + НЕ ВариантыОтчетовПереопределяемый.Пользовательский КАК Предопределенный, ВЫБОР КОГДА &ЭтоОсновнойЯзык - И (ВариантыОтчетов.Пользовательский - ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - НЕОПРЕДЕЛЕНО, - ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - ТОГДА ВариантыОтчетов.Наименование + И (ВариантыОтчетовПереопределяемый.Пользовательский + ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО, + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + ТОГДА ВариантыОтчетовПереопределяемый.Наименование КОГДА НЕ &ЭтоОсновнойЯзык - И (ВариантыОтчетов.Пользовательский - ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - НЕОПРЕДЕЛЕНО, - ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + И (ВариантыОтчетовПереопределяемый.Пользовательский + ИЛИ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО, + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Наименование КАК СТРОКА(150)) КОГДА &ЭтоОсновнойЯзык - ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Наименование, + ВариантыРасширенийПереопределяемый.Наименование), ВариантыОтчетовПереопределяемый.Наименование) КАК СТРОКА(150)) + ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Наименование КАК СТРОКА(150)) КОНЕЦ КАК Наименование, - НЕ ВариантыОтчетов.ТолькоДляАвтора КАК ДоступенВсемПользователям, - ВариантыОтчетов.Отчет, - ВариантыОтчетов.КлючВарианта, - ВариантыОтчетов.ТипОтчета, - ВариантыОтчетов.Автор, + НЕ ВариантыОтчетовПереопределяемый.ТолькоДляАвтора КАК ДоступенВсемПользователям, + ВариантыОтчетовПереопределяемый.Отчет, + ВариантыОтчетовПереопределяемый.КлючВарианта, + ВариантыОтчетовПереопределяемый.ТипОтчета, + ВариантыОтчетовПереопределяемый.Автор, ВЫБОР - КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> "" - ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = "" - ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) - КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> "" - ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + КОГДА ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) <> "" + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Описание КАК СТРОКА(1000)) + КОГДА ПОДСТРОКА(ВариантыОтчетовПереопределяемый.Описание, 1, 1) = "" + ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурацииПереопределяемый.Описание, ВариантыРасширенийПереопределяемый.Описание) + КАК СТРОКА(1000)) + ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Описание КАК СТРОКА(1000)) КОНЕЦ КАК Описание, ВЫБОР - КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) - ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя - КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) - ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя - КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) - ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта - ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)), 14, 137) + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя + КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетовПереопределяемый.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) + ТОГДА ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта + ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетовПереопределяемый.Отчет КАК СТРОКА(150)), 14, 137) КОНЕЦ КАК ИмяОтчета, СведенияОРасширениях.ПолноеИмяОбъекта КАК ПолноеИмяОтчета, ВЫБОР - КОГДА ВариантыОтчетов.ПометкаУдаления = ИСТИНА + КОГДА ВариантыОтчетовПереопределяемый.ПометкаУдаления = ИСТИНА ТОГДА 4 - КОГДА ВариантыОтчетов.Пользовательский = ЛОЖЬ + КОГДА ВариантыОтчетовПереопределяемый.Пользовательский = ЛОЖЬ ТОГДА 5 ИНАЧЕ 3 КОНЕЦ КАК ИндексКартинки ИЗ - Справочник.ВариантыОтчетов КАК ВариантыОтчетов - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации - ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений - ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов - ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка - И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации - ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка - И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений - ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка - И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) - ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях + Справочник.ВариантыОтчетов КАК ВариантыОтчетовПереопределяемый + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурацииПереопределяемый + ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыКонфигурацииПереопределяемый.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширенийПереопределяемый + ПО ВариантыОтчетовПереопределяемый.ПредопределенныйВариант = ВариантыРасширенийПереопределяемый.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях ПО СведенияОРасширениях.ВерсияРасширений = &ВерсияРасширений - И СведенияОРасширениях.Идентификатор = ВариантыОтчетов.Отчет + И СведенияОРасширениях.Идентификатор = ВариантыОтчетовПереопределяемый.Отчет ГДЕ - ВариантыОтчетов.Отчет В(&ДоступныеОтчеты) + ВариантыОтчетовПереопределяемый.Отчет В (&ДоступныеОтчеты) И ВЫБОР КОГДА Не &ЕстьОтборПоВариантам - ТОГДА НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) - ИНАЧЕ ВариантыОтчетов.Ссылка В (&ВариантыПользователя) + ТОГДА НЕ ВариантыОтчетовПереопределяемый.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + ИНАЧЕ ВариантыОтчетовПереопределяемый.Ссылка В (&ВариантыПользователя) КОНЕЦ</queryText> <mainTable>Catalog.ВариантыОтчетов</mainTable> <autoFillAvailableFields>true</autoFillAvailableFields> diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl index b4e02ee9e..a7f3e0e02 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl @@ -92,10 +92,34 @@ Элементы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора); КонецЕсли; + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка <> Неопределено Тогда + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "ВариантыОтчетов.Наименование", "ВариантыОтчетов.Наименование" + СуффиксТекущегоЯзыка); + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыОтчетов.Описание", "ВариантыОтчетов.Описание" + СуффиксТекущегоЯзыка); + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыКонфигурации.Наименование", "ВариантыКонфигурации.Наименование" + СуффиксТекущегоЯзыка); + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ВариантыКонфигурации.Описание", "ВариантыКонфигурации.Описание" + СуффиксТекущегоЯзыка); + + КонецЕсли; + + Иначе + СвойстваСписка.ТекстЗапроса = ТекстЗапросаПредставленияНаДругихЯзыкахВТабличнойЧасти(); + КонецЕсли; + + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + + Если СуффиксТекущегоЯзыка = Неопределено Тогда + Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); + КонецЕсли; + Список.Параметры.УстановитьЗначениеПараметра("ДоступныеОтчеты", ВариантыОтчетов.ОтчетыТекущегоПользователя()); Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", Новый Массив(ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы())); Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык()); - Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); Список.Параметры.УстановитьЗначениеПараметра("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); ТекущийЭлемент = Элементы.Список; @@ -865,4 +889,97 @@ КонецПроцедуры +&НаСервере +Функция ТекстЗапросаПредставленияНаДругихЯзыкахВТабличнойЧасти() + + ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка, + | ВариантыОтчетов.ПометкаУдаления, + | ЕСТЬNULL(ВариантыКонфигурации.КлючЗамеров, ВариантыРасширений.КлючЗамеров) КАК КлючЗамеров, + | ВариантыОтчетов.Пользовательский, + | НЕ ВариантыОтчетов.Пользовательский КАК Предопределенный, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВариантыОтчетов.Наименование + | КОГДА НЕ &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В (НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), + | ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), + | ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | НЕ ВариантыОтчетов.ТолькоДляАвтора КАК ДоступенВсемПользователям, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.ТипОтчета, + | ВариантыОтчетов.Автор, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), + | ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта + | ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)), 14, 137) + | КОНЕЦ КАК ИмяОтчета, + | СведенияОРасширениях.ПолноеИмяОбъекта КАК ПолноеИмяОтчета, + | ВЫБОР + | КОГДА ВариантыОтчетов.ПометкаУдаления = ИСТИНА + | ТОГДА 4 + | КОГДА ВариантыОтчетов.Пользовательский = ЛОЖЬ + | ТОГДА 5 + | ИНАЧЕ 3 + | КОНЕЦ КАК ИндексКартинки + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка + | И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка + | И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИдентификаторыОбъектовВерсийРасширений КАК СведенияОРасширениях + | ПО СведенияОРасширениях.ВерсияРасширений = &ВерсияРасширений + | И СведенияОРасширениях.Идентификатор = ВариантыОтчетов.Отчет + |ГДЕ + | ВариантыОтчетов.Отчет В (&ДоступныеОтчеты) + | И ВЫБОР + | КОГДА НЕ &ЕстьОтборПоВариантам + | ТОГДА НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | ИНАЧЕ ВариантыОтчетов.Ссылка В (&ВариантыПользователя) + | КОНЕЦ"; + + Возврат ТекстЗапроса; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl index 44005db22..d00214e63 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -337,21 +337,8 @@ ПредопределенныйВариант = ВариантОбъект.ПредопределенныйВариант.ПолучитьОбъект(); ВариантОбъект.Наименование = ПредопределенныйВариант.Наименование; - - ПредставленияВарианта = ВариантОбъект.Представления.Выгрузить(); - ВариантОбъект.Представления.Очистить(); - ВариантОбъект.Представления.Загрузить(ПредопределенныйВариант.Представления.Выгрузить()); - - Если ПустаяСтрока(ВариантОбъект.Описание) Тогда - ВариантОбъект.Описание = ПредопределенныйВариант.Описание; - Иначе - ВариантОбъект.Представления.Сортировать("КодЯзыка"); - ПредставленияВарианта.Сортировать("КодЯзыка"); - Для каждого ПредставлениеВарианта Из ВариантОбъект.Представления Цикл - ОписаниеВарианта = ПредставленияВарианта.Найти(ПредставлениеВарианта.КодЯзыка, "КодЯзыка"); - ПредставлениеВарианта.Описание = ОписаниеВарианта.Описание; - КонецЦикла; - КонецЕсли; + ВариантОбъект.Описание = ПредопределенныйВариант.Описание; + КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl index 20bf83ae9..9a5ff3168 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl @@ -220,12 +220,12 @@ Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта); Если Обработано = 0 И Отказано <> 0 Тогда - ШаблонСообщения = НСтр("ru = 'Процедуре УстановитьИсточникДанныхВарианта не удалось обработать некоторые варианты отчетов: %1'"); + ШаблонСообщения = НСтр("ru = 'Не удалось обработать некоторые варианты отчетов: %1'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Отказано); ВызватьИсключение ТекстСообщения; Иначе - ШаблонКомментария = НСтр("ru = 'Процедура УстановитьИсточникДанныхВарианта обработала очередной пакет вариантов отчетов: %1'"); + ШаблонКомментария = НСтр("ru = 'Обработан очередной пакет вариантов отчетов: %1'"); Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано); ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo index c1d5394ad..549933b81 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo +++ b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo @@ -364,6 +364,48 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="52fd1e04-44b6-4405-a2de-ec5c0cf66b64"> + <name>ОписаниеЯзык1</name> + <synonym> + <key>ru</key> + <value>Описание (дополнительный язык)</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers/> + </type> + <toolTip> + <key>ru</key> + <value>Выводится в панели отчетов как подсказка.</value> + </toolTip> + <multiLine>true</multiLine> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="9a647b38-73da-4491-997b-773059cfd1c9"> + <name>ОписаниеЯзык2</name> + <synonym> + <key>ru</key> + <value>Описание (дополнительный язык 2)</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers/> + </type> + <toolTip> + <key>ru</key> + <value>Выводится в панели отчетов как подсказка.</value> + </toolTip> + <multiLine>true</multiLine> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <attributes uuid="50a1e3bf-8624-4474-854e-21b89aaf97ed"> <name>Отчет</name> <synonym> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Module.bsl index a411fa05c..cbaefd585 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Module.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Module.bsl @@ -35,7 +35,7 @@ Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда - Элементы.ФормаОткрытьВерсию.Картинка = БиблиотекаКартинок.Лупа; + Элементы.ФормаОткрытьВерсию.Картинка = БиблиотекаКартинок.ПолеВводаОткрыть; Элементы.ФормаОткрытьВерсию.Отображение = ОтображениеКнопки.Картинка; Элементы.СписокКомментарий.Видимость = Ложь; diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..61e6fb4bb --- /dev/null +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> + <filter> + <viewMode>Normal</viewMode> + <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> + </filter> + <order> + <viewMode>Normal</viewMode> + <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> + </order> + <conditionalAppearance> + <viewMode>Normal</viewMode> + <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> + </conditionalAppearance> + <itemsViewMode>Normal</itemsViewMode> + <itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID> +</Settings> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Form.form new file mode 100644 index 000000000..4cdbcf029 --- /dev/null +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Form.form @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:FormGroup"> + <name>СписокКомпоновщикНастроекПользовательскиеНастройки</name> + <id>1</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <title> + <key>ru</key> + <value>User settings group</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + true + true + + true + + + Список + + true + None + + Наименование + 16 + true + true + + true + + + Список.Description + + true + + НаименованиеРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + 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 + + + + СписокКонтекстноеМеню + 4 + true + + HierarchicalList + true + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + AsFileRef + + Список.DefaultPicture + + true + + + OnGetDataAtServer + СписокПриПолученииДанныхНаСервере + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
+ + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + ChangeHistory + Copy + Create + CreateFolder + Delete + DynamicListStandardSettings + Ignore + LevelDown + LevelUp + LoadDynamicListSettings + MoveItem + No + OK + OpenFromMainServer + OpenFromStandaloneServer + RestoreValues + Retry + SaveDynamicListSettings + SaveValues + SetDeletionMark + Yes + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.PredefinedDataName + + + Список.Скрыть + +
true
+ + ВЫБРАТЬ + СправочникВидыКонтактнойИнформации.Ссылка, + СправочникВидыКонтактнойИнформации.Наименование, + СправочникВидыКонтактнойИнформации.ИмяПредопределенныхДанных, + ЛОЖЬ КАК Скрыть +ИЗ + Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации +ГДЕ + СправочникВидыКонтактнойИнформации.ПометкаУдаления = ЛОЖЬ + Catalog.ВидыКонтактнойИнформации + true + 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..b0249f6ae --- /dev/null +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбора/Module.bsl @@ -0,0 +1,65 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаСервереБезКонтекста +Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Для Каждого СтрокаТаблицы Из Строки Цикл + + Если СтрНачинаетсяС(СтрокаТаблицы.Значение.Данные.ИмяПредопределенныхДанных, "Удалить") Тогда + СтрокаТаблицы.Значение.Данные.Скрыть = Истина; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Наименование.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Скрыть"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form index 814f9b5f5..50e200c86 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form @@ -337,6 +337,7 @@ ПриСозданииНаСервере CreateFolder + MoveItem DontBlock true true @@ -422,19 +423,12 @@ КОНЕЦ КОНЕЦ КАК ИндексПиктограммы, СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка, - ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА СправочникВидыКонтактнойИнформации.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) - КОНЕЦ КАК Наименование, + СправочникВидыКонтактнойИнформации.Наименование КАК Наименование, СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, СправочникВидыКонтактнойИнформации.Используется КАК Используется, СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа ИЗ Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления - ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка) - И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка) ГДЕ СправочникВидыКонтактнойИнформации.Используется И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl index b07e685b7..9540c14d8 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl @@ -17,8 +17,85 @@ ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды - Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык); - Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + Список.ТекстЗапроса = "ВЫБРАТЬ + | ВЫБОР + | КОГДА СправочникВидыКонтактнойИнформации.ЭтоГруппа + | ТОГДА ВЫБОР + | КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления + | ТОГДА 1 + | КОГДА СправочникВидыКонтактнойИнформации.Предопределенный + | ТОГДА 2 + | ИНАЧЕ 0 + | КОНЕЦ + | КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления + | ТОГДА 4 + | КОГДА СправочникВидыКонтактнойИнформации.Предопределенный + | ТОГДА ВЫБОР СправочникВидыКонтактнойИнформации.Тип + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) + | ТОГДА 14 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) + | ТОГДА 15 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) + | ТОГДА 16 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) + | ТОГДА 17 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) + | ТОГДА 18 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) + | ТОГДА 19 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype) + | ТОГДА 21 + | ИНАЧЕ 3 + | КОНЕЦ + | ИНАЧЕ ВЫБОР СправочникВидыКонтактнойИнформации.Тип + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) + | ТОГДА 7 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) + | ТОГДА 8 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) + | ТОГДА 9 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) + | ТОГДА 10 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) + | ТОГДА 11 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) + | ТОГДА 12 + | КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Skype) + | ТОГДА 20 + | ИНАЧЕ 3 + | КОНЕЦ + | КОНЕЦ КАК ИндексПиктограммы, + | СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА СправочникВидыКонтактнойИнформации.Наименование + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, + | СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + | СправочникВидыКонтактнойИнформации.Используется КАК Используется, + | СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления + | ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка) + | И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка) + |ГДЕ + | СправочникВидыКонтактнойИнформации.Используется + | И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА)"; + + Список.Параметры.УстановитьЗначениеПараметра("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык()); + Список.Параметры.УстановитьЗначениеПараметра("КодЯзыка", ТекущийЯзык().КодЯзыка); + + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form index 22cc05e24..38170ef3e 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form @@ -865,16 +865,16 @@ 183 <key>ru</key> - <value><font Arial><fontsize 8><bgcolor #ffffff><color #333333>В строке маски допустимо использование следующих специальных символов:</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>! - любой введенный символ преобразуется в верхний регистр;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>9 - допустимо ввести произвольный символ цифры;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>X (латинского алфавита) - допустимо ввести произвольный символ;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</></></></> -<font Arial><fontsize 8><bgcolor #ffffff><color #333333></></></></></value> + <value><font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>В строке маски допустимо использование следующих специальных символов:</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>! - любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>9 - допустимо ввести произвольный символ цифры;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>X (латинского алфавита) - допустимо ввести произвольный символ;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</></></></> +<font Arial><fontsize 8><color #333333><bgcolor #FFFFFF>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</></></></> +</value> true Label @@ -1438,6 +1438,19 @@ true + + ХранитИсториюИзменений + 4 + + Boolean + + + true + + + true + + ДополнительныеНастройкиАдреса diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl index 3f147f563..c967a12df 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl @@ -44,8 +44,6 @@ Элементы.ХранитьИсториюИзменений.Доступность = Ложь; КонецЕсли; - Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; - Если Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес ИЛИ НЕ СсылкаРодителя.Пустая() ИЛИ СсылкаРодителя.Уровень() = 0 Тогда @@ -69,7 +67,7 @@ Если ТабличнаяЧасть <> Неопределено Тогда Если ТабличнаяЧасть.Реквизиты.Найти("ДействуетС") <> Неопределено Тогда - Элементы.ГруппаХранитьИсториюИзменений.Видимость = Истина; + ХранитИсториюИзменений = Истина; КонецЕсли; КонецЕсли; КонецЕсли; @@ -168,7 +166,9 @@ // Формирование идентификатора для формул дополнительного реквизита (сведения). Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул) Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда - НаименованиеОбъекта = НаименованиеДляФормированияИдентификатора(ТекущийОбъект.Наименование, ТекущийОбъект.Представления); + + НаименованиеОбъекта = ЗаголовокДляИдентификатора(ТекущийОбъект); + ТекущийОбъект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( НаименованиеОбъекта, ТекущийОбъект.Ссылка, ТекущийОбъект.Родитель); @@ -363,34 +363,41 @@ Элементы.ДополнительныеНастройкиАдреса.Видимость = ДоступныДополнительныеНастройкиАдреса; Элементы.ДополнительныеНастройкиАдреса.Доступность = Не Объект.МеждународныйФорматАдреса; Элементы.ВидРедактирования.Видимость = Истина; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = ХранитИсториюИзменений; ДоступностьПолейДляАдреса(); Иначе + Элементы.ДополнительныеНастройкиАдреса.Видимость = Ложь; Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.АдресЭлектроннойПочты; Элементы.ВидРедактирования.Видимость = Ложь; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Skype") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Skype; Элементы.ВидРедактирования.Видимость = Ложь; Элементы.РазрешитьВводНесколькихЗначений.Доступность = Истина; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Телефон; Элементы.ВидРедактирования.Доступность = Объект.МожноИзменятьСпособРедактирования; Элементы.ВидРедактирования.Видимость = Истина; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = ХранитИсториюИзменений; ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Другое") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое; Элементы.ВидРедактирования.Доступность = Ложь; Элементы.ВидРедактирования.Видимость = Ложь; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие; - Элементы.ВидРедактирования.Видимость = Ложь; + Элементы.ВидРедактирования.Видимость = Ложь; Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; Иначе Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие; Элементы.ВидРедактирования.Доступность = Ложь; + Элементы.ГруппаХранитьИсториюИзменений.Видимость = Ложь; КонецЕсли; КонецЕсли; @@ -400,20 +407,24 @@ Процедура ИзменитьРеквизитыПриИзмененииТипа() Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда - Элементы.ХранитьИсториюИзменений.Доступность = Истина; + Элементы.ХранитьИсториюИзменений.Доступность = Объект.ВидРедактирования = "Диалог"; Иначе - Объект.ХранитьИсториюИзменений = Ложь; - Элементы.ХранитьИсториюИзменений.Доступность = Ложь; + ФлагХранитьИсториюИзменений = Ложь; + ДоступностьФлагаХранитьИсториюИзменений = Ложь; Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда Объект.ВидРедактирования = "ПолеВвода"; ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда - // Нет изменений + ФлагХранитьИсториюИзменений = Объект.ХранитьИсториюИзменений; + ДоступностьФлагаХранитьИсториюИзменений = Объект.ВидРедактирования = "Диалог"; Иначе Объект.ВидРедактирования = "ПолеВводаИДиалог"; КонецЕсли; + Объект.ХранитьИсториюИзменений = ФлагХранитьИсториюИзменений; + Элементы.ХранитьИсториюИзменений.Доступность = ДоступностьФлагаХранитьИсториюИзменений; + КонецЕсли; КонецПроцедуры @@ -430,7 +441,17 @@ ПредлагаемыйИдентификатор = ""; Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда - Представление = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Представление = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка), + Объект["Наименование"+ СуффиксТекущегоЯзыка], + Объект.Наименование); + Иначе + Представление = Объект.Наименование; + КонецЕсли; + ПредлагаемыйИдентификатор = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( Представление, Объект.Ссылка, Объект.Родитель); Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда @@ -443,23 +464,28 @@ &НаСервере Процедура ЗаполнитьИдентификаторДляФормулНаСервере() - ЗаголовокДляИдентификатора = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + + ЗаголовокДляИдентификатора = ЗаголовокДляИдентификатора(Объект); + Объект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( ЗаголовокДляИдентификатора, Объект.Ссылка, Объект.Родитель); КонецПроцедуры &НаСервереБезКонтекста -Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления) - Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда - Отбор = Новый Структура(); - Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); - НайденныеСтроки = Представления.НайтиСтроки(Отбор); - Если НайденныеСтроки.Количество() > 0 Тогда - Наименование = НайденныеСтроки[0].Наименование; - КонецЕсли; +Функция ЗаголовокДляИдентификатора(ТекущийОбъект) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + ЗаголовокДляИдентификатора = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка), + ТекущийОбъект["Наименование"+ СуффиксТекущегоЯзыка], + ТекущийОбъект.Наименование); + Иначе + ЗаголовокДляИдентификатора = ТекущийОбъект.Наименование; КонецЕсли; - Возврат Наименование; + Возврат ЗаголовокДляИдентификатора; + КонецФункции &НаКлиенте diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl index f58f7092a..4c61f316a 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl @@ -149,11 +149,14 @@ // Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов // // Параметры: -// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// Настройки - см. ОбновлениеИнформационнойБазыСлужебный.НастройкиЗаполненияЭлементов // Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт - Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + УправлениеКонтактнойИнформациейПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов(Настройки); + + Настройки.ПриНачальномЗаполненииЭлемента = Истина; + Настройки.ИмяКлючевогоРеквизита = "ИмяПредопределенногоВида"; КонецПроцедуры @@ -168,14 +171,20 @@ Элемент = Элементы.Добавить(); Элемент.ИмяПредопределенныхДанных = "СправочникПользователи"; - Элемент.Наименование = НСтр("ru = 'Контактная информация справочника ""Пользователи""'"); Элемент.ЭтоГруппа = Истина; Элемент.Используется = Истина; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", + "ru = 'Контактная информация справочника ""Пользователи""'", КодыЯзыков); // @НСтр-1 + Иначе + Элемент.Наименование = НСтр("ru = 'Контактная информация справочника ""Пользователи""'", + ОбщегоНазначения.КодОсновногоЯзыка()); + КонецЕсли; Элемент = Элементы.Добавить(); Элемент.ИмяПредопределенныхДанных = "EmailПользователя"; Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты; - Элемент.Наименование = НСтр("ru = 'Электронная почта'"); Элемент.МожноИзменятьСпособРедактирования = Истина; Элемент.РазрешитьВводНесколькихЗначений = Истина; Элемент.Родитель = Справочники.ВидыКонтактнойИнформации.СправочникПользователи; @@ -183,11 +192,19 @@ Элемент.ВидРедактирования = "ПолеВвода"; Элемент.Используется = Истина; Элемент.РеквизитДопУпорядочивания = 2; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", + "ru = 'Электронная почта'", КодыЯзыков); // @НСтр-1 + Иначе + Элемент.Наименование = НСтр("ru = 'Электронная почта'", ОбщегоНазначения.КодОсновногоЯзыка()); + КонецЕсли; + Элемент = Элементы.Добавить(); Элемент.ИмяПредопределенныхДанных = "ТелефонПользователя"; Элемент.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; - Элемент.Наименование = НСтр("ru = 'Телефон'"); + Элемент.МожноИзменятьСпособРедактирования = Истина; Элемент.РазрешитьВводНесколькихЗначений = Истина; Элемент.Родитель = Справочники.ВидыКонтактнойИнформации.СправочникПользователи; @@ -195,6 +212,15 @@ Элемент.Используется = Истина; Элемент.ВидРедактирования = "ПолеВводаИДиалог"; Элемент.РеквизитДопУпорядочивания = 1; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", + "ru = 'Телефон'", КодыЯзыков); // @НСтр-1 + Иначе + Элемент.Наименование = НСтр("ru = 'Телефон'", ОбщегоНазначения.КодОсновногоЯзыка()); + КонецЕсли; + + УправлениеКонтактнойИнформациейПереопределяемый.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти); КонецПроцедуры @@ -208,6 +234,13 @@ // Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + УправлениеКонтактнойИнформациейПереопределяемый.ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры); + + Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(Объект); + Если Результат.ЕстьОшибки Тогда + ВызватьИсключение Результат.ТекстОшибки; + КонецЕсли; + КонецПроцедуры #КонецОбласти @@ -235,7 +268,7 @@ ИдентификаторПоПравилам = Ложь; ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. - |Идентификатор не должен содержать пробелов и специальных символов.'"); + |Идентификатор не должен содержать пробелов и специальных символов.'"); ОбщегоНазначения.СообщитьПользователю( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, "ИдентификаторДляФормул",, Отказ); @@ -562,7 +595,8 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать вид контактной информации: %1 по причине: %2'"), + НСтр("ru = 'Не удалось обработать вид контактной информации %1 по причине: + |%2'"), ВидКонтактнойИнформацииСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.Справочники.ВидыКонтактнойИнформации, ВидКонтактнойИнформацииСсылка.Ссылка, ТекстСообщения); @@ -573,13 +607,14 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ЗаполнитьВидыКонтактнойИнформации не удалось обработать некоторые виды контактной информации (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые виды контактной информации (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ВидыКонтактнойИнформации,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьВидыКонтактнойИнформации обработала очередную порцию видов контактной информации: %1'"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция видов контактной информации: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl index 19e993fa5..c9c37e965 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl @@ -89,17 +89,19 @@ КонецПроцедуры Функция НаименованиеДляФормированияИдентификатора() - НаименованиеДляИдентификатора = Наименование; - Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда - Отбор = Новый Структура(); - Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); - НайденныеСтроки = Представления.НайтиСтроки(Отбор); - Если НайденныеСтроки.Количество() > 0 Тогда - НаименованиеДляИдентификатора = НайденныеСтроки[0].Наименование; - КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + ЗаголовокДляИдентификатора = ?(ЗначениеЗаполнено(СуффиксТекущегоЯзыка), + ЭтотОбъект["Наименование"+ СуффиксТекущегоЯзыка], + Наименование); + Иначе + ЗаголовокДляИдентификатора = Наименование; КонецЕсли; - Возврат НаименованиеДляИдентификатора; + Возврат ЗаголовокДляИдентификатора; + КонецФункции Процедура ПриЧтенииПредставленийНаСервере() Экспорт diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo index 060f90140..7a349d666 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo @@ -157,45 +157,42 @@ <defaultObjectForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента</defaultObjectForm> <defaultFolderForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаГруппы</defaultFolderForm> <defaultListForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаСписка</defaultListForm> + <defaultChoiceForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаВыбора</defaultChoiceForm> <defaultFolderChoiceForm>Catalog.ВидыКонтактнойИнформации.Form.ФормаВыбораГруппы</defaultFolderChoiceForm> - <attributes uuid="0eea37cc-47f8-4819-85da-d4991f4e58ed"> - <name>ТолькоНациональныйАдрес</name> + <attributes uuid="800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b"> + <name>ВводитьНомерПоМаске</name> <synonym> <key>ru</key> - <value>Только национальный адрес</value> + <value>Вводить номер по маске</value> </synonym> <type> <types>Boolean</types> </type> <toolTip> <key>ru</key> - <value>Допустимы только национальные адреса</value> + <value>Признак, что ввод номера телефона выполняется по маске.</value> </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:BooleanValue"/> + <fillValue xsi:type="core:UndefinedValue"/> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="322645d4-e3fb-467b-a55d-d8e74cff2ea3"> - <name>ВидРедактирования</name> + <attributes uuid="b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a"> + <name>ВключатьСтрануВПредставление</name> <synonym> <key>ru</key> - <value>Вид редактирования</value> + <value>Включать страну в представление</value> </synonym> <type> - <types>String</types> - <stringQualifiers> - <length>20</length> - </stringQualifiers> + <types>Boolean</types> </type> <toolTip> <key>ru</key> - <value>Редактировать контактную информацию в только в поле ввода или только в диалоге (ручной ввод информации невозможен).</value> + <value>В представление будет включена страна адреса.</value> </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> - <fillChecking>ShowError</fillChecking> <fillValue xsi:type="core:UndefinedValue"/> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> @@ -225,21 +222,25 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a"> - <name>ВключатьСтрануВПредставление</name> + <attributes uuid="322645d4-e3fb-467b-a55d-d8e74cff2ea3"> + <name>ВидРедактирования</name> <synonym> <key>ru</key> - <value>Включать страну в представление</value> + <value>Вид редактирования</value> </synonym> <type> - <types>Boolean</types> + <types>String</types> + <stringQualifiers> + <length>20</length> + </stringQualifiers> </type> <toolTip> <key>ru</key> - <value>В представление будет включена страна адреса.</value> + <value>Редактировать контактную информацию в только в поле ввода или только в диалоге (ручной ввод информации невозможен).</value> </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> + <fillChecking>ShowError</fillChecking> <fillValue xsi:type="core:UndefinedValue"/> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> @@ -263,6 +264,61 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="8363bd46-1ea5-44f0-858a-05bc03f6020e"> + <name>ИдентификаторДляФормул</name> + <synonym> + <key>ru</key> + <value>Идентификатор для формул</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>150</length> + </stringQualifiers> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="0f039952-09d3-49c8-b909-e8333a3fc8f9"> + <name>ИмяГруппы</name> + <synonym> + <key>ru</key> + <value>Имя группы</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>150</length> + </stringQualifiers> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="d8fc4644-5351-443c-8b5d-5de2c4b855d1"> + <name>ИмяПредопределенногоВида</name> + <synonym> + <key>ru</key> + <value>Имя предопределенного вида</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>150</length> + </stringQualifiers> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <use>ForFolderAndItem</use> + <dataHistory>Use</dataHistory> + </attributes> <attributes uuid="64ff6058-c6f3-4682-b9a1-11ec438fa447"> <name>Используется</name> <synonym> @@ -285,6 +341,66 @@ <use>ForFolderAndItem</use> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="9cd2fc77-a4b0-457e-a6b0-63dbf521bf90"> + <name>ИсправлятьУстаревшиеАдреса</name> + <synonym> + <key>ru</key> + <value>Исправлять устаревшие адреса</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <toolTip> + <key>ru</key> + <value>Автоматические исправлять устаревшие адреса на новые</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="a321b6db-391b-4c65-8d27-ce486d10055e"> + <name>МаскаНомераТелефона</name> + <synonym> + <key>ru</key> + <value>Маска номера телефона</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>150</length> + </stringQualifiers> + </type> + <toolTip> + <key>ru</key> + <value>Содержит строку маски для интерактивного ввода номера телефона.</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:StringValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="71dfde27-3762-4dd0-9252-6e703ce1b101"> + <name>МеждународныйФорматАдреса</name> + <synonym> + <key>ru</key> + <value>Международный формат адреса</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <toolTip> + <key>ru</key> + <value>Адрес редактируется в международном формате на английском языке.</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <attributes uuid="ced01234-9417-49ce-adf0-8cdd15e6dd7d"> <name>МожноИзменятьСпособРедактирования</name> <synonym> @@ -382,25 +498,6 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="45a2569e-820c-4d7d-ba74-4a781d26bb2b"> - <name>УдалитьРедактированиеТолькоВДиалоге</name> - <synonym> - <key>ru</key> - <value>(не используется) Редактирование только в диалоге</value> - </synonym> - <type> - <types>Boolean</types> - </type> - <toolTip> - <key>ru</key> - <value>Редактировать контактную информацию только в диалоге (ручной ввод информации невозможен)</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:BooleanValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> <attributes uuid="996c7873-1cc9-44f6-915b-5c6ed7ef2370"> <name>РеквизитДопУпорядочивания</name> <synonym> @@ -486,6 +583,44 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="0eea37cc-47f8-4819-85da-d4991f4e58ed"> + <name>ТолькоНациональныйАдрес</name> + <synonym> + <key>ru</key> + <value>Только национальный адрес</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <toolTip> + <key>ru</key> + <value>Допустимы только национальные адреса</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:BooleanValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="45a2569e-820c-4d7d-ba74-4a781d26bb2b"> + <name>УдалитьРедактированиеТолькоВДиалоге</name> + <synonym> + <key>ru</key> + <value>(не используется) Редактирование только в диалоге</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <toolTip> + <key>ru</key> + <value>Редактировать контактную информацию только в диалоге (ручной ввод информации невозможен)</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:BooleanValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <attributes uuid="8a13c899-1659-48cf-9aa2-07ca99547b7b"> <name>УказыватьОКТМО</name> <synonym> @@ -524,140 +659,6 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="71dfde27-3762-4dd0-9252-6e703ce1b101"> - <name>МеждународныйФорматАдреса</name> - <synonym> - <key>ru</key> - <value>Международный формат адреса</value> - </synonym> - <type> - <types>Boolean</types> - </type> - <toolTip> - <key>ru</key> - <value>Адрес редактируется в международном формате на английском языке.</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:UndefinedValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="d8fc4644-5351-443c-8b5d-5de2c4b855d1"> - <name>ИмяПредопределенногоВида</name> - <synonym> - <key>ru</key> - <value>Имя предопределенного вида</value> - </synonym> - <type> - <types>String</types> - <stringQualifiers> - <length>150</length> - </stringQualifiers> - </type> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:StringValue"/> - <fullTextSearch>Use</fullTextSearch> - <use>ForFolderAndItem</use> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="0f039952-09d3-49c8-b909-e8333a3fc8f9"> - <name>ИмяГруппы</name> - <synonym> - <key>ru</key> - <value>Имя группы</value> - </synonym> - <type> - <types>String</types> - <stringQualifiers> - <length>150</length> - </stringQualifiers> - </type> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:StringValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="9cd2fc77-a4b0-457e-a6b0-63dbf521bf90"> - <name>ИсправлятьУстаревшиеАдреса</name> - <synonym> - <key>ru</key> - <value>Исправлять устаревшие адреса</value> - </synonym> - <type> - <types>Boolean</types> - </type> - <toolTip> - <key>ru</key> - <value>Автоматические исправлять устаревшие адреса на новые</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:UndefinedValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="8363bd46-1ea5-44f0-858a-05bc03f6020e"> - <name>ИдентификаторДляФормул</name> - <synonym> - <key>ru</key> - <value>Идентификатор для формул</value> - </synonym> - <type> - <types>String</types> - <stringQualifiers> - <length>150</length> - </stringQualifiers> - </type> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:StringValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="a321b6db-391b-4c65-8d27-ce486d10055e"> - <name>МаскаНомераТелефона</name> - <synonym> - <key>ru</key> - <value>Маска номера телефона</value> - </synonym> - <type> - <types>String</types> - <stringQualifiers> - <length>150</length> - </stringQualifiers> - </type> - <toolTip> - <key>ru</key> - <value>Содержит строку маски для интерактивного ввода номера телефона.</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:StringValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> - <attributes uuid="800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b"> - <name>ВводитьНомерПоМаске</name> - <synonym> - <key>ru</key> - <value>Вводить номер по маске</value> - </synonym> - <type> - <types>Boolean</types> - </type> - <toolTip> - <key>ru</key> - <value>Признак, что ввод номера телефона выполняется по маске.</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:UndefinedValue"/> - <fullTextSearch>Use</fullTextSearch> - <dataHistory>Use</dataHistory> - </attributes> <tabularSections uuid="99387869-f8b1-4269-bd26-e39380d17b69"> <producedTypes> <objectType typeId="9cb91b1a-ae31-403c-8c5d-e0fd01955e6c" valueTypeId="74fba94b-4c84-497d-a403-5c2dd8ebbc57"/> @@ -723,6 +724,47 @@ </attributes> <use>ForFolderAndItem</use> </tabularSections> + <forms uuid="826c2821-147d-4aaf-910c-acfbdb58a29f"> + <name>ИсправлениеВидовКонтактнойИнформации</name> + <synonym> + <key>ru</key> + <value>Исправление видов контактной информации</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> + <forms uuid="aeea0075-bdeb-41b7-b9cc-1da7b500455f"> + <name>ФормаВыбора</name> + <synonym> + <key>ru</key> + <value>Форма выбора</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> + <forms uuid="11c086b0-c646-4701-983d-c38758286354"> + <name>ФормаВыбораГруппы</name> + <synonym> + <key>ru</key> + <value>Форма выбора группы</value> + </synonym> + <help> + <pages> + <lang>ru</lang> + </pages> + </help> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> + <forms uuid="21fad9b6-44df-417c-ba18-de4b8af98a34"> + <name>ФормаГруппы</name> + <synonym> + <key>ru</key> + <value>Форма группы</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> <forms uuid="f5ef3f75-7d12-4284-844f-54d19d1f7e2f"> <name>ФормаСписка</name> <synonym> @@ -746,36 +788,4 @@ <usePurposes>PersonalComputer</usePurposes> <usePurposes>MobileDevice</usePurposes> </forms> - <forms uuid="21fad9b6-44df-417c-ba18-de4b8af98a34"> - <name>ФормаГруппы</name> - <synonym> - <key>ru</key> - <value>Форма группы</value> - </synonym> - <usePurposes>PersonalComputer</usePurposes> - <usePurposes>MobileDevice</usePurposes> - </forms> - <forms uuid="11c086b0-c646-4701-983d-c38758286354"> - <name>ФормаВыбораГруппы</name> - <synonym> - <key>ru</key> - <value>Форма выбора группы</value> - </synonym> - <help> - <pages> - <lang>ru</lang> - </pages> - </help> - <usePurposes>PersonalComputer</usePurposes> - <usePurposes>MobileDevice</usePurposes> - </forms> - <forms uuid="826c2821-147d-4aaf-910c-acfbdb58a29f"> - <name>ИсправлениеВидовКонтактнойИнформации</name> - <synonym> - <key>ru</key> - <value>Исправление видов контактной информации</value> - </synonym> - <usePurposes>PersonalComputer</usePurposes> - <usePurposes>MobileDevice</usePurposes> - </forms> </mdclass:Catalog> diff --git a/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo b/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo index 10a4accaf..f8ffc42e4 100644 --- a/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo +++ b/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo @@ -162,7 +162,7 @@ <scale>2</scale> </numberQualifiers> <stringQualifiers> - <length>64</length> + <length>128</length> </stringQualifiers> <dateQualifiers/> </type> @@ -194,7 +194,7 @@ <scale>2</scale> </numberQualifiers> <stringQualifiers> - <length>64</length> + <length>128</length> </stringQualifiers> <dateQualifiers/> </type> @@ -226,7 +226,7 @@ <scale>2</scale> </numberQualifiers> <stringQualifiers> - <length>64</length> + <length>128</length> </stringQualifiers> <dateQualifiers/> </type> @@ -257,7 +257,7 @@ <scale>2</scale> </numberQualifiers> <stringQualifiers> - <length>64</length> + <length>128</length> </stringQualifiers> <dateQualifiers/> </type> @@ -288,7 +288,7 @@ <scale>2</scale> </numberQualifiers> <stringQualifiers> - <length>64</length> + <length>128</length> </stringQualifiers> <dateQualifiers/> </type> diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl index 96d30de6a..8ed86daa2 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl @@ -11,7 +11,9 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ТипЗнч(Параметры.ОбновляемыеКомпоненты) <> Тип("Массив") Или Параметры.ОбновляемыеКомпоненты.Количество() = 0 Тогда - ВызватьИсключение НСтр("ru = 'Некорректное значение параметра формы ОбновляемыеКомпоненты.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректное значение параметра %1 формы %2.'"), + "ОбновляемыеКомпоненты", "ОбновлениеКомпонентСПортала1СИТС"); КонецЕсли; ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены(); diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Form.form index 9d4a440d7..f25b19d6d 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Form.form @@ -34,7 +34,7 @@ <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> <picture xsi:type="core:PictureRef"> - <picture>CommonPicture.Информация</picture> + <picture>StdPicture.Information</picture> </picture> </extInfo> </items> diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl index 191215576..31036dec2 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl @@ -120,7 +120,7 @@ КонецПроцедуры -// Обработчик обновления на версию 3.1.5.282: +// Обработчик обновления на версию 3.1.6.48: // - заполняет реквизиты совместимости для браузеров MacOS в справочнике "Внешние компоненты". // Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl index a4ff74a67..5d30f4269 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl @@ -852,8 +852,18 @@ Процедура ИзменитьПараметрыРасширеннойФормыПодбора() // Загрузка списка выбранных пользователей. - ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора); - ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); + Если ЗначениеЗаполнено(Параметры.ПараметрыРасширеннойФормыПодбора) Тогда + ПараметрыРасширеннойФормыПодбора = ПолучитьИзВременногоХранилища(Параметры.ПараметрыРасширеннойФормыПодбора); + Иначе + ПараметрыРасширеннойФормыПодбора = Параметры; + КонецЕсли; + Если ТипЗнч(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи) = Тип("ТаблицаЗначений") Тогда + ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); + Иначе + Для Каждого ВыбранныйПользователь Из ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи Цикл + ВыбранныеПользователиИГруппы.Добавить().Пользователь = ВыбранныйПользователь; + КонецЦикла; + КонецЕсли; ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора); Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); // Установка параметров расширенной формы подбора. diff --git a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl index e59ebdf05..31d310c16 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl @@ -154,15 +154,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых внешних пользователей (пропущены): %1 - |%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС)); + НСтр("ru = 'Не удалось обработать некоторых внешних пользователей (пропущены): %1 + |%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС)); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ВнешниеПользователи,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию внешних пользователей: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Обработана очередная порция внешних пользователей: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl b/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl index 9a8489e11..92d6a713e 100644 --- a/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl @@ -83,7 +83,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать вопрос шаблона анкеты: %1 по причине: + НСтр("ru = 'Не удалось обработать вопрос шаблона анкеты %1 по причине: |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -95,13 +95,13 @@ Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ВопросыШаблонаАнкеты"); Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ЗаполнитьРеквизитСпособОтображенияПодсказки не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ВопросыШаблонаАнкеты,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитСпособОтображенияПодсказки обработала очередную порцию вопросов шаблона анкеты: %1'"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Обработана очередная порция вопросов шаблона анкеты: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form index 5afc7537a..3940f236b 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form @@ -1741,6 +1741,10 @@ <event>OnOpen</event> <name>ПриОткрытии</name> </handlers> + <handlers> + <event>OnReopen</event> + <name>ПриПовторномОткрытии</name> + </handlers> <handlers> <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> @@ -2146,6 +2150,32 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ПерейтиКВидуДоступа</name> + <id>11</id> + <valueType> + <types>AnyRef</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> + <attributes> + <name>ПерейтиКЗначениюДоступа</name> + <id>12</id> + <valueType> + <types>AnyRef</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> <formCommands> <name>Подобрать</name> <title> diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl index 8371b921a..9d51d3a4c 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl @@ -63,6 +63,9 @@ Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр И ПравоДоступа("Редактирование", Метаданные.Справочники.ГруппыДоступа); + Параметры.Свойство("ПерейтиКВидуДоступа", ПерейтиКВидуДоступа); + Параметры.Свойство("ПерейтиКЗначениюДоступа", ПерейтиКЗначениюДоступа); + КонецПроцедуры &НаКлиенте @@ -122,6 +125,17 @@ КонецЕсли; КонецЕсли; + Если ЗначениеЗаполнено(ПерейтиКЗначениюДоступа) Тогда + ПодключитьОбработчикОжидания("ПерейтиКЗначениюДоступа", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриПовторномОткрытии() + + ПодключитьОбработчикОжидания("ПерейтиКЗначениюДоступа", 0.1, Истина); + КонецПроцедуры &НаСервере @@ -1550,4 +1564,29 @@ КонецПроцедуры +&НаКлиенте +Процедура ПерейтиКЗначениюДоступа() + + Если ЗначениеЗаполнено(ПерейтиКЗначениюДоступа) Тогда + Элементы.ПользователиИДоступ.ТекущаяСтраница = Элементы.Доступ; + ТекущийЭлемент = Элементы.Доступ; + Отбор = Новый Структура("ВидДоступа", ПерейтиКВидуДоступа); + НайденныеСтроки = Объект.ВидыДоступа.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() = 1 Тогда + ТекущийЭлемент = Элементы.ВидыДоступаВидДоступаПредставление; + Элементы.ВидыДоступа.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + Отбор.Вставить("ЗначениеДоступа", ПерейтиКЗначениюДоступа); + НайденныеСтроки = Объект.ЗначенияДоступа.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() = 1 Тогда + ТекущийЭлемент = Элементы.ЗначенияДоступаЗначениеДоступа; + Элементы.ЗначенияДоступа.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ПерейтиКВидуДоступа = Неопределено; + ПерейтиКЗначениюДоступа = Неопределено; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl index 09d8635c0..31fe9c919 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl @@ -1219,19 +1219,16 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось - |обновить вспомогательные данные некоторых групп доступа (пропущены): %1'"), + НСтр("ru = 'Не удалось обновить вспомогательные данные некоторых групп доступа (пропущены): %1'"), ПроблемныхОбъектов); - ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - Метаданные.НайтиПоПолномуИмени("Справочник.ГруппыДоступа"),, + Метаданные.Справочники.ГруппыДоступа,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура Справочники.ГруппыДоступа.ОбработатьДанныеДляПереходаНаНовуюВерсию - |обработала очередную порцию групп доступа: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Обработана очередная порция групп доступа: %1'"), + ОбъектовОбработано)); КонецЕсли; Параметры.ОбработкаЗавершена = ОбработкаЗавершена; diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Form.form index ff4576778..794399ede 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Form.form @@ -706,24 +706,17 @@ <main>true</main> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ - Значения.Ссылка, - Значения.ВерсияДанных, - Значения.ПометкаУдаления, - Значения.Предопределенный, - Значения.Владелец, - Значения.Родитель, - Значения.ЭтоГруппа, - ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА Значения.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) - КОНЕЦ КАК Наименование, - Значения.Вес + ЗначенияПереопределяемый.Ссылка, + ЗначенияПереопределяемый.ВерсияДанных, + ЗначенияПереопределяемый.ПометкаУдаления, + ЗначенияПереопределяемый.Предопределенный, + ЗначенияПереопределяемый.Владелец, + ЗначенияПереопределяемый.Родитель, + ЗначенияПереопределяемый.ЭтоГруппа, + ЗначенияПереопределяемый.Наименование КАК Наименование, + ЗначенияПереопределяемый.Вес ИЗ - Справочник.ЗначенияСвойствОбъектов КАК Значения - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления - ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) - И ЗначенияПредставления.КодЯзыка = &КодЯзыка</queryText> + Справочник.ЗначенияСвойствОбъектов КАК ЗначенияПереопределяемый</queryText> <mainTable>Catalog.ЗначенияСвойствОбъектов</mainTable> <dynamicDataRead>true</dynamicDataRead> <autoFillAvailableFields>true</autoFillAvailableFields> diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl index 287bccb2e..8da2cb451 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl @@ -49,10 +49,33 @@ ПриИзмененииСвойства(); - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "ЗначенияПереопределяемый.Наименование КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) КАК Наименование"); + + СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + " + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления + | ПО (ЗначенияПредставления.Ссылка = ЗначенияПереопределяемый.Ссылка) + | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; + + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + Иначе + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -157,15 +180,8 @@ СтрокаЗаголовка = ""; Если ЗначениеЗаполнено(Свойство) Тогда - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда - СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( - Свойство, "ЗаголовокФормыВыбораЗначения"); - Иначе - Реквизиты = Новый Массив; - Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения"); - ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты); - СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения; - КонецЕсли; + СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ЗаголовокФормыВыбораЗначения",, ТекущийЯзык().КодЯзыка); КонецЕсли; Если ПустаяСтрока(СтрокаЗаголовка) Тогда diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаЭлемента/Module.bsl index 0399e1966..41e1f49ee 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаЭлемента/Module.bsl @@ -136,15 +136,8 @@ &НаСервере Процедура УстановитьЗаголовок() - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда - ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( - Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения"); - Иначе - Реквизиты = Новый Массив; - Реквизиты.Добавить("Заголовок"); - Реквизиты.Добавить("ЗаголовокФормыЗначения"); - ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты); - КонецЕсли; + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения",, ТекущийЯзык().КодЯзыка); ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения); diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Form.form index b6ea4d1bf..dbf2ec8cc 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Form.form @@ -672,23 +672,16 @@ <main>true</main> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ - Значения.Ссылка, - Значения.ВерсияДанных, - Значения.ПометкаУдаления, - Значения.Предопределенный, - Значения.Владелец, - Значения.Родитель, - ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА Значения.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) - КОНЕЦ КАК Наименование, - Значения.Вес + ЗначенияПереопределяемый.Ссылка, + ЗначенияПереопределяемый.ВерсияДанных, + ЗначенияПереопределяемый.ПометкаУдаления, + ЗначенияПереопределяемый.Предопределенный, + ЗначенияПереопределяемый.Владелец, + ЗначенияПереопределяемый.Родитель, + ЗначенияПереопределяемый.Наименование КАК Наименование, + ЗначенияПереопределяемый.Вес ИЗ - Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления - ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) - И ЗначенияПредставления.КодЯзыка = &КодЯзыка</queryText> + Справочник.ЗначенияСвойствОбъектовИерархия КАК ЗначенияПереопределяемый</queryText> <mainTable>Catalog.ЗначенияСвойствОбъектовИерархия</mainTable> <dynamicDataRead>true</dynamicDataRead> <autoFillAvailableFields>true</autoFillAvailableFields> diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl index 278b6adb6..b89790592 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl @@ -32,10 +32,32 @@ ПриИзмененииСвойства(); - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - Список, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + + СвойстваСписка.ТекстЗапроса = Список.ТекстЗапроса + " + |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления + | ПО (ЗначенияПредставления.Ссылка = ЗначенияПереопределяемый.Ссылка) + | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "ЗначенияПереопределяемый.Наименование КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) КАК Наименование"); + + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Список, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + КонецЕсли; + КонецПроцедуры @@ -111,15 +133,8 @@ СтрокаЗаголовка = ""; Если ЗначениеЗаполнено(Свойство) Тогда - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда - СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( - Свойство, "ЗаголовокФормыВыбораЗначения"); - Иначе - Реквизиты = Новый Массив; - Реквизиты.Добавить("ЗаголовокФормыВыбораЗначения"); - ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Свойство, Реквизиты); - СтрокаЗаголовка = ЗначенияРеквизитов.ЗаголовокФормыВыбораЗначения; - КонецЕсли; + СтрокаЗаголовка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + Свойство, "ЗаголовокФормыВыбораЗначения",, ТекущийЯзык().КодЯзыка); КонецЕсли; Если ПустаяСтрока(СтрокаЗаголовка) Тогда diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаЭлемента/Module.bsl index 501c92c9c..79b505db3 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаЭлемента/Module.bsl @@ -136,16 +136,9 @@ &НаСервере Процедура УстановитьЗаголовок() - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда - ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( - Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения"); - Иначе - Реквизиты = Новый Массив; - Реквизиты.Добавить("Заголовок"); - Реквизиты.Добавить("ЗаголовокФормыЗначения"); - ЗначенияРеквизитов = УправлениеСвойствамиСлужебный.ЛокализованныеЗначенияРеквизитов(Объект.Владелец, Реквизиты); - КонецЕсли; - + ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( + Объект.Владелец, "Заголовок, ЗаголовокФормыЗначения",, ТекущийЯзык().КодЯзыка); + ИмяСвойства = СокрЛП(ЗначенияРеквизитов.ЗаголовокФормыЗначения); Если НЕ ПустаяСтрока(ИмяСвойства) Тогда diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl index 28449e799..2b8886a88 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl @@ -421,6 +421,17 @@ КонецФункции +// Возвращаемое значение: +// Массив из Строка - имена коллекций объектов метаданных, которые поддерживаются в справочнике. +// +Функция ДопустимыеКоллекции() Экспорт + + СвойстваКоллекций = СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(); + + Возврат СвойстваКоллекций.ВыгрузитьКолонку("Имя"); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -3549,7 +3560,10 @@ ОбъектМетаданных = Метаданные[ИмяКоллекции].Найти(ИмяОбъекта); Если ОбъектМетаданных = Неопределено Тогда - Возврат ПолноеИмя; + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + Если ОбъектМетаданных = Неопределено Тогда + Возврат ПолноеИмя; + КонецЕсли; КонецЕсли; Возврат ПредставлениеОбъектаМетаданных(ОбъектМетаданных, Строки[0]); diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form index 7260a5fa2..832c349e6 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form @@ -492,9 +492,6 @@ <edit> <common>true</common> </edit> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>Список.Ref</segments> - </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Список.ВозможнаяПричина</segments> </notDefaultUseAlwaysAttributes> diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form index b0c71f375..0efd6cae9 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form @@ -938,7 +938,7 @@ <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> <picture xsi:type="core:PictureRef"> - <picture>CommonPicture.Информация</picture> + <picture>StdPicture.Information</picture> </picture> <fileDragMode>AsFileRef</fileDragMode> </extInfo> diff --git a/SSL/src/Catalogs/КлючевыеОперации/ObjectModule.bsl b/SSL/src/Catalogs/КлючевыеОперации/ObjectModule.bsl index 322d56680..4ec8b7f39 100644 --- a/SSL/src/Catalogs/КлючевыеОперации/ObjectModule.bsl +++ b/SSL/src/Catalogs/КлючевыеОперации/ObjectModule.bsl @@ -55,11 +55,8 @@ ТекстСообщения = НСтр("ru = 'Ключевая операция с приоритетом ""%1"" уже существует (%2).'"); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Строка(Приоритет)); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%2", Выборка.Наименование); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Справочник.КлючевыеОперации.МодульОбъекта.ПередЗаписью'", ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - НСтр("ru = 'Оценка производительности'"), - ТекстСообщения); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Оценка производительности'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,, Выборка.Ссылка, ТекстСообщения); ОценкаПроизводительностиСлужебный.СообщитьПользователю(ТекстСообщения); Отказ = Истина; КонецЕсли; diff --git a/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Form.form b/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Form.form new file mode 100644 index 000000000..2007265bd --- /dev/null +++ b/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Form.form @@ -0,0 +1,589 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <title> + <key>ru</key> + <value>Условия видимости в подменю "Печать"</value> + + + УсловияВидимости + 1 + + <key>ru</key> + <value>Условия видимости</value> + + true + true + + true + + + УсловияВидимости + + None + + УсловияВидимостиПоле + 29 + true + true + + true + + + УсловияВидимости.ПредставлениеПоля + + + УсловияВидимостиПолеРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + + УсловияВидимостиПолеКонтекстноеМеню + 30 + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + УсловияВидимостиПолеОбработкаВыбора + + true + true + true + true + true + true + true + Normal + + + + УсловияВидимостиВидСравнения + 32 + true + true + + true + + + УсловияВидимости.ПредставлениеВидаСравнения + + + OnChange + УсловияВидимостиВидСравненияПриИзменении + + + УсловияВидимостиВидСравненияРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + УсловияВидимостиВидСравненияКонтекстноеМеню + 33 + true + + InputField + Enter + true + Left + true + + + StartChoice + УсловияВидимостиВидСравненияНачалоВыбора + + + ChoiceProcessing + УсловияВидимостиВидСравненияОбработкаВыбора + + true + true + true + true + true + true + true + Normal + + + + УсловияВидимостиЗначение + 35 + true + true + + true + + + УсловияВидимости.Значение + + + УсловияВидимостиЗначениеРасширеннаяПодсказка + 37 + Label + true + true + + Left + + + + УсловияВидимостиЗначениеКонтекстноеМеню + 36 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + УсловияВидимостиКоманднаяПанель + 3 + Left + true + + + OnActivateRow + УсловияВидимостиПриАктивизацииСтроки + + + УсловияВидимостиСтрокаПоиска + 5 + + УсловияВидимостиСтрокаПоискаРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + + УсловияВидимостиСтрокаПоискаКонтекстноеМеню + 6 + true + + УсловияВидимости + + true + + + + УсловияВидимостиСостояниеПросмотра + 8 + + УсловияВидимостиСостояниеПросмотраРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + + УсловияВидимостиСостояниеПросмотраКонтекстноеМеню + 9 + true + + ViewStatusAddition + УсловияВидимости + + true + + + + УсловияВидимостиУправлениеПоиском + 11 + + УсловияВидимостиУправлениеПоискомРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + + УсловияВидимостиУправлениеПоискомКонтекстноеМеню + 12 + true + + SearchControlAddition + УсловияВидимости + + true + + + + УсловияВидимостиРасширеннаяПодсказка + 4 + Label + true + true + + Left + + + + УсловияВидимостиКонтекстноеМеню + 2 + true + + true + true + true + true + true + MultiRow +
true
+ 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + AsFileRef + true + +
+ Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 49 + + <key>ru</key> + <value>ОК</value> + + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 47 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Normal + Auto + true + true + UserCmds + Auto + + + ФормаСправка + 51 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + ChangeHistory + Close + Copy + CustomizeForm + Delete + Ignore + No + OK + Reread + RestoreValues + Retry + SaveValues + SetDeletionMark + ShowInList + Write + Yes + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Объект + 1 + + CatalogObject.МакетыПечатныхФорм + + + true + + + true + +
true
+ true +
+ + УсловияВидимости + + <key>ru</key> + <value>Условия видимости</value> + + 2 + + ValueTable + + + true + + + true + + + ПредставлениеПоля + + <key>ru</key> + <value>Поле</value> + + 3 + + String + + + + true + + + true + + + + ПредставлениеВидаСравнения + + <key>ru</key> + <value>Вид сравнения</value> + + 4 + + String + + + + true + + + true + + + + Значение + + <key>ru</key> + <value>Значение</value> + + 5 + + + true + + + true + + + + Поле + 7 + + String + + + + true + + + true + + + + ВидСравнения + 8 + + String + + + + true + + + true + + + + + РеквизитыОбъекта + 11 + + ValueTable + + + true + + + true + + + Поле + 13 + + String + + + + true + + + true + + + + Тип + 14 + + TypeDescription + + + true + + + true + + + + ПредставлениеПоля + 15 + + String + + + + true + + + true + + + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + diff --git a/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Module.bsl b/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Module.bsl new file mode 100644 index 000000000..bb1964bba --- /dev/null +++ b/SSL/src/Catalogs/МакетыПечатныхФорм/Forms/УсловияВидимостиВПодменюПечать/Module.bsl @@ -0,0 +1,276 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + ЗаполнитьСписокВыбораПоля(); + СписокУсловий = ТекущийОбъект.УсловиеВидимости.Получить(); + + Если ТипЗнч(СписокУсловий) <> Тип("Массив") Тогда + Возврат; + КонецЕсли; + + ИдентификаторыВидовСравнения = ИдентификаторыВидовСравнения(); + ПредставленияВидовСравнения = ПредставленияВидовСравнения(); + + Для Каждого Условие Из СписокУсловий Цикл + ОписаниеПоля = ОписаниеПоля(Условие.Реквизит); + Если ОписаниеПоля = Неопределено Тогда + Продолжить; + КонецЕсли; + + ОписаниеУсловия = УсловияВидимости.Добавить(); + ЗаполнитьЗначенияСвойств(ОписаниеУсловия, ОписаниеПоля); + ОписаниеУсловия.ВидСравнения = ИдентификаторыВидовСравнения[Условие.ВидСравнения]; + ОписаниеУсловия.ПредставлениеВидаСравнения = ПредставленияВидовСравнения[ОписаниеУсловия.ВидСравнения]; + ОписаниеУсловия.Значение = Условие.Значение; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + ОбновитьПовторноИспользуемыеЗначения(); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + СписокУсловий = Новый Массив; + Для Каждого Условие Из УсловияВидимости Цикл + ОписаниеУсловия = Новый Структура(); + ОписаниеУсловия.Вставить("Реквизит", Условие.Поле); + ОписаниеУсловия.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных[Условие.ВидСравнения]); + ОписаниеУсловия.Вставить("Значение", Условие.Значение); + + СписокУсловий.Добавить(ОписаниеУсловия); + КонецЦикла; + + ТекущийОбъект.УсловиеВидимости = Новый ХранилищеЗначения(СписокУсловий, Новый СжатиеДанных(9)); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыУсловияВидимости + +&НаКлиенте +Процедура УсловияВидимостиПриАктивизацииСтроки(Элемент) + + УстановитьОграничениеТипа(); + +КонецПроцедуры + +&НаКлиенте +Процедура УсловияВидимостиПолеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные; + ТекущиеДанные.Поле = ВыбранноеЗначение; + Значение = Элементы.УсловияВидимостиПоле.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение); + ВыбранноеЗначение = Значение.Представление; + + Если ТекущиеДанные.ВидСравнения = "Заполнено" Или ТекущиеДанные.ВидСравнения = "НеЗаполнено" Тогда + ТекущиеДанные.Значение = Неопределено; + КонецЕсли; + + УстановитьОграничениеТипа(); + +КонецПроцедуры + +&НаКлиенте +Процедура УсловияВидимостиВидСравненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ДанныеВыбора = Новый СписокЗначений(); + ДанныеВыбора.Добавить("Равно"); + ДанныеВыбора.Добавить("НеРавно"); + ДанныеВыбора.Добавить("Заполнено"); + ДанныеВыбора.Добавить("НеЗаполнено"); + ДанныеВыбора.Добавить("ВСписке"); + ДанныеВыбора.Добавить("НеВСписке"); + + ПредставленияВидовСравнения = ПредставленияВидовСравнения(); + Для Каждого ОписаниеВидаСравнения Из ДанныеВыбора Цикл + ОписаниеВидаСравнения.Представление = ПредставленияВидовСравнения[ОписаниеВидаСравнения.Значение]; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура УсловияВидимостиВидСравненияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные; + ТекущиеДанные.ВидСравнения = ВыбранноеЗначение; + ВыбранноеЗначение = ПредставленияВидовСравнения()[ВыбранноеЗначение]; + УстановитьОграничениеТипа(); + +КонецПроцедуры + + +&НаКлиенте +Процедура УсловияВидимостиВидСравненияПриИзменении(Элемент) + + УстановитьОграничениеТипа(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ЗаполнитьСписокВыбораПоля() + + Если Не ЗначениеЗаполнено(Объект.ИсточникДанных) Тогда + Возврат; + КонецЕсли; + + ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Объект.ИсточникДанных, Ложь); + Если ОбъектМетаданных = Неопределено Тогда + Возврат; + КонецЕсли; + + КоллекцииРеквизитов = Новый Массив; + КоллекцииРеквизитов.Добавить(ОбъектМетаданных.СтандартныеРеквизиты); + КоллекцииРеквизитов.Добавить(ОбъектМетаданных.Реквизиты); + + Для Каждого КоллекцияРеквизитов Из КоллекцииРеквизитов Цикл + Для Каждого Реквизит Из КоллекцияРеквизитов Цикл + ОписаниеРеквизита = РеквизитыОбъекта.Добавить(); + ОписаниеРеквизита.Поле = Реквизит.Имя; + ОписаниеРеквизита.Тип = Реквизит.Тип; + ОписаниеРеквизита.ПредставлениеПоля = Реквизит.Представление(); + + Элементы.УсловияВидимостиПоле.СписокВыбора.Добавить(ОписаниеРеквизита.Поле, ОписаниеРеквизита.ПредставлениеПоля); + КонецЦикла; + КонецЦикла; + + Элементы.УсловияВидимостиПоле.СписокВыбора.СортироватьПоПредставлению(); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставленияВидовСравнения() + + Результат = Новый Соответствие(); + Результат.Вставить("Равно", НСтр("ru = 'Равно'")); + Результат.Вставить("НеРавно", НСтр("ru = 'Не равно'")); + Результат.Вставить("Заполнено", НСтр("ru = 'Заполнено'")); + Результат.Вставить("НеЗаполнено", НСтр("ru = 'Не заполнено'")); + Результат.Вставить("ВСписке", НСтр("ru = 'В списке'")); + Результат.Вставить("НеВСписке", НСтр("ru = 'Не в списке'")); + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция ИдентификаторыВидовСравнения() + + Результат = Новый Соответствие(); + Результат.Вставить(ВидСравненияКомпоновкиДанных.Равно, "Равно"); + Результат.Вставить(ВидСравненияКомпоновкиДанных.НеРавно, "НеРавно"); + Результат.Вставить(ВидСравненияКомпоновкиДанных.Заполнено, "Заполнено"); + Результат.Вставить(ВидСравненияКомпоновкиДанных.НеЗаполнено, "НеЗаполнено"); + Результат.Вставить(ВидСравненияКомпоновкиДанных.ВСписке, "ВСписке"); + Результат.Вставить(ВидСравненияКомпоновкиДанных.НеВСписке, "НеВСписке"); + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура УстановитьОграничениеТипа() + + ТекущиеДанные = Элементы.УсловияВидимости.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Или Не ЗначениеЗаполнено(ТекущиеДанные.Поле) Тогда + Возврат; + КонецЕсли; + + ОграничениеТипа = ТипЗначенияПоля(ТекущиеДанные.Поле); + Если ТекущиеДанные.ВидСравнения = "Заполнено" Или ТекущиеДанные.ВидСравнения = "НеЗаполнено" Тогда + ОграничениеТипа = Новый ОписаниеТипов(); + ТекущиеДанные.Значение = Неопределено; + ИначеЕсли ТекущиеДанные.ВидСравнения = "ВСписке" Или ТекущиеДанные.ВидСравнения = "НеВСписке" Тогда + ОграничениеТипа = Новый ОписаниеТипов("СписокЗначений"); + КонецЕсли; + + Элементы.УсловияВидимостиЗначение.ОграничениеТипа = ОграничениеТипа; + ТекущиеДанные.Значение = ОграничениеТипа.ПривестиЗначение(ТекущиеДанные.Значение); + +КонецПроцедуры + +&НаКлиенте +Функция ТипЗначенияПоля(Поле) + + Тип = Неопределено; + Если ЗначениеЗаполнено(Поле) Тогда + НайденныеСтроки = РеквизитыОбъекта.НайтиСтроки(Новый Структура("Поле", Поле)); + Если НайденныеСтроки.Количество() > 0 Тогда + Тип = НайденныеСтроки[0].Тип; + КонецЕсли; + КонецЕсли; + + Возврат Тип; + +КонецФункции + +&НаСервере +Функция ОписаниеПоля(Поле) + + Если Не ЗначениеЗаполнено(Поле) Тогда + Возврат Неопределено; + КонецЕсли; + + НайденныеСтроки = РеквизитыОбъекта.НайтиСтроки(Новый Структура("Поле", Поле)); + Если НайденныеСтроки.Количество() > 0 Тогда + Возврат НайденныеСтроки[0]; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // ТолькоПросмотр для видов сравнения Заполнено и НеЗаполнено + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.УсловияВидимостиЗначение.Имя); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("УсловияВидимости.ВидСравнения"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + СписокВидовСравнения = Новый СписокЗначений(); + СписокВидовСравнения.Добавить("Заполнено"); + СписокВидовСравнения.Добавить("НеЗаполнено"); + ЭлементОтбора.ПравоеЗначение = СписокВидовСравнения; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/Catalogs/МакетыПечатныхФорм/ManagerModule.bsl b/SSL/src/Catalogs/МакетыПечатныхФорм/ManagerModule.bsl new file mode 100644 index 000000000..ffecb48d0 --- /dev/null +++ b/SSL/src/Catalogs/МакетыПечатныхФорм/ManagerModule.bsl @@ -0,0 +1,296 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +// Параметры: +// Макет - УникальныйИдентификатор +// +// Возвращаемое значение: +// Массив из Строка +// +Функция ЯзыкиМакета(Макет) Экспорт + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФорм.Макет КАК Макет, + | &КодОсновногоЯзыка КАК КодЯзыка + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | МакетыПечатныхФормПредставления.Макет, + | МакетыПечатныхФормПредставления.КодЯзыка + |ИЗ + | Справочник.МакетыПечатныхФорм.Представления КАК МакетыПечатныхФормПредставления + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + | ПО МакетыПечатныхФормПредставления.Ссылка = МакетыПечатныхФорм.Ссылка + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Идентификатор", Макет); + Запрос.УстановитьПараметр("КодОсновногоЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + + Результат = Новый Массив; + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Если Выборка.Макет.Получить() <> Неопределено Тогда + Результат.Добавить(Выборка.КодЯзыка); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЗаписатьМакет(ОписаниеМакета) Экспорт + + Ссылка = ОписаниеМакета.Ссылка; + Если ЗначениеЗаполнено(Ссылка) Тогда + Объект = Ссылка.ПолучитьОбъект(); + Иначе + Объект = Справочники.МакетыПечатныхФорм.СоздатьЭлемент(); + Объект.ИсточникДанных = ОписаниеМакета.Владелец; + Объект.ТипМакета = ОписаниеМакета.ТипМакета; + Объект.Идентификатор = Новый УникальныйИдентификатор; + КонецЕсли; + + Наименование = ОписаниеМакета.Наименование; + КодЯзыка = ОписаниеМакета.КодЯзыка; + Макет = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ОписаниеМакета.АдресМакетаВоВременномХранилище)); + + ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Наименование", Наименование, КодЯзыка); + ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Макет", Макет, КодЯзыка); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм"); + Если ЗначениеЗаполнено(Ссылка) Тогда + ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Объект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Возврат "ПФ_" + Строка(Объект.Идентификатор); + +КонецФункции + +// Параметры: +// Макет - СправочникСсылка.МакетыПечатныхФорм +// Используется - Булево +// +Процедура УстановитьИспользованиеМакета(Макет, Используется) Экспорт + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Макет); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + Объект = Макет.ПолучитьОбъект(); + Объект.Используется = Используется; + Объект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Функция МакетСуществует(Идентификатор) Экспорт + + ТекстЗапроса = + "ВЫБРАТЬ + | Ссылка + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + +Функция НайтиМакет(ПутьКМакету, КодЯзыка) Экспорт + + Идентификатор = ИдентификаторМакета(ПутьКМакету); + Если Идентификатор <> Неопределено Тогда + Возврат МакетПечатнойФормыПоИдентификатору(Идентификатор, КодЯзыка); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +Функция МакетПечатнойФормыПоИдентификатору(Идентификатор, КодЯзыка) + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФормПредставления.Макет + |ИЗ + | Справочник.МакетыПечатныхФорм.Представления КАК МакетыПечатныхФормПредставления + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + | ПО МакетыПечатныхФормПредставления.Ссылка = МакетыПечатныхФорм.Ссылка + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор + | И МакетыПечатныхФормПредставления.КодЯзыка = &КодЯзыка + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | МакетыПечатныхФорм.Макет + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка); + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Макет = Выборка.Макет.Получить(); // ХранилищеЗначения + Если Макет = Неопределено Тогда + Продолжить; + КонецЕсли; + Макет.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + Возврат Макет; + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +Функция ВладелецМакета(ПутьКМакету) Экспорт + + Идентификатор = ИдентификаторМакета(ПутьКМакету); + Если Идентификатор = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФорм.ИсточникДанных КАК ИсточникДанных + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Выборка.ИсточникДанных; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +Функция ИдентификаторМакета(ПутьКМакету) + + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + + ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()]; + Если СтрНачинаетсяС(ИмяМакета, "ПФ_") Тогда + Идентификатор = Сред(ИмяМакета, 4); + Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Идентификатор) Тогда + Возврат Новый УникальныйИдентификатор(Идентификатор); + КонецЕсли; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Возвращаемое значение: +// СправочникСсылка.МакетыПечатныхФорм +// +Функция СсылкаМакета(ПутьКМакету) Экспорт + + Идентификатор = ИдентификаторМакета(ПутьКМакету); + Если Идентификатор = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФорм.Ссылка КАК Ссылка + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.Идентификатор = &Идентификатор"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Выборка.Ссылка; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +Процедура УдалитьМакет(Ссылка, КодЯзыка = Неопределено) Экспорт + + Объект = Ссылка.ПолучитьОбъект(); + Если КодЯзыка = Неопределено Или КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Объект.УстановитьПометкуУдаления(Истина); + Иначе + ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, "Макет", Новый ХранилищеЗначения(Неопределено), КодЯзыка); + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.МакетыПечатныхФорм"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Объект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Constants/НастройкиПодчиненногоУзлаРИБ/ValueManagerModule.bsl b/SSL/src/Catalogs/МакетыПечатныхФорм/ObjectModule.bsl similarity index 100% rename from SSL/src/Constants/НастройкиПодчиненногоУзлаРИБ/ValueManagerModule.bsl rename to SSL/src/Catalogs/МакетыПечатныхФорм/ObjectModule.bsl diff --git a/SSL/src/Catalogs/МакетыПечатныхФорм/МакетыПечатныхФорм.mdo b/SSL/src/Catalogs/МакетыПечатныхФорм/МакетыПечатныхФорм.mdo new file mode 100644 index 000000000..30c82a7c4 --- /dev/null +++ b/SSL/src/Catalogs/МакетыПечатныхФорм/МакетыПечатныхФорм.mdo @@ -0,0 +1,301 @@ + + + + + + + + + + МакетыПечатныхФорм + + ru + Макеты печатных форм + + true + Catalog.МакетыПечатныхФорм.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 + + ru + Основной вариант макета + + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Макет печатной формы + + true + HierarchyOfItems + true + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + + ИсточникДанных + + ru + Источник данных + + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + + + Index + Use + Use + + + Используется + + ru + Используется + + + Boolean + + + + + Index + Use + Use + + + Идентификатор + + ru + Идентификатор + + + UUID + + + + + Use + Use + + + Макет + + ru + Макет + + + ValueStorage + + + + + Use + Use + + + УсловиеВидимости + + ru + Условие видимости + + + ValueStorage + + true + + + + Use + Use + + + ТипМакета + + ru + Тип макета + + + String + + 4 + + + + + + Use + Use + + + + + + + Представления + + ru + Представления + + + Use + LineNumber + + Use + + + + + КодЯзыка + + ru + Код языка + + + String + + 10 + + + + ru + Код языка представления реквизита + + + + ShowError + Use + Index + Use + + + Наименование + + ru + Наименование + + + String + + 150 + + + + ru + Представление реквизита на другом языке + + + + Use + Index + Use + + + Макет + + ru + Макет + + + ValueStorage + + + + Use + Use + + ForFolderAndItem + + + УсловияВидимостиВПодменюПечать + + ru + Условия видимости в подменю "Печать" + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form index 42213d2e4..b1d4fd7d0 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form @@ -1857,15 +1857,15 @@ true + + НаборыСвойств.НаименованиеНаДругихЯзыках + НаборыСвойств.КоличествоРеквизитов НаборыСвойств.КоличествоСведений - - НаборыСвойств.НаименованиеНаДругихЯзыках - НаборыСвойств.Родитель @@ -1881,41 +1881,37 @@
true
ВЫБРАТЬ - Наборы.Ссылка КАК Ссылка, - Наборы.ВерсияДанных КАК ВерсияДанных, - Наборы.ПометкаУдаления КАК ПометкаУдаления, - Наборы.Предопределенный КАК Предопределенный, - Наборы.Родитель КАК Родитель, - Наборы.ЭтоГруппа КАК ЭтоГруппа, - Наборы.Наименование КАК Наименование, - Наборы.Используется КАК Используется, + НаборыПереопределяемый.Ссылка КАК Ссылка, + НаборыПереопределяемый.ВерсияДанных КАК ВерсияДанных, + НаборыПереопределяемый.ПометкаУдаления КАК ПометкаУдаления, + НаборыПереопределяемый.Предопределенный КАК Предопределенный, + НаборыПереопределяемый.Родитель КАК Родитель, + НаборыПереопределяемый.ЭтоГруппа КАК ЭтоГруппа, + НаборыПереопределяемый.Наименование КАК Наименование, + НаборыПереопределяемый.Используется КАК Используется, ВЫРАЗИТЬ("" КАК СТРОКА(150)) КАК Представление, &ЭтоНаборыДополнительныхСведений КАК ЭтоСведения, - НаборыПредставления.Наименование КАК НаименованиеНаДругихЯзыках, ВЫБОР - КОГДА Наборы.ПометкаУдаления + КОГДА НаборыПереопределяемый.ПометкаУдаления ТОГДА 1 ИНАЧЕ 0 КОНЕЦ + ВЫБОР - КОГДА Наборы.Предопределенный + КОГДА НаборыПереопределяемый.Предопределенный ТОГДА 2 ИНАЧЕ 0 КОНЕЦ КАК НомерКартинки, - Наборы.КоличествоРеквизитов КАК КоличествоРеквизитов, - Наборы.КоличествоСведений КАК КоличествоСведений + НаборыПереопределяемый.КоличествоРеквизитов КАК КоличествоРеквизитов, + НаборыПереопределяемый.КоличествоСведений КАК КоличествоСведений ИЗ - Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления - ПО (НаборыПредставления.Ссылка = Наборы.Ссылка) - И (НаборыПредставления.КодЯзыка = &КодЯзыка) + Справочник.НаборыДополнительныхРеквизитовИСведений КАК НаборыПереопределяемый ГДЕ ВЫБОР - КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) - ТОГДА Наборы.Ссылка В (&Наборы) - ИНАЧЕ Наборы.Родитель В (&Наборы) - КОНЕЦ - И Наборы.Используется - И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА) + КОГДА НаборыПереопределяемый.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) + ТОГДА НаборыПереопределяемый.Ссылка В (&Наборы) + ИНАЧЕ НаборыПереопределяемый.Родитель В (&Наборы) + КОНЕЦ + И НаборыПереопределяемый.Используется + И ЕСТЬNULL(НаборыПереопределяемый.Родитель.Используется, ИСТИНА) Catalog.НаборыДополнительныхРеквизитовИСведений true true diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl index a08b51fe1..4f45a0dfd 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl @@ -39,6 +39,35 @@ Элементы.СвойстваПодменюДобавить.Отображение = ОтображениеКнопки.Картинка; КонецЕсли; + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(НаборыСвойств.ТекстЗапроса, "ГДЕ", + "ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления + |ПО (НаборыПредставления.Ссылка = НаборыПереопределяемый.Ссылка) + |И (НаборыПредставления.КодЯзыка = &КодЯзыка) + |ГДЕ"); + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "НаборыПереопределяемый.Наименование КАК Наименование", + "НаборыПереопределяемый.Наименование КАК Наименование, НаборыПредставления.Наименование КАК НаименованиеНаДругихЯзыках"); + + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.НаборыСвойств, СвойстваСписка); + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); + + ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект,, "НаборыСвойств"); + КонецЕсли; + + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -146,7 +175,7 @@ Данные.Представление = Строка(Данные.Ссылка); Продолжить; КонецЕсли; - Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда + Если Данные.Свойство("НаименованиеНаДругихЯзыках") И ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоСведений + ")"; Продолжить; КонецЕсли; @@ -156,10 +185,11 @@ Данные.Представление = Строка(Данные.Ссылка); Продолжить; КонецЕсли; - Если ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда - Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоРеквизитов + ")"; + Если Данные.Свойство("НаименованиеНаДругихЯзыках") И ЗначениеЗаполнено(Данные.НаименованиеНаДругихЯзыках) Тогда + Данные.Представление = Данные.НаименованиеНаДругихЯзыках + " (" + Данные.КоличествоСведений + ")"; Продолжить; КонецЕсли; + Данные.Представление = Строка(Данные.Ссылка) + " (" + Данные.КоличествоРеквизитов + ")"; КонецЕсли; КонецЦикла; @@ -633,9 +663,6 @@ ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( НаборыСвойств, "Наборы", ДоступныеНаборы, Истина); - - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - НаборыСвойств, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( НаборыСвойств, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); @@ -804,11 +831,7 @@ | СвойстваНаборов.НомерСтроки, | СвойстваНаборов.Свойство, | СвойстваНаборов.ПометкаУдаления, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Заголовок - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) - | КОНЕЦ КАК Заголовок, + | Свойства.Заголовок КАК Заголовок, | Свойства.ВладелецДополнительныхЗначений, | Свойства.ЗаполнятьОбязательно, | Свойства.ТипЗначения КАК ТипЗначения, @@ -822,9 +845,6 @@ | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства | ПО СвойстваНаборов.Свойство = Свойства.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления - | ПО (СвойстваПредставления.Ссылка = Свойства.Ссылка) - | И СвойстваПредставления.КодЯзыка = &КодЯзыка |ГДЕ | СвойстваНаборов.Ссылка = &Набор | @@ -844,11 +864,7 @@ "ВЫБРАТЬ | Свойства.Ссылка КАК Свойство, | Свойства.ПометкаУдаления КАК ПометкаУдаления, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Заголовок - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) - | КОНЕЦ КАК Заголовок, + | Свойства.Заголовок КАК Заголовок, | Свойства.ВладелецДополнительныхЗначений, | Свойства.ТипЗначения КАК ТипЗначения, | ИСТИНА КАК Общее, @@ -857,21 +873,9 @@ | ТОГДА 4 | ИНАЧЕ 3 | КОНЕЦ КАК НомерКартинки, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Подсказка - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) - | КОНЕЦ КАК Подсказка, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыЗначения, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + | Свойства.Подсказка КАК Подсказка, + | Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения, + | Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения |ИЗ | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления @@ -879,7 +883,6 @@ | И СвойстваПредставления.КодЯзыка = &КодЯзыка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора | ПО Свойства.Ссылка = СоставНабора.Свойство - | |ГДЕ | Свойства.ЭтоДополнительноеСведение = &ЭтоДополнительноеСведение | И СоставНабора.Свойство ЕСТЬ NULL @@ -900,6 +903,36 @@ "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения"); КонецЕсли; + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + Позиция = СтрНайти(Запрос.Текст, "ГДЕ"); + Запрос.Текст = Лев(Запрос.Текст, Позиция - 1 ) + " ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО Свойства.Ссылка = СвойстваПредставления.Ссылка + | И СвойстваПредставления.КодЯзыка = &КодЯзыка" + Сред(Запрос.Текст, Позиция -1); + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.Заголовок КАК Заголовок", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) КАК Заголовок"); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.Подсказка КАК Подсказка", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) КАК Подсказка"); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) КАК ЗаголовокФормыЗначения"); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) КАК ЗаголовокФормыВыбораЗначения"); + Иначе + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.Заголовок КАК Заголовок"); + Если ПоказатьНеиспользуемыеРеквизиты Тогда + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.Подсказка КАК Подсказка"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения"); + КонецЕсли; + КонецЕсли; + + КонецЕсли; + НачатьТранзакцию(); Попытка РезультатыЗапроса = Запрос.ВыполнитьПакет(); diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Form.form index bf166b903..3691105c1 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Form.form @@ -494,5 +494,9 @@ OnReadAtServer ПриЧтенииНаСервере + + BeforeWriteAtServer + ПередЗаписьюНаСервере + diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Module.bsl index e98e648ec..0dcd2ffc3 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаЭлемента/Module.bsl @@ -35,6 +35,11 @@ Элементы.ДополнительныеСведения.Видимость = Ложь; КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -47,6 +52,21 @@ КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -59,6 +79,25 @@ КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент"); + МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); + КонецЕсли; + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl index eea22f6e5..84eb58804 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl @@ -264,7 +264,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать набор свойств: %1 по причине: + НСтр("ru = 'Не удалось обработать набор свойств %1 по причине: |%2'"), ОбновляемыйНабор.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -282,6 +282,53 @@ КонецПроцедуры +// Начальное заполнение наборов + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + + УправлениеСвойствамиПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов(Настройки); + + Настройки.ИмяКлючевогоРеквизита = "Ссылка"; + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + УправлениеСвойствамиПереопределяемый.ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти); + +КонецПроцедуры + + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента +// +// Параметры: +// Объект - СправочникОбъект.ВидыКонтактнойИнформации - заполняемый объект. +// Данные - СтрокаТаблицыЗначений - данные заполнения объекта. +// ДополнительныеПараметры - Структура: +// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов. +// +Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + + УправлениеСвойствамиПереопределяемый.ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры); + +КонецПроцедуры + +// + #КонецОбласти @@ -317,6 +364,30 @@ НаборыСвойств[СвойстваНабора.Ссылка] = Новый ФиксированнаяСтруктура(НаборыСвойств[СвойстваНабора.Ссылка]); КонецЦикла; + ПредопределенныеДанные = УправлениеСвойствамиСлужебный.ПредопределенныеНаборыСвойств(); + + НаименованиеНаЯзыкеПользователя = "Наименование" + "_" + ТекущийЯзык().КодЯзыка; + ЕстьЯзыковаяКолонка = ПредопределенныеДанные.Колонки.Найти(НаименованиеНаЯзыкеПользователя) <> Неопределено; + + Для Каждого Набор Из ПредопределенныеДанные Цикл + + Если ЕстьЯзыковаяКолонка Тогда + Наименование = ?(ЕстьЯзыковаяКолонка, Набор[НаименованиеНаЯзыкеПользователя], Набор["Наименование"]); + КонецЕсли; + + Если ЗначениеЗаполнено(Набор.Родитель) Тогда + Родитель = СсылкаНаРодителя(Набор.Родитель); + + СвойстваНабора = НаборыСвойств.Получить(Родитель); + СвойстваДочернегоНабора = СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Родитель, Наименование); + СвойстваНабора.ДочерниеНаборы.Вставить(Набор.ИмяПредопределенногоНабора, СвойстваДочернегоНабора); + + Иначе + СвойстваНабора = СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Набор.Родитель, Наименование); + КонецЕсли; + + КонецЦикла; + Возврат Новый ФиксированноеСоответствие(НаборыСвойств); КонецФункции @@ -373,17 +444,18 @@ Набор.Идентификатор, Набор.Имя, СвойстваНабора.Имя); КонецЕсли; - СвойстваНабора = Новый Структура; - СвойстваНабора.Вставить("Имя", Набор.Имя); - СвойстваНабора.Вставить("ЭтоГруппа", Набор.ЭтоГруппа); - СвойстваНабора.Вставить("Используется", Набор.Используется); - СвойстваНабора.Вставить("Ссылка", НаборСсылка); - СвойстваНабора.Вставить("Родитель", Родитель); - СвойстваНабора.Вставить("ДочерниеНаборы", ?(Родитель = Неопределено, Новый Соответствие, Неопределено)); + СвойстваНабора = НовыеСвойстваНабора(); + СвойстваНабора.Имя = Набор.Имя; + СвойстваНабора.ЭтоГруппа = Набор.ЭтоГруппа; + СвойстваНабора.Используется = Набор.Используется; + СвойстваНабора.Ссылка = НаборСсылка; + СвойстваНабора.Родитель = Родитель; + СвойстваНабора.ДочерниеНаборы = ?(Родитель = Неопределено, Новый Соответствие, Неопределено); + Если Наименования = Неопределено Тогда - СвойстваНабора.Вставить("Наименование", ПредставлениеНабораВерхнегоУровня(Набор.Имя)); + СвойстваНабора.Наименование = ПредставлениеНабораВерхнегоУровня(Набор.Имя); Иначе - СвойстваНабора.Вставить("Наименование", Наименования[Набор.Имя]); + СвойстваНабора.Наименование = Наименования[Набор.Имя]; КонецЕсли; Если Родитель <> Неопределено Тогда @@ -396,6 +468,117 @@ КонецФункции +// Только для внутреннего использования. +// +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * ЭтоГруппа - Булево +// * Используется - Булево +// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * ДочерниеНаборы - Соответствие из КлючИЗначение: +// ** Ключ - Строка +// ** Значение - см. СвойстваНабора +// * Наименование - Строка +// +Функция СвойстваНабораНачальногоЗаполнения(НаборыСвойств, Набор, Родитель = Неопределено, Наименование = Неопределено) + + ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка в процедуре %1 общего модуля %2.'") + + Символы.ПС + Символы.ПС, "ПриНачальномЗаполненииЭлементов", "УправлениеСвойствамиПереопределяемый"); + + Если Не ЗначениеЗаполнено(Набор.ИмяПредопределенногоНабора) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 набора свойств не заполнено.'"), "ИмяПредопределенногоНабора"); + КонецЕсли; + + Если НаборыСвойств.Получить(Набор.ИмяПредопределенногоНабора) <> Неопределено Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 набора свойств ""%2"" уже определено.'"), + "ИмяПредопределенногоНабора", Набор.ИмяПредопределенногоНабора); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Набор.Ссылка) Тогда + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ссылка набора свойств ""%1"" не заполнен.'"), + Набор.ИмяПредопределенногоНабора); + КонецЕсли; + + НаборСсылка = Набор.Ссылка; + + Если НаборыСвойств.Получить(НаборСсылка) <> Неопределено Тогда + СвойстваНабора = НаборыСвойств.Получить(НаборСсылка); + ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ссылка ""%1"" набора свойств + |""%2"" уже используется для набора ""%3"".'"), + Набор.Ссылка, Набор.ИмяПредопределенногоНабора, СвойстваНабора.ИмяПредопределенногоНабора); + КонецЕсли; + + Родитель = СсылкаНаРодителя(Родитель); + + СвойстваНабора = НовыеСвойстваНабора(); + СвойстваНабора.Имя = Набор.ИмяПредопределенногоНабора; + СвойстваНабора.ЭтоГруппа = Набор.ЭтоГруппа; + СвойстваНабора.Используется = Набор.Используется; + СвойстваНабора.Ссылка = НаборСсылка; + СвойстваНабора.Родитель = Родитель; + СвойстваНабора.ДочерниеНаборы = ?(Родитель = Неопределено, Новый Соответствие, Неопределено); + + Если ЗначениеЗаполнено(Наименование) Тогда + СвойстваНабора.Вставить("Наименование", Наименование); + Иначе + СвойстваНабора.Вставить("Наименование", Набор["Наименование"]); + КонецЕсли; + + СвойстваНабора = Новый ФиксированнаяСтруктура(СвойстваНабора); + НаборыСвойств.Вставить(СвойстваНабора.Имя, СвойстваНабора); + НаборыСвойств.Вставить(СвойстваНабора.Ссылка, СвойстваНабора); + + Возврат СвойстваНабора; + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * ЭтоГруппа - Булево +// * Используется - Неопределено +// * Ссылка - Неопределено +// * Родитель - Неопределено +// * ДочерниеНаборы - Неопределено +// * Наименование - Строка +// +Функция НовыеСвойстваНабора() + + СвойстваНабора = Новый Структура; + СвойстваНабора.Вставить("Имя", ""); + СвойстваНабора.Вставить("ЭтоГруппа", Ложь); + СвойстваНабора.Вставить("Используется", Неопределено); + СвойстваНабора.Вставить("Ссылка", Неопределено); + СвойстваНабора.Вставить("Родитель", Неопределено); + СвойстваНабора.Вставить("ДочерниеНаборы", Неопределено); + СвойстваНабора.Вставить("Наименование", ""); + + Возврат СвойстваНабора; + +КонецФункции + +Функция СсылкаНаРодителя(Родитель) + + Если ЗначениеЗаполнено(Родитель) Тогда + + Если ТипЗнч(Родитель) = Тип("Строка") Тогда + Родитель = ПолучитьСсылку(Новый УникальныйИдентификатор(Родитель)); + ИначеЕсли ТипЗнч(Родитель) = Тип("УникальныйИдентификатор") Тогда + Родитель = ПолучитьСсылку(Родитель); + КонецЕсли; + КонецЕсли; + + Возврат Родитель; + +КонецФункции + #КонецЕсли // АПК:361-выкл нет обращения к серверному коду. diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ObjectModule.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ObjectModule.bsl index c1ff81944..8b5145a2a 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ObjectModule.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ObjectModule.bsl @@ -98,6 +98,19 @@ #КонецОбласти +#Область СлужебныеПроцедурыИФункции + +Процедура ПриЧтенииПредставленийНаСервере() Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + #Иначе ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); #КонецЕсли \ No newline at end of file diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl index 153af3008..eab365a57 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl @@ -149,16 +149,16 @@ МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта); - ТекстСообщения = НСтр("ru = 'Не удалось обработать %ИмяОбъекта%: %Ссылка% по причине: %Причина%'"); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ИмяОбъекта%", ПолноеИмяОбъекта); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Ссылка%", ОбъектыДляОбработки.Ссылка); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать %1 %2 по причине: + |%3'"), + ПолноеИмяОбъекта, ОбъектыДляОбработки.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Предупреждение, - МетаданныеОбъекта, - ОбъектыДляОбработки.Ссылка, - ТекстСообщения); + УровеньЖурналаРегистрации.Предупреждение, + МетаданныеОбъекта, + ОбъектыДляОбработки.Ссылка, + ТекстСообщения); КонецПопытки; diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl index 60b413a9d..dba444610 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl @@ -1449,6 +1449,7 @@ КонецПроцедуры // СтандартныеПодсистемы.ПодключаемыеКоманды + &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl index 0768cbaa3..86899a471 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl @@ -558,10 +558,12 @@ &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) + // СтандартныеПодсистемы.ПодключаемыеКоманды Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды Оповестить("Запись_Пользователи", Новый Структура, Объект.Ссылка); @@ -2515,6 +2517,33 @@ КонецФункции +// СтандартныеПодсистемы.ПодключаемыеКоманды + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + //////////////////////////////////////////////////////////////////////////////// // Для работы интерфейса ролей. @@ -2544,30 +2573,4 @@ КонецПроцедуры -// СтандартныеПодсистемы.ПодключаемыеКоманды -&НаКлиенте -Процедура Подключаемый_ВыполнитьКоманду(Команда) - МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); - МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); -КонецПроцедуры - -&НаКлиенте -Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт - ВыполнитьКомандуНаСервере(ПараметрыВыполнения); -КонецПроцедуры - -&НаСервере -Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) - МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); - МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); -КонецПроцедуры - -&НаКлиенте -Процедура Подключаемый_ОбновитьКоманды() - МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); - МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); -КонецПроцедуры - -// Конец СтандартныеПодсистемы.ПодключаемыеКоманды - #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl index 62c3aca71..aefa3a1fd 100644 --- a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl @@ -167,14 +167,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторых пользователей (пропущены): %1 + НСтр("ru = 'Не удалось обработать некоторых сведения о пользователях (пропущены): %1 |%2'"), ПроблемныхОбъектов, СтрСоединить(СписокОшибок, Символы.ПС)); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Пользователи,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию пользователей: %1'"), - ОбъектовОбработано)); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция сведений о пользователях: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo b/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo index fd5fad905..f7e2b8971 100644 --- a/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo +++ b/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo @@ -196,7 +196,10 @@ Причина отключения - EnumRef.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса + String + + 10 + ru diff --git a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Form.form index 65b2b18af..278caa5ed 100644 --- a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Form.form @@ -676,9 +676,6 @@ true - - Список.Ref - Список.ВыполняетсяТолькоВКонтексте diff --git a/SSL/src/Catalogs/ПравилаПроверкиУчета/ManagerModule.bsl b/SSL/src/Catalogs/ПравилаПроверкиУчета/ManagerModule.bsl index e8601bda5..2dadb2b63 100644 --- a/SSL/src/Catalogs/ПравилаПроверкиУчета/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПравилаПроверкиУчета/ManagerModule.bsl @@ -77,10 +77,8 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось установить источник данных правила проверки %1. - |Возможно он поврежден и не подлежит восстановлению. - | - |Информация для администратора: %2'"), + НСтр("ru = 'Не удалось обработать правило проверки %1 по причине: + |%2'"), ОтключаемаяПроверкаСсылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации( @@ -100,14 +98,14 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые записи проблемных объектов (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые правила проверки (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе - ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - , , + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура Справочник.ПравилаПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию проблемных объектов: %1'"), + НСтр("ru = 'Обработана очередная порция правил проверки: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo index ca5bd01c2..83e2f16c0 100644 --- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo +++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo @@ -122,14 +122,14 @@ AsDescription InDialog BothWays - - Отчет + + ВидимостьПоУмолчанию ru - Отчет + Видимость по умолчанию - CatalogRef.ИдентификаторыОбъектовМетаданных + Boolean ru @@ -138,29 +138,6 @@ - Index - Use - - - КлючВарианта - - ru - Ключ варианта - - - String - - 256 - - - - ru - - - - - - Index Use @@ -197,109 +174,26 @@ Index Use - - ВидимостьПоУмолчанию + + КлючВарианта ru - Видимость по умолчанию - - - Boolean - - - ru - - - - - - Use - - - Описание - - ru - Описание - - - String - - - - ru - - - - - - Use - Use - - - ХешНастроек - - ru - Хеш настроек + Ключ варианта String - 32 + 256 ru - Используется при обновлении программы. + - Use - - - НаименованияПолей - - ru - Наименования полей - - - String - - - - ru - Наименования полей, выведенных в отчете. -Используется при поиске. - - true - true - - - - Use - Use - - - НаименованияПараметровИОтборов - - ru - Наименования параметров и отборов - - - String - - - - ru - Наименования параметров и отборов отчета. -Используется при поиске. - - true - true - - - - Use + Index Use @@ -315,6 +209,48 @@ ru Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + Use + Use + + + КлючевыеСловаЯзык1 + + ru + Ключевые слова (дополнительный язык) + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + Use + Use + + + КлючевыеСловаЯзык2 + + ru + Ключевые слова (дополнительный язык 2) + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). Используется при поиске. @@ -340,6 +276,244 @@ Use + + НаименованияПараметровИОтборов + + ru + Наименования параметров и отборов + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПараметровИОтборовЯзык1 + + ru + Наименования параметров и отборов (дополнительный язык) + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПараметровИОтборовЯзык2 + + ru + Наименования параметров и отборов (дополнительный язык) + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПолей + + ru + Наименования полей + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПолейЯзык1 + + ru + Наименования полей (дополнительный язык) + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПолейЯзык2 + + ru + Наименования полей (дополнительный язык 2) + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + Use + Use + + + Описание + + ru + Описание + + + String + + + + ru + + + + + + Use + Use + + + ОписаниеЯзык1 + + ru + Описание (дополнительный язык) + + + String + + + + ru + + + + + + Use + Use + + + ОписаниеЯзык2 + + ru + Описание (дополнительный язык 2) + + + String + + + + ru + + + + + + Use + Use + + + Отчет + + ru + Отчет + + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + ru + + + + + + Index + Use + + + ХешНастроек + + ru + Хеш настроек + + + String + + 32 + + + + ru + Используется при обновлении программы. + + + + + Use + diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ПредопределенныеВариантыОтчетовРасширений.mdo b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ПредопределенныеВариантыОтчетовРасширений.mdo index 0a5fac72d..91571f58e 100644 --- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ПредопределенныеВариантыОтчетовРасширений.mdo +++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ПредопределенныеВариантыОтчетовРасширений.mdo @@ -340,6 +340,180 @@ Use + + ОписаниеЯзык1 + + ru + Описание (дополнительный язык) + + + String + + + + ru + + + + + + Use + Use + + + ОписаниеЯзык2 + + ru + Описание (дополнительный язык 2) + + + String + + + + ru + + + + + + Use + Use + + + НаименованияПолейЯзык1 + + ru + Наименования полей (дополнительный язык) + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПолейЯзык2 + + ru + Наименования полей (дополнительный язык 2) + + + String + + + + ru + Наименования полей, выведенных в отчете. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПараметровИОтборовЯзык1 + + ru + Наименования параметров и отборов (дополнительный язык) + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + Use + Use + + + НаименованияПараметровИОтборовЯзык2 + + ru + Наименования параметров и отборов (дополнительный язык 2) + + + String + + + + ru + Наименования параметров и отборов отчета. +Используется при поиске. + + true + true + + + + Use + Use + + + КлючевыеСловаЯзык1 + + ru + Ключевые слова (дополнительный язык) + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + Use + Use + + + КлючевыеСловаЯзык2 + + ru + Ключевые слова (дополнительный язык 2) + + + String + + + + ru + Дополнительная терминология (в т.ч. специализированная или устаревшая). +Используется при поиске. + + + + + Use + Use + diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl index d91808b18..f1c61a516 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl @@ -230,15 +230,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые программы электронной подписи (пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать некоторые программы электронной подписи (пропущены): %1'"), + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - Метаданные.НайтиПоПолномуИмени("Справочник.ПрограммыЭлектроннойПодписиИШифрования"),, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура Справочники.ПрограммыЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"), - ОбъектовОбработано)); + Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция программ электронной подписи: %1'"), + ОбъектовОбработано)); КонецЕсли; Параметры.ОбработкаЗавершена = ОбработкаЗавершена; diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form index c5b466ac5..ed9dac262 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form @@ -647,6 +647,10 @@ Left true + + OnActivateRow + СписокПриАктивизацииСтроки + OnChange СписокПриИзменении @@ -745,6 +749,7 @@ true true true + MultiRow 1 1 AutoUse diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl index 44cd5d26e..68cfd50f4 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl @@ -55,6 +55,15 @@ ТолькоПросмотр = Истина; КонецЕсли; + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + ПараметрыРазмещения = МодульПодключаемыеКоманды.ПараметрыРазмещения(); + ПараметрыРазмещения.КоманднаяПанель = Элементы.КоманднаяПанель; + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + КонецПроцедуры #КонецОбласти @@ -90,6 +99,18 @@ #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + &НаКлиенте Процедура СписокПриИзменении(Элемент) @@ -174,4 +195,31 @@ КонецПроцедуры +// СтандартныеПодсистемы.ПодключаемыеКоманды + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + #КонецОбласти diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Form.form index 397334200..c98fe43e1 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Form.form @@ -1923,6 +1923,10 @@ Left + + OnOpen + ПриОткрытии + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl index 66760309b..1a5ca64d3 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl @@ -64,30 +64,56 @@ Элементы.ФормаЗаписатьИЗакрыть.Доступность = Не ТолькоПросмотр И ПравоДоступа("Редактирование", Метаданные.Справочники.ПрофилиГруппДоступа); + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + ПараметрыРазмещения = МодульПодключаемыеКоманды.ПараметрыРазмещения(); + ПараметрыРазмещения.КоманднаяПанель = Элементы.КомандыФормы; + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) - Если НЕ ВыполненаПроцедураПриСозданииНаСервере Тогда - Возврат; - КонецЕсли; - - ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); - ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина); - - УправлениеДоступомСлужебный.ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений( - ЭтотОбъект, ТекущийОбъект); - - УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(ТекущийОбъект); - // СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом - + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Если ВыполненаПроцедураПриСозданииНаСервере Тогда + ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли); + ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина); + + УправлениеДоступомСлужебный.ПриПовторномЧтенииНаСервереФормыРедактированияРазрешенныхЗначений( + ЭтотОбъект, ТекущийОбъект); + + УстановитьДоступностьОписанияИВосстановленияПоставляемогоПрофиля(ТекущийОбъект); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -153,6 +179,13 @@ ОбъектЗаписывался = Истина; ТребуетсяОбновитьГруппыДоступаПрофиля = Ложь; + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + Оповестить("Запись_ПрофилиГруппДоступа", Новый Структура, Объект.Ссылка); Если ПараметрыЗаписи.Свойство("ПерсональныеГруппыДоступаСОбновленнымНаименованием") Тогда @@ -657,6 +690,32 @@ КонецПроцедуры +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + //////////////////////////////////////////////////////////////////////////////// // Для работы интерфейса ролей. diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl index 9c525a601..2d8aa7200 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -794,7 +794,9 @@ &НаКлиенте Процедура ДругойСпособДоставкиОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) - СтандартнаяОбработка = НЕ ПустаяСтрока(Текст); + Если ПустаяСтрока(Текст) Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl b/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl index 8923b836f..4a78c4297 100644 --- a/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl +++ b/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl @@ -171,7 +171,9 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", - "ru='Координатор выполнения задач'", КодыЯзыков); // @НСтр-2 + "ru='Координатор выполнения задач'", КодыЯзыков); // @НСтр-1 + Иначе + Элемент.Наименование = НСтр("ru = 'Координатор выполнения задач'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецЕсли; Элемент.ИспользуетсяБезОбъектовАдресации = Истина; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form index 2aa12311c..0a4fa370c 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form @@ -800,8 +800,11 @@ true true - Сертификаты.ТипРазмещения + Сертификаты.СостояниеСертификата + + CommonPicture.СостоянияСертификатов + true @@ -1460,10 +1463,10 @@
- ГруппаУсиленнаяЗащитаЗакрытогоКлюча + ГруппаВводитьПарольВПрограммеЭлектроннойПодписи 856 - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи 528 true true @@ -1471,23 +1474,16 @@ true - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи Right - - ru - Уточняет, что пароль к закрытому ключу сертификата будет вводиться в отдельном окне -программой электронной подписи и шифрования, а не программой 1С:Предприятие. - -Только для сертификатов, которые выпущены с усиленной защитой закрытого ключа. - Button OnChange - СертификатУсиленнаяЗащитаЗакрытогоКлючаПриИзменении + СертификатВводитьПарольВПрограммеЭлектроннойПодписиПриИзменении - СертификатУсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + СертификатВводитьПарольВПрограммеЭлектроннойПодписиРасширеннаяПодсказка 530 Label true @@ -1497,7 +1493,7 @@ - СертификатУсиленнаяЗащитаЗакрытогоКлючаКонтекстноеМеню + СертификатВводитьПарольВПрограммеЭлектроннойПодписиКонтекстноеМеню 529 true @@ -1663,11 +1659,6 @@ true - - ru - Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, -так как для выбранного сертификата указана усиленная защита закрытого ключа. - Button ПояснениеУсиленногоПароляРасширеннаяПодсказка @@ -1880,10 +1871,10 @@ <key>ru</key> - <value>Усиленная защита закрытого ключа</value> + <value>Вводить пароль в программе электронной подписи</value> - ГруппаУсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + ГруппаВводитьПарольВПрограммеЭлектроннойПодписиРасширеннаяПодсказка 857 Label true @@ -2265,6 +2256,35 @@ true + + СостояниеСертификата + 31 + + Number + + 1 + + + + true + + + true + + + + ЕстьВСправочнике + 35 + + Boolean + + + true + + + true + + СертификатНаименование @@ -2321,10 +2341,10 @@ - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи <key>ru</key> - <value>Усиленная защита закрытого ключа</value> + <value>Вводить пароль в программе электронной подписи</value> 16 @@ -2706,6 +2726,19 @@ true + + ЕстьПравоНаДобавлениеВСправочник + 34 + + Boolean + + + true + + + true + + Далее diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl index db672de3f..4918e8626 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl @@ -18,8 +18,30 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ЕстьПравоНаДобавлениеВСправочник = ПравоДоступа("Добавление", + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); + + УсловноеОформление.Элементы.Очистить(); + Если Не ЕстьПравоНаДобавлениеВСправочник Тогда + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Сертификаты"); + ПолеОформления.Использование = Истина; + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сертификаты.ЕстьВСправочнике"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + ЭлементОтбора.Использование = Истина; + КонецЕсли; + ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, - Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Имя, + Элементы.СертификатВводитьПарольВПрограммеЭлектроннойПодписи.Имя, Элементы.ПояснениеУсиленногоПароля.Имя); СертификатПараметрыРеквизитов = @@ -31,10 +53,6 @@ ВыполнятьНаСервере = Параметры.ВыполнятьНаСервере; ЕстьОблачнаяПодпись = ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи(); - Если ЕстьОблачнаяПодпись Тогда - МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS"); - Элементы.Сертификаты.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов"); - КонецЕсли; ОтборПоОрганизации = Параметры.ОтборПоОрганизации; @@ -217,7 +235,7 @@ КонецПроцедуры &НаКлиенте -Процедура СертификатУсиленнаяЗащитаЗакрытогоКлючаПриИзменении(Элемент) +Процедура СертификатВводитьПарольВПрограммеЭлектроннойПодписиПриИзменении(Элемент) ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля, Новый Структура("ПриИзмененииСвойствСертификата", Истина)); @@ -422,7 +440,7 @@ ПараметрыСертификата.Наименование = СертификатНаименование; ПараметрыСертификата.Пользователь = СертификатПользователь; ПараметрыСертификата.Организация = СертификатОрганизация; - ПараметрыСертификата.УсиленнаяЗащитаЗакрытогоКлюча = СертификатУсиленнаяЗащитаЗакрытогоКлюча; + ПараметрыСертификата.ВводитьПарольВПрограммеЭлектроннойПодписи = СертификатВводитьПарольВПрограммеЭлектроннойПодписи; ЭлектроннаяПодписьКлиент.ЗаписатьСертификатВСправочник( Новый ОписаниеОповещения("ВыбратьПослеПроверкиСертификата", ЭтотОбъект, Неопределено), @@ -440,9 +458,11 @@ Возврат; КонецЕсли; - ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); + Если Не ЗначениеЗаполнено(Сертификат) Тогда - ДополнительныеПараметры.Вставить("ЭтоНовый"); + ДополнительныеПараметры.ЭтоНовый = Истина; + ДополнительныеПараметры.Установлен = Истина; КонецЕсли; Сертификат = Результат; @@ -473,7 +493,7 @@ &НаКлиенте Процедура ВыбратьПослеПроверкиСертификатаОблачнойПодписи(Результат, Контекст) Экспорт - ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); Если Не Результат.Выполнено Тогда ОписаниеОшибки = Результат.Ошибка; ИначеЕсли Не Результат.Результат Тогда @@ -492,7 +512,7 @@ КонецЕсли; Если Не ЗначениеЗаполнено(Сертификат) Тогда - ДополнительныеПараметры.Вставить("ЭтоНовый"); + ДополнительныеПараметры.ЭтоНовый = Истина; КонецЕсли; ЗаписатьСертификатВСправочникОблачнаяПодпись(Контекст.УчетнаяЗапись); @@ -509,7 +529,7 @@ &НаКлиенте Процедура ВыбратьПослеПроверкиСертификатаВМоделиСервиса(Результат, Контекст) Экспорт - ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); Если Не Результат.Выполнено Тогда ОписаниеОшибки = КраткоеПредставлениеОшибки(Результат.ИнформацияОбОшибке); ИначеЕсли Не Результат.Действителен Тогда @@ -529,7 +549,7 @@ КонецЕсли; Если Не ЗначениеЗаполнено(Сертификат) Тогда - ДополнительныеПараметры.Вставить("ЭтоНовый"); + ДополнительныеПараметры.ЭтоНовый = Истина; КонецЕсли; ЗаписатьСертификатВСправочникВМоделиСервиса(); @@ -740,6 +760,14 @@ Возврат; КонецЕсли; + Если Не ЕстьПравоНаДобавлениеВСправочник И Не ТекущиеДанные.ЕстьВСправочнике Тогда + Результат.ОбновитьСписокСертификатов = Истина; + Результат.ОписаниеОшибки = + НСтр("ru = 'Недостаточно прав на использование сертификата, отсутствующего в справочнике.'"); + ВыполнитьОбработкуОповещения(Оповещение, Результат); + Возврат; + КонецЕсли; + СертификатНаКлиенте = ТекущиеДанные.НаКлиенте; СертификатНаСервере = ТекущиеДанные.НаСервере; СертификатВОблачномСервисе = ТекущиеДанные.ВОблачномСервисе; @@ -923,11 +951,11 @@ КонецЕсли; КонецЕсли; - Если СертификатПараметрыРеквизитов.Свойство("УсиленнаяЗащитаЗакрытогоКлюча") Тогда - Если Не СертификатПараметрыРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча.Видимость Тогда - Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Ложь; - ИначеЕсли СертификатПараметрыРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча.ТолькоПросмотр Тогда - Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.ТолькоПросмотр = Истина; + Если СертификатПараметрыРеквизитов.Свойство("ВводитьПарольВПрограммеЭлектроннойПодписи") Тогда + Если Не СертификатПараметрыРеквизитов.ВводитьПарольВПрограммеЭлектроннойПодписи.Видимость Тогда + Элементы.СертификатВводитьПарольВПрограммеЭлектроннойПодписи.Видимость = Ложь; + ИначеЕсли СертификатПараметрыРеквизитов.ВводитьПарольВПрограммеЭлектроннойПодписи.ТолькоПросмотр Тогда + Элементы.СертификатВводитьПарольВПрограммеЭлектроннойПодписи.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; @@ -935,7 +963,7 @@ СертификатПользователь = Контекст.СохраненныеСвойства.Пользователь; СертификатОрганизация = Контекст.СохраненныеСвойства.Организация; СертификатНаименование = Контекст.СохраненныеСвойства.Наименование; - СертификатУсиленнаяЗащитаЗакрытогоКлюча = Контекст.СохраненныеСвойства.УсиленнаяЗащитаЗакрытогоКлюча; + СертификатВводитьПарольВПрограммеЭлектроннойПодписи = Контекст.СохраненныеСвойства.ВводитьПарольВПрограммеЭлектроннойПодписи; ЭлектроннаяПодписьСлужебныйКлиент.ОбработатьПарольВФорме(ЭтотОбъект, ВнутренниеДанные, СвойстваПароля); @@ -950,9 +978,9 @@ КонецЕсли; Если СертификатВОблачномСервисе ИЛИ СертификатОблачнойПодписи Тогда - Элементы.ГруппаУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Ложь; + Элементы.ГруппаВводитьПарольВПрограммеЭлектроннойПодписи.Видимость = Ложь; Иначе - Элементы.ГруппаУсиленнаяЗащитаЗакрытогоКлюча.Видимость = Истина; + Элементы.ГруппаВводитьПарольВПрограммеЭлектроннойПодписи.Видимость = Истина; ПодключитьОбработчикОжидания("ОбработчикОжиданияАктивизироватьЭлементПароль", 0.1, Истина); КонецЕсли; @@ -971,7 +999,7 @@ Процедура ЗаписатьСертификатВСправочникВМоделиСервиса() ПрограммаОблачногоСервиса = ЭлектроннаяПодписьСлужебный.ПрограммаОблачногоСервиса(); - СертификатУсиленнаяЗащитаЗакрытогоКлюча = Ложь; + СертификатВводитьПарольВПрограммеЭлектроннойПодписи = Ложь; ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, ПрограммаОблачногоСервиса, Ложь); @@ -980,7 +1008,7 @@ &НаСервере Процедура ЗаписатьСертификатВСправочникОблачнаяПодпись(УчетнаяЗапись) - СертификатУсиленнаяЗащитаЗакрытогоКлюча = Ложь; + СертификатВводитьПарольВПрограммеЭлектроннойПодписи = Ложь; ЭлектроннаяПодписьСлужебный.ЗаписатьСертификатВСправочник(ЭтотОбъект, УчетнаяЗапись, Ложь); diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификата/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификата/Module.bsl index f6f1db776..8924e27c2 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/ДобавлениеСертификатаДляШифрования/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Form.form index b032f6394..8bff0568c 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Form.form @@ -691,8 +691,11 @@ <enableStartDrag>true</enableStartDrag> <enableDrag>true</enableDrag> <rowPictureDataPath xsi:type="form:DataPath"> - <segments>Сертификаты.ТипРазмещения</segments> + <segments>Сертификаты.СостояниеСертификата</segments> </rowPictureDataPath> + <rowsPicture xsi:type="core:PictureRef"> + <picture>CommonPicture.КоллекцияВидыСобытийЖурналаРегистрации</picture> + </rowsPicture> <autoMaxCardHeight>true</autoMaxCardHeight> <rowFilter xsi:type="core:UndefinedValue"/> </items> @@ -1714,6 +1717,33 @@ <common>true</common> </edit> </columns> + <columns> + <name>СостояниеСертификата</name> + <id>20</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </columns> + <columns> + <name>ЕстьВСправочнике</name> + <id>25</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </columns> </attributes> <attributes> <name>СертификатНаименование</name> @@ -1963,6 +1993,19 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ЕстьПравоНаДобавлениеВСправочник</name> + <id>23</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> <formCommands> <name>Далее</name> <title> diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl index efe67507b..21a9fd1d0 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl @@ -11,6 +11,28 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ЕстьПравоНаДобавлениеВСправочник = ПравоДоступа("Добавление", + Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); + + УсловноеОформление.Элементы.Очистить(); + Если Не ЕстьПравоНаДобавлениеВСправочник Тогда + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Сертификаты"); + ПолеОформления.Использование = Истина; + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сертификаты.ЕстьВСправочнике"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + ЭлементОтбора.Использование = Истина; + КонецЕсли; + СертификатПараметрыРеквизитов = ЭлектроннаяПодписьСлужебный.НовыеПараметрыРеквизитовСертификата(); @@ -228,6 +250,12 @@ Возврат; КонецЕсли; + Если Не ЕстьПравоНаДобавлениеВСправочник И Не ТекущиеДанные.ЕстьВСправочнике Тогда + ПоказатьПредупреждение(, + НСтр("ru = 'Недостаточно прав на использование сертификата, отсутствующего в справочнике.'")); + Возврат; + КонецЕсли; + Элементы.Далее.Доступность = Ложь; УчетнаяЗапись = Неопределено; @@ -377,9 +405,9 @@ Возврат; КонецЕсли; - ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); Если Не ЗначениеЗаполнено(Сертификат) Тогда - ДополнительныеПараметры.Вставить("ЭтоНовый"); + ДополнительныеПараметры.ЭтоНовый = Истина; КонецЕсли; ЗаписатьСертификатВСправочник(); diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Form.form index fa31637d9..2a9881248 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Form.form @@ -135,6 +135,44 @@ <horizontalAlign>Left</horizontalAlign> </extInfo> </items> + <items xsi:type="form:Decoration"> + <name>ДекорацияПеревыпущен</name> + <id>28</id> + <title> + <key>ru</key> + <value><link СертификатПеревыпущен>Перевыпущен</></value> + + true + true + + true + + + ДекорацияПеревыпущенРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ДекорацияПеревыпущенКонтекстноеМеню + 29 + true + + true + Label + true + true + + + URLProcessing + ДекорацияПеревыпущенОбработкаНавигационнойСсылки + + + БольшеНеНапоминать 7 @@ -147,6 +185,10 @@ БольшеНеНапоминать Right + + OnChange + БольшеНеНапоминатьПриИзменении + БольшеНеНапоминатьExtendedTooltip 19 @@ -172,6 +214,32 @@ ФормаКоманднаяПанель -1 + + ФормаПеревыпустить + 23 + true + true + + true + + + ФормаПеревыпуститьРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + Form.Command.Перевыпустить + Auto + true + true + true + UserCmds + Auto + Закрыть 9 @@ -192,7 +260,7 @@ Form.StandardCommand.Close - true + Normal true true UserCmds @@ -264,6 +332,22 @@ true + + ВыпущенныеСертификаты + 4 + + ValueList + + + true + + + true + + + + + ОткрытьСертификат @@ -281,6 +365,24 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>Перевыпустить</name> + <title> + <key>ru</key> + <value>Перевыпустить...</value> + + 2 + + true + + + + Перевыпустить + + + Auto + Auto + Сертификат diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Module.bsl index 21fd514f6..d8ee7738a 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ОповещениеОбОкончанииСрокаДействия/Module.bsl @@ -1,3 +1,4 @@ + /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2021, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются @@ -12,7 +13,22 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Сертификат = Параметры.Сертификат; + ЗаявлениеНаВыпускСертификатаДоступно = ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно; + Элементы.ФормаПеревыпустить.Видимость = ЗаявлениеНаВыпускСертификатаДоступно + И ПравоДоступа("Редактирование", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); + Если ЗаявлениеНаВыпускСертификатаДоступно Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ВыпущенныеСертификаты = ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ВыпущенныеСертификаты(Сертификат); + КонецЕсли; + + ЕстьПеревыпущенные = ВыпущенныеСертификаты.Количество() > 0; + Элементы.Закрыть.КнопкаПоУмолчанию = ЕстьПеревыпущенные; + Элементы.ДекорацияПеревыпущен.Видимость = ЕстьПеревыпущенные; + Элементы.Совет.Видимость = Не ЕстьПеревыпущенные; + КонецПроцедуры &НаКлиенте @@ -21,41 +37,57 @@ Если ЗавершениеРаботы Тогда Возврат; КонецЕсли; - Если БольшеНеНапоминать Тогда - УстановитьПометкуНаСервере(Сертификат, УникальныйИдентификатор); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура БольшеНеНапоминатьПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ИзменитьОтметкуОНапоминании(Сертификат, Не БольшеНеНапоминать, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияПеревыпущенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если ВыпущенныеСертификаты.Количество() = 1 Тогда + ОткрытьСертификатПослеВыбораИзСписка(ВыпущенныеСертификаты[0], Неопределено); + Иначе + ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьСертификатПослеВыбораИзСписка", ЭтотОбъект, Элемент); + ПоказатьВыборИзСписка(ОписаниеОповещения, ВыпущенныеСертификаты); КонецЕсли; КонецПроцедуры #КонецОбласти +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Перевыпустить(Команда) + + ПараметрыФормы = Новый Структура("СертификатОснование", Сертификат); + ОткрытьФорму("Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Форма", ПараметрыФормы); + +КонецПроцедуры + +#КонецОбласти + #Область СлужебныеПроцедурыИФункции -&НаСервереБезКонтекста -Процедура УстановитьПометкуНаСервере(Сертификат, Идентификатор) +&НаКлиенте +Процедура ОткрытьСертификатПослеВыбораИзСписка(Результат, ДополнительныеПараметры) Экспорт - ЗаблокироватьДанныеДляРедактирования(Сертификат, , Идентификатор); - - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); - ЭлементБлокировки.УстановитьЗначение("Ссылка", Сертификат); - - НачатьТранзакцию(); - Попытка + Если Результат <> Неопределено Тогда + ОткрытьФорму("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.ФормаЭлемента", + Новый Структура("Ключ", Результат.Значение)); + КонецЕсли; - Блокировка.Заблокировать(); - - СертификатОбъект = Сертификат.ПолучитьОбъект(); - СертификатОбъект.ПользовательОповещенОСрокеДействия = Истина; - СертификатОбъект.Записать(); - - ЗафиксироватьТранзакцию(); - - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - КонецПроцедуры -#КонецОбласти +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Form.form index 5a71ef0e9..61b405c21 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Form.form @@ -1214,10 +1214,10 @@ СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата, СертификатыПереопределяемый.Программа КАК Программа, СертификатыПереопределяемый.Отозван КАК Отозван, - СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, + СертификатыПереопределяемый.ВводитьПарольВПрограммеЭлектроннойПодписи КАК ВводитьПарольВПрограммеЭлектроннойПодписи, СертификатыПереопределяемый.Организация КАК Организация, СертификатыПереопределяемый.Пользователь КАК Пользователь, - СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, + СертификатыПереопределяемый.УдалитьПользовательОповещенОСрокеДействия КАК УдалитьПользовательОповещенОСрокеДействия, СертификатыПереопределяемый.Предопределенный КАК Предопределенный, СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, ВЫБОР diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Module.bsl index 1c5eaaeca..8ef6c0cb5 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодборСертификатовДляШифрования/Module.bsl @@ -47,7 +47,7 @@ Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") - И Параметр.Свойство("ЭтоНовый") Тогда + И Параметр.ЭтоНовый Тогда Элементы.Список.Обновить(); Элементы.Список.ТекущаяСтрока = Источник; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form index 3766ec22d..2b1d4e150 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form @@ -304,11 +304,6 @@ true - - ru - Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, -так как для выбранного сертификата указана усиленная защита закрытого ключа. - Button ПояснениеУсиленногоПароляРасширеннаяПодсказка @@ -1089,7 +1084,7 @@ - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи 18 Boolean @@ -1252,6 +1247,12 @@ ВыполнятьНаСервере + + ОповеститьОбОкончанииСрокаДействия + + Boolean + + diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl index 0a80800a2..10855259b 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Module.bsl @@ -357,7 +357,7 @@ Если БезПодтверждения И ( ДополнительныеПараметры.ПарольУказан - Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча + Или ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи Или ОблачныйПарольПодтвержден) Тогда Если МодульСервисКриптографииDSSПодтверждениеКлиент <> Неопределено Тогда diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form index 71c853c69..e3b8649d4 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form @@ -3733,12 +3733,7 @@ true - - ru - Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, -так как для выбранного сертификата указана усиленная защита закрытого ключа. - - None + Button ПояснениеУсиленногоПароляРасширеннаяПодсказка 121 @@ -4323,7 +4318,7 @@ - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи 7 Boolean diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl index f9caa837b..7280dd49e 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl @@ -128,12 +128,12 @@ КонецЕсли; СвойстваСертификата = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Сертификат, - "ДанныеСертификата, Программа, УсиленнаяЗащитаЗакрытогоКлюча, Отпечаток"); + "ДанныеСертификата, Программа, ВводитьПарольВПрограммеЭлектроннойПодписи, Отпечаток"); Программа = СвойстваСертификата.Программа; АдресСертификата = ПоместитьВоВременноеХранилище( СвойстваСертификата.ДанныеСертификата.Получить(), УникальныйИдентификатор); - СертификатУсиленнаяЗащитаЗакрытогоКлюча = СвойстваСертификата.УсиленнаяЗащитаЗакрытогоКлюча; + СертификатВводитьПарольВПрограммеЭлектроннойПодписи = СвойстваСертификата.ВводитьПарольВПрограммеЭлектроннойПодписи; ЭтоПрограммаОблачнойПодписи = ТипЗнч(Программа) = ЭлектроннаяПодписьСлужебный.ПолучитьТипОблачнойПодписи() И ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи(); ЭтоПрограммаОблачногоСервиса = Программа = ЭлектроннаяПодписьСлужебный.ПрограммаОблачногоСервиса(); @@ -369,7 +369,7 @@ Если КлиентскиеПараметры.Свойство("БезПодтверждения") И КлиентскиеПараметры.БезПодтверждения И (ДополнительныеПараметры.ПарольУказан - Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча) Тогда + Или ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи) Тогда Если Не КлиентскиеПараметры.Свойство("ОбработкаРезультата") Или ТипЗнч(КлиентскиеПараметры.ОбработкаРезультата) <> Тип("ОписаниеОповещения") Тогда @@ -706,7 +706,7 @@ ПараметрыСоздания = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыСозданияМенеджераКриптографии(); ПараметрыСоздания.Программа = Программа; ПараметрыСоздания.ПоказатьОшибку = Ложь; - ПараметрыСоздания.ИнтерактивныйРежим = СертификатУсиленнаяЗащитаЗакрытогоКлюча; + ПараметрыСоздания.ИнтерактивныйРежим = СертификатВводитьПарольВПрограммеЭлектроннойПодписи; ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( "ПроверитьНаСторонеКлиентаПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), @@ -1214,7 +1214,7 @@ ИначеЕсли Результат.Выполнено И Результат.Результат Тогда ОписаниеОшибки = ""; Иначе - ОписаниеОшибки = Результат.Ошибка; + ОписаниеОшибки = Результат.СтатусОшибки.ИсходныйТекст; КонецЕсли; УстановитьЭлемент(ЭтотОбъект, "ДанныеСертификата", Ложь, ОписаниеОшибки, Истина, ОбъединятьРезультаты); @@ -1334,7 +1334,7 @@ ОписаниеОшибки = НСтр("ru = 'Форма проверки закрыта.'"); ИначеЕсли РезультатВызова <> Неопределено Тогда Если Не РезультатВызова.Выполнено Тогда - ОписаниеОшибки = РезультатВызова.Ошибка; + ОписаниеОшибки = РезультатВызова.СтатусОшибки.ИсходныйТекст; Иначе ОписаниеОшибки = ""; КонецЕсли; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Form.form index 676bd9773..88eea90ff 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Form.form @@ -302,11 +302,6 @@ true - - ru - Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, -так как для выбранного сертификата указана усиленная защита закрытого ключа. - Button ПояснениеУсиленногоПароляРасширеннаяПодсказка @@ -981,7 +976,7 @@ - СертификатУсиленнаяЗащитаЗакрытогоКлюча + СертификатВводитьПарольВПрограммеЭлектроннойПодписи 18 Boolean diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl index 521aa626c..2b784e468 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl @@ -399,7 +399,7 @@ Если БезПодтверждения И ( ДополнительныеПараметры.ПарольУказан - Или ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча + Или ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи Или ОблачныйПарольПодтвержден) Тогда Если МодульСервисКриптографииDSSПодтверждениеКлиент <> Неопределено Тогда diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Form.form index 73653df37..9a85d67aa 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Form.form @@ -2,7 +2,7 @@ <key>ru</key> - <value>Список пользователей</value> + <value>Используют</value> ГруппаДанные @@ -50,7 +50,7 @@ ru - Только для меня + Только я ТолькоДляМеня @@ -131,7 +131,7 @@ ru - Добавить пользователей + Указанные пользователи СписокПользователей diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Module.bsl index 748fc5090..bd7da0116 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/СписокПользователей/Module.bsl @@ -67,8 +67,12 @@ Иначе Результат.Пользователь = ПользователиКлиент.ТекущийПользователь(); КонецЕсли; - КонецЕсли; - + Если Результат.Пользователи.Количество() = 1 Тогда + Результат.Пользователь = Результат.Пользователи[0]; + Результат.Пользователи.Очистить(); + КонецЕсли; + КонецЕсли; + Закрыть(Результат); КонецПроцедуры @@ -185,8 +189,7 @@ ЭлементыФормы.ПользователиПометитьВсе.Доступность = НЕ ЭлементыФормы.ТаблицаПользователей.ТолькоПросмотр; ЭлементыФормы.ПользователиОтменитьПометку.Доступность = НЕ ЭлементыФормы.ТаблицаПользователей.ТолькоПросмотр; - - + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Form.form index 8f57ede71..e58e8743b 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Form.form @@ -588,10 +588,10 @@ СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата, СертификатыПереопределяемый.Программа КАК Программа, СертификатыПереопределяемый.Отозван КАК Отозван, - СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, + СертификатыПереопределяемый.ВводитьПарольВПрограммеЭлектроннойПодписи КАК ВводитьПарольВПрограммеЭлектроннойПодписи, СертификатыПереопределяемый.Организация КАК Организация, СертификатыПереопределяемый.Пользователь КАК Пользователь, - СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, + СертификатыПереопределяемый.УдалитьПользовательОповещенОСрокеДействия КАК УдалитьПользовательОповещенОСрокеДействия, СертификатыПереопределяемый.Предопределенный КАК Предопределенный, СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных ИЗ diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Module.bsl index 879e8d51f..add435263 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаВыбора/Module.bsl @@ -47,8 +47,7 @@ Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") - И Параметр.Свойство("ЭтоНовый") Тогда - + И Параметр.ЭтоНовый Тогда Элементы.Список.Обновить(); Элементы.Список.ТекущаяСтрока = Источник; КонецЕсли; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form index 879b206ff..4f1a7a358 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form @@ -1,5 +1,190 @@ + + СостояниеСертификатаГруппа + 276 + + КартинкаСертификата + 281 + + <key>ru</key> + <value>Картинка сертификата</value> + + true + true + + true + + + КартинкаСертификатаРасширеннаяПодсказка + 283 + Label + true + true + + Left + + + + КартинкаСертификатаКонтекстноеМеню + 282 + true + + true + true + Center + + + CommonPicture.СертификатКлюча + + AsFileRef + + + + СостояниеСертификата + 290 + + <key>ru</key> + <value>Состояние сертификата</value> + + true + true + + true + + + СостояниеСертификатаРасширеннаяПодсказка + 292 + Label + true + true + + Left + + + + СостояниеСертификатаКонтекстноеМеню + 291 + true + + Label + true + true + + Left + + + + ДекорацияПеревыпущен + 305 + + <key>ru</key> + <value><link СертификатПеревыпущен>(перевыпущен)</></value> + + true + + true + + + ДекорацияПеревыпущенРасширеннаяПодсказка + 307 + Label + true + true + + Left + + + + ДекорацияПеревыпущенКонтекстноеМеню + 306 + true + + true + Label + true + true + + + URLProcessing + ДекорацияПеревыпущенОбработкаНавигационнойСсылки + + Left + + + + НапомнитьОПеревыпуске + 278 + true + true + + true + + + НапомнитьОПеревыпуске + + Right + + OnChange + НапомнитьОПеревыпускеПриИзменении + + + НапомнитьОПеревыпускеРасширеннаяПодсказка + 280 + Label + true + true + + Left + + + + НапомнитьОПеревыпускеКонтекстноеМеню + 279 + true + + CheckBoxField + Right + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние сертификата группа</value> + + true + + СостояниеСертификатаГруппаРасширеннаяПодсказка + 277 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + + Style.ToolTipBackColor + + Auto + Auto + + ДанныеСертификата 151 @@ -704,10 +889,8 @@ Left true - 37 - true + 100 true - false true true true @@ -715,20 +898,259 @@ Normal - - Организация - 168 + + ГруппаРеквизитыСертификата + 300 + + ГруппаОрганизацияФизическоеЛицо + 295 + + Организация + 168 + true + true + + true + + + Объект.Организация + + + ОрганизацияРасширеннаяПодсказка + 170 + Label + true + true + + Left + + + + ОрганизацияКонтекстноеМеню + 169 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + DontUse + + + + ФизическоеЛицо + 287 + true + true + + true + + + Объект.ФизическоеЛицо + + + ФизическоеЛицоРасширеннаяПодсказка + 289 + Label + true + true + + Left + + + + ФизическоеЛицоКонтекстноеМеню + 288 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Организация физическое лицо</value> + + + ГруппаОрганизацияФизическоеЛицоРасширеннаяПодсказка + 296 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + + + + ГруппаПользователи + 293 + + Пользователи + 273 + true + true + + true + + + ПредставлениеПользователей + + + ПользователиРасширеннаяПодсказка + 275 + Label + true + true + + Left + + + + ПользователиКонтекстноеМеню + 274 + true + + InputField + Enter + true + Left + true + + + StartChoice + ПользователиНачалоВыбора + + + Opening + ПользователиОткрытие + + true + true + true + true + true + true + Normal + + + + Добавил + 256 + true + true + + true + + + Объект.Добавил + + + ДобавилРасширеннаяПодсказка + 258 + Label + true + true + + Left + + + + ДобавилКонтекстноеМеню + 257 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Пользователи</value> + + + ГруппаПользователиРасширеннаяПодсказка + 294 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + + true true true - - Объект.Организация - + + <key>ru</key> + <value>Реквизиты сертификата</value> + - ОрганизацияРасширеннаяПодсказка - 170 + ГруппаРеквизитыСертификатаРасширеннаяПодсказка + 301 Label true true @@ -736,115 +1158,14 @@ Left - - ОрганизацияКонтекстноеМеню - 169 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - true - true - Normal - DontUse - - - - Пользователи - 273 - true - true - - true - - - ПредставлениеПользователей - - - ПользователиРасширеннаяПодсказка - 275 - Label - true - true - - Left - - - - ПользователиКонтекстноеМеню - 274 - true - - InputField - Enter - true - Left - true - - - StartChoice - ПользователиНачалоВыбора - - - Opening - ПользователиОткрытие - - true - true - true - true - true - Normal - - - - Добавил - 256 - true - true - - true - - - Объект.Добавил - - - ДобавилРасширеннаяПодсказка - 258 - Label - true - true - - Left - - - - ДобавилКонтекстноеМеню - 257 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - true - Normal + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto true @@ -917,6 +1238,7 @@ true true + true true false true @@ -927,7 +1249,7 @@ - УсиленнаяЗащитаЗакрытогоКлюча + ВводитьПарольВПрограммеЭлектроннойПодписи 158 true true @@ -935,12 +1257,12 @@ true - Объект.УсиленнаяЗащитаЗакрытогоКлюча + Объект.ВводитьПарольВПрограммеЭлектроннойПодписи Right Button - УсиленнаяЗащитаЗакрытогоКлючаРасширеннаяПодсказка + ВводитьПарольВПрограммеЭлектроннойПодписиРасширеннаяПодсказка 160 Label true @@ -950,11 +1272,12 @@ - УсиленнаяЗащитаЗакрытогоКлючаКонтекстноеМеню + ВводитьПарольВПрограммеЭлектроннойПодписиКонтекстноеМеню 159 true CheckBoxField + Right Enter true Left @@ -1000,7 +1323,6 @@ ru Горизонтальная группа 1 - false ГоризонтальнаяГруппа1РасширеннаяПодсказка 211 @@ -1550,7 +1872,7 @@ ПредставлениеПользователей <key>ru</key> - <value>Пользователи</value> + <value>Используют</value> 12 @@ -1564,6 +1886,53 @@ true + + НапомнитьОПеревыпуске + + <key>ru</key> + <value>Напомнить о перевыпуске</value> + + 13 + + Boolean + + + true + + + true + + + + ТекущаяДата + 16 + + String + + + + true + + + true + + + + ВыпущенныеСертификаты + 17 + + ValueList + + + true + + + true + + + + + СертификатОтозван diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl index 21549b722..b87295d1c 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl @@ -12,7 +12,7 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЭлектроннаяПодписьСлужебный.НастроитьПояснениеВводаПароля(ЭтотОбъект, - Элементы.УсиленнаяЗащитаЗакрытогоКлюча.Имя); + Элементы.ВводитьПарольВПрограммеЭлектроннойПодписи.Имя); СертификатОблачнойПодписи = ИнформацияОблачнойПодписи(Объект.Программа); ЗаполнитьСписокПрограммСервер(); @@ -34,10 +34,13 @@ Объект, ОткрытьЗаявление); ИмяФормыЗаявления = "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Форма"; ВозможноОткрытьЗаявление = Истина; + Если НЕ ОткрытьЗаявление Тогда + ВыпущенныеСертификаты = ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ВыпущенныеСертификаты(Объект.Ссылка); + КонецЕсли; КонецЕсли; ПрограммаОблачногоСервиса = ЭлектроннаяПодписьСлужебный.ПрограммаОблачногоСервиса(); - ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(ЭтотОбъект); + ОбновитьВидимостьЭлементаВводитьПарольВПрограммеЭлектроннойПодписи(ЭтотОбъект); ЕстьОрганизации = Не Метаданные.ОпределяемыеТипы.Организация.Тип.СодержитТип(Тип("Строка")); ПриСозданииНаСервереПриЧтенииНаСервере(); @@ -46,6 +49,11 @@ СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "НестандартныйСертификат"); КонецЕсли; + Если Не ПравоДоступа("Добавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования) Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "ФормаСкопировать", "Видимость", Ложь); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -66,6 +74,8 @@ ОформитьСписокПользователей(); + ПодключитьОбработчикОжидания("ОбработчикОжиданияПоказатьСостояниеСертификата", 0.1, Истина); + КонецПроцедуры &НаСервере @@ -87,9 +97,9 @@ &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) - ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); Если ПараметрыЗаписи.ЭтоНовый Тогда - ДополнительныеПараметры.Вставить("ЭтоНовый"); + ДополнительныеПараметры.ЭтоНовый = Истина; КонецЕсли; Оповестить("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования", ДополнительныеПараметры, Объект.Ссылка); @@ -99,9 +109,19 @@ &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) - Если ИмяСобытия = "Запись_ПрограммыЭлектроннойПодписиИШифрования" - ИЛИ ИмяСобытия = "Запись_УчетнойЗаписиDSS" Тогда + Если ИмяСобытия = "Запись_ПрограммыЭлектроннойПодписиИШифрования" Или ИмяСобытия = "Запись_УчетнойЗаписиDSS" Тогда ЗаполнитьСписокПрограммСервер(); + Возврат; + КонецЕсли; + + Если ИмяСобытия = "Запись_СертификатыКлючейЭлектроннойПодписиИШифрования" И Источник = Объект.Ссылка Тогда + Если Параметр.Количество() = 0 Тогда + Возврат; + КонецЕсли; + Если Параметр.Установлен Тогда + ПодключитьОбработчикОжидания("ОбработчикОжиданияПоказатьСостояниеСертификата", 0.1, Истина); + КонецЕсли; + Возврат; КонецЕсли; КонецПроцедуры @@ -145,7 +165,7 @@ &НаКлиенте Процедура ПрограммаПриИзменении(Элемент) - ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(ЭтотОбъект); + ОбновитьВидимостьЭлементаВводитьПарольВПрограммеЭлектроннойПодписи(ЭтотОбъект); КонецПроцедуры @@ -165,6 +185,26 @@ КонецПроцедуры +&НаКлиенте +Процедура НапомнитьОПеревыпускеПриИзменении(Элемент) + + ЭлектроннаяПодписьСлужебныйКлиент.ИзменитьОтметкуОНапоминании(Объект.Ссылка, НапомнитьОПеревыпуске, ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияПеревыпущенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Если ВыпущенныеСертификаты.Количество() = 1 Тогда + ОткрытьСертификатПослеВыбораИзСписка(ВыпущенныеСертификаты[0], Неопределено); + Иначе + ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьСертификатПослеВыбораИзСписка", ЭтотОбъект, Элемент); + ПоказатьВыборИзСписка(ОписаниеОповещения, ВыпущенныеСертификаты); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -389,6 +429,22 @@ Элементы.ФормаПоказатьАвтозаполняемыеРеквизиты.Пометка = Элементы.АвтоПоляИзДанныхСертификата.Видимость; + Если Не ОткрытьЗаявление Тогда + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); + Элементы.СостояниеСертификатаГруппа.Видимость = Ложь; + СертификатыВЛичномХранилище = Новый СписокЗначений; + ЭлектроннаяПодписьСлужебный.ДополнитьСписокСертификатовВЛичномХранилищеНаСервере(СертификатыВЛичномХранилище); + Если СертификатыВЛичномХранилище.НайтиПоЗначению(Объект.Отпечаток) <> Неопределено Тогда + ВключитьВидимостьСостоянияСертификата(ЭтотОбъект, ТекущаяУниверсальнаяДата()); + КонецЕсли; + Если ЭлектроннаяПодпись.УправлениеОповещениямиОСертификатах() Тогда + Элементы.НапомнитьОПеревыпуске.Видимость = Истина; + НапомнитьОПеревыпуске = РегистрыСведений.ОповещенияПользователейСертификатов.ПрочитатьОтметкуОНапоминании(Объект.Ссылка); + Иначе + Элементы.НапомнитьОПеревыпуске.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -413,15 +469,52 @@ Если ВозможноОткрытьЗаявление Тогда ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("СертификатСсылка", Объект.Ссылка); - ОткрытьФорму(ИмяФормыЗаявления, ПараметрыФормы); + Оповещение = Новый ОписаниеОповещения("ОповещениеОЗакрытииЗаявления", ЭтотОбъект); + ОткрытьФорму(ИмяФормыЗаявления, ПараметрыФормы,,,,, Оповещение); КонецЕсли; КонецПроцедуры -&НаКлиентеНаСервереБезКонтекста -Процедура ОбновитьВидимостьЭлементаУсиленнаяЗащитаЗакрытогоКлюча(Форма) +&НаКлиенте +Процедура ОповещениеОЗакрытииЗаявления(Результат, ДополнительныеПараметры) Экспорт - Форма.Элементы.УсиленнаяЗащитаЗакрытогоКлюча.Видимость = + Если Результат <> Неопределено И Результат.Добавлен И Не ЭтотОбъект.Открыта() Тогда + ОткрытьЗаявление = Ложь; + СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Истина); + ПриСозданииНаСервереПриЧтенииНаСервере(); + ЭтотОбъект.Открыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработчикОжиданияПоказатьСостояниеСертификата() + + Если Элементы.СостояниеСертификатаГруппа.Видимость = Истина Тогда + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения( + "ВидимостьСостоянияСертификатаПослеПолученияСертификатовВЛичномХранилище", ЭтотОбъект); + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте( + Оповещение, Истина, Истина, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьСертификатПослеВыбораИзСписка(Результат, ДополнительныеПараметры) Экспорт + + Если Результат <> Неопределено Тогда + ОткрытьФорму("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Форма.ФормаЭлемента", + Новый Структура("Ключ", Результат.Значение)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьВидимостьЭлементаВводитьПарольВПрограммеЭлектроннойПодписи(Форма) + + Форма.Элементы.ВводитьПарольВПрограммеЭлектроннойПодписи.Видимость = Форма.Объект.Программа <> Форма.ПрограммаОблачногоСервиса И НЕ Форма.СертификатОблачнойПодписи.ОблачнаяПодпись; @@ -436,12 +529,12 @@ Если КоличествоПользователей = 1 Тогда ПредставлениеПользователей = СокрЛП(Объект.Пользователи[0].Пользователь); ИначеЕсли КоличествоПользователей > 1 Тогда - ПредставлениеПользователей = НСтр("ru = 'Несколько пользователей'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()) - + " (" + Формат(КоличествоПользователей, "ЧГ=0") + ")"; + ПредставлениеПользователей = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПользователиСертификатаСтрокой( + Объект.Пользователи[0].Пользователь, Объект.Пользователи[1].Пользователь, КоличествоПользователей); ИначеЕсли ЗначениеЗаполнено(Объект.Пользователь) Тогда ПредставлениеПользователей = СокрЛП(Объект.Пользователь); Иначе - ПредставлениеПользователей = НСтр("ru = 'Не указаны'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()); + ПредставлениеПользователей = НСтр("ru = 'Не указаны'"); КонецЕсли; КонецПроцедуры @@ -459,6 +552,40 @@ КонецПроцедуры +&НаКлиенте +Процедура ВидимостьСостоянияСертификатаПослеПолученияСертификатовВЛичномХранилище(Результат, ДополнительныеПараметры) Экспорт + + Для Каждого КлючИЗначение Из Результат.СвойстваСертификатовНаКлиенте Цикл + Если КлючИЗначение.Ключ = Объект.Отпечаток Тогда + ВключитьВидимостьСостоянияСертификата(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаУниверсальная()); + Возврат; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ВключитьВидимостьСостоянияСертификата(Форма, ТекущаяДата) + + Форма.Элементы.СостояниеСертификатаГруппа.Видимость = Истина; + + Если Форма.Объект.ДействителенДо < ТекущаяДата Тогда + Форма.Элементы.КартинкаСертификата.Картинка = БиблиотекаКартинок.СертификатПросрочен; + Форма.Элементы.СостояниеСертификата.Заголовок = НСтр("ru = 'Сертификат просрочен'"); + ИначеЕсли Форма.Объект.ДействителенДо <= ТекущаяДата + 30*24*60*60 Тогда + Форма.Элементы.КартинкаСертификата.Картинка = БиблиотекаКартинок.СрокДействияСертификатаЗаканчивается; + Форма.Элементы.СостояниеСертификата.Заголовок = НСтр("ru = 'Срок действия сертификата скоро закончится'"); + Иначе + Форма.Элементы.КартинкаСертификата.Картинка = БиблиотекаКартинок.СертификатВЛичномХранилище; + Форма.Элементы.СостояниеСертификата.Заголовок = НСтр("ru = 'Сертификат в личном хранилище'"); + КонецЕсли; + + Если Форма.ВыпущенныеСертификаты.Количество() > 0 Тогда + Форма.Элементы.ДекорацияПеревыпущен.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПослеСменыПинКода(РезультатВызова, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Form.form index c03eb6489..7e293b912 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Form.form @@ -1306,7 +1306,7 @@ </columns> </attributes> <attributes> - <name>СертификатУсиленнаяЗащитаЗакрытогоКлюча</name> + <name>СертификатВводитьПарольВПрограммеЭлектроннойПодписи</name> <id>8</id> <valueType> <types>Boolean</types> diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl index 6caf327fd..2f5e930e5 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl @@ -37,7 +37,7 @@ НеРедактируемыеРеквизиты.Добавить("ДанныеСертификата"); НеРедактируемыеРеквизиты.Добавить("Программа"); НеРедактируемыеРеквизиты.Добавить("Отозван"); - НеРедактируемыеРеквизиты.Добавить("УсиленнаяЗащитаЗакрытогоКлюча"); + НеРедактируемыеРеквизиты.Добавить("ВводитьПарольВПрограммеЭлектроннойПодписи"); НеРедактируемыеРеквизиты.Добавить("Организация"); НеРедактируемыеРеквизиты.Добавить("Пользователь"); НеРедактируемыеРеквизиты.Добавить("Добавил"); @@ -74,4 +74,177 @@ #КонецОбласти +#Область СлужебныйПрограммныйИнтерфейс + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления. + +// Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, +// для которых необходимо обновить записи в регистре. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка, + | КОЛИЧЕСТВО(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь) КАК Пользователь + |ПОМЕСТИТЬ ОдинПользовательВТабличнойЧасти + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи + |СГРУППИРОВАТЬ ПО + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка + |ИМЕЮЩИЕ + | КОЛИЧЕСТВО(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь) = 1 + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка КАК Ссылка + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | ЛЕВОЕ СОЕДИНЕНИЕ ОдинПользовательВТабличнойЧасти КАК ОдинПользовательВТабличнойЧасти + | ПО СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка = ОдинПользовательВТабличнойЧасти.Ссылка + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.УдалитьПользовательОповещенОСрокеДействия + | ИЛИ &УсловиеЗаявления + | ИЛИ НЕ ОдинПользовательВТабличнойЧасти.Ссылка ЕСТЬ NULL"; + + + Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеЗаявления", + "СертификатыКлючейЭлектроннойПодписиИШифрования.УдалитьСостояниеЗаявления <> &ПустаяСсылка"); + Запрос.УстановитьПараметр("ПустаяСсылка", Перечисления.СостоянияЗаявленияНаВыпускСертификата.ПустаяСсылка()); + Иначе + Запрос.Текст = СтрЗаменить(Запрос.Текст, "ИЛИ &УсловиеЗаявления", ""); + КонецЕсли; + + МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + +КонецПроцедуры + +// Добавить записи регистра. +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, + "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + Если Выборка.Количество() > 0 Тогда + ОбработатьЗаявленияИОповещенияСертификатов(Выборка); + КонецЕсли; + + ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, + "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + Параметры.ОбработкаЗавершена = ОбработкаЗавершена; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ОбработатьЗаявленияИОповещенияСертификатов(Выборка) + + ОбъектовОбработано = 0; + ПроблемныхОбъектов = 0; + + ЗаявлениеНаВыпускСертификатаДоступно = ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно; + + Если ЗаявлениеНаВыпускСертификатаДоступно Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + КонецЕсли; + + Пока Выборка.Следующий() Цикл + + НачатьТранзакцию(); + Попытка + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + Блокировка.Заблокировать(); + + СертификатОбъект = Выборка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.СертификатыКлючейЭлектроннойПодписиИШифрования + + // Перенос оповещений о необходимости замены сертификата в регистр сведений. + Если СертификатОбъект.УдалитьПользовательОповещенОСрокеДействия Тогда + НаборЗаписейОповещений = РегистрыСведений.ОповещенияПользователейСертификатов.СоздатьНаборЗаписей(); + НаборЗаписейОповещений.Отбор.Сертификат.Установить(Выборка.Ссылка); + + Если СертификатОбъект.Пользователи.Количество() > 0 Тогда + Для Каждого СтрокаПользователь Из СертификатОбъект.Пользователи Цикл + ЗаписьНабораОповещений = НаборЗаписейОповещений.Добавить(); + ЗаписьНабораОповещений.Сертификат = Выборка.Ссылка; + ЗаписьНабораОповещений.Пользователь = СтрокаПользователь.Пользователь; + ЗаписьНабораОповещений.Оповещен = Истина; + КонецЦикла; + ИначеЕсли ЗначениеЗаполнено(СертификатОбъект.Пользователь) Тогда + ЗаписьНабораОповещений = НаборЗаписейОповещений.Добавить(); + ЗаписьНабораОповещений.Сертификат = Выборка.Ссылка; + ЗаписьНабораОповещений.Пользователь = СертификатОбъект.Пользователь; + ЗаписьНабораОповещений.Оповещен = Истина; + КонецЕсли; + Если НаборЗаписейОповещений.Количество() > 0 Тогда + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписейОповещений, Истина); + КонецЕсли; + СертификатОбъект.УдалитьПользовательОповещенОСрокеДействия = Ложь; + КонецЕсли; + + // Перенос данных заявлений в регистр сведений. + Если ЗаявлениеНаВыпускСертификатаДоступно + И ЗначениеЗаполнено(СертификатОбъект.УдалитьСостояниеЗаявления) Тогда + + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ОбработатьДанныеДляПереходаНаНовуюВерсию( + СертификатОбъект); + + КонецЕсли; + + Если СертификатОбъект.Пользователи.Количество() = 1 Тогда + СертификатОбъект.Пользователь = СертификатОбъект.Пользователи[0].Пользователь; + СертификатОбъект.Пользователи.Очистить(); + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СертификатОбъект); + + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + + Исключение + + ОтменитьТранзакцию(); + // Если не удалось обработать какой-либо сертификат, повторяем попытку снова. + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать сертификат: %1 по причине: + |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Предупреждение, Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); + + КонецПопытки; + + КонецЦикла; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать некоторые сертификаты (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, Метаданные.НайтиПоПолномуИмени( + "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"), , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция сертификатов: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + #КонецЕсли diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ObjectModule.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ObjectModule.bsl index f22ff308c..a72ea38da 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ObjectModule.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ObjectModule.bsl @@ -33,6 +33,8 @@ Если Программа = Неопределено Тогда Программа = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПустаяСсылка(); КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); КонецПроцедуры diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/СертификатыКлючейЭлектроннойПодписиИШифрования.mdo b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/СертификатыКлючейЭлектроннойПодписиИШифрования.mdo index 1dbf4dbb2..c4c28d793 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/СертификатыКлючейЭлектроннойПодписиИШифрования.mdo +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/СертификатыКлючейЭлектроннойПодписиИШифрования.mdo @@ -428,20 +428,21 @@ <dataHistory>Use</dataHistory> </attributes> <attributes uuid="57aed64d-da61-4c18-af21-dab3afdc5c03"> - <name>УсиленнаяЗащитаЗакрытогоКлюча</name> + <name>ВводитьПарольВПрограммеЭлектроннойПодписи</name> <synonym> <key>ru</key> - <value>Усиленная защита закрытого ключа</value> + <value>Вводить пароль в программе электронной подписи</value> </synonym> <type> <types>Boolean</types> </type> <toolTip> <key>ru</key> - <value>Передавать пустой пароль к закрытому ключу сертификата из 1С:Предприятия, -так как он будет вводиться в отдельном окне программой электронной подписи и шифрования. + <value>- Включается интерактивный режим работы программы электронной подписи, + при котором она запрашивает пароль и позволяет его сохранить. +- Отключается запрос пароля в форме 1С:Предприятия. -Только для закрытых ключей сертификатов, для которых в ОС включена усиленная защита.</value> +Обязательно для закрытых ключей сертификатов, для которых в ОС включена усиленная защита.</value> </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> @@ -468,6 +469,25 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="e1132cbb-7045-47e2-bbc7-6e92e4dff131"> + <name>ФизическоеЛицо</name> + <synonym> + <key>ru</key> + <value>Физическое лицо</value> + </synonym> + <type> + <types>DefinedType.ФизическоеЛицо</types> + </type> + <toolTip> + <key>ru</key> + <value>Физическое лицо, которому выдан сертификат</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <attributes uuid="62a71ba7-3226-4d10-8cc9-ac9908a00ae7"> <name>Пользователь</name> <synonym> @@ -488,25 +508,6 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="6ce1d71d-7548-4ee7-be78-21ae23d5a08d"> - <name>ПользовательОповещенОСрокеДействия</name> - <synonym> - <key>ru</key> - <value>Пользователь оповещен о сроке действия</value> - </synonym> - <type> - <types>Boolean</types> - </type> - <toolTip> - <key>ru</key> - <value>Пользователь оповещен о скором окончании -срока действия своего сертификата.</value> - </toolTip> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <fillValue xsi:type="core:UndefinedValue"/> - <dataHistory>Use</dataHistory> - </attributes> <attributes uuid="f5ad6743-b19b-44c4-b3d1-2e39d74a4abd"> <name>Добавил</name> <synonym> @@ -525,11 +526,31 @@ <fillValue xsi:type="core:UndefinedValue"/> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d"> - <name>СостояниеЗаявления</name> + <attributes uuid="85d7ea13-c521-44b8-9dce-5e57529a21db"> + <name>ДатаПолученияСертификата</name> <synonym> <key>ru</key> - <value>Состояние заявления</value> + <value>Дата получения сертификата</value> + </synonym> + <type> + <types>Date</types> + <dateQualifiers/> + </type> + <toolTip> + <key>ru</key> + <value>Дата получения сертификата по заявлению на выпуск квалифицированного сертификата. Если заявление отправлено, равна 31.12.3999 23:59:59.</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d"> + <name>УдалитьСостояниеЗаявления</name> + <synonym> + <key>ru</key> + <value>(Не используется) Состояние заявления</value> </synonym> <type> <types>EnumRef.СостоянияЗаявленияНаВыпускСертификата</types> @@ -545,11 +566,30 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> - <attributes uuid="19b29d30-e395-42f2-b700-7474bb2cdcb7"> - <name>СодержаниеЗаявления</name> + <attributes uuid="6ce1d71d-7548-4ee7-be78-21ae23d5a08d"> + <name>УдалитьПользовательОповещенОСрокеДействия</name> <synonym> <key>ru</key> - <value>Содержание заявления</value> + <value>(Не используется) Пользователь оповещен о сроке действия</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <toolTip> + <key>ru</key> + <value>Пользователь оповещен о скором окончании +срока действия своего сертификата.</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <dataHistory>Use</dataHistory> + </attributes> + <attributes uuid="19b29d30-e395-42f2-b700-7474bb2cdcb7"> + <name>УдалитьСодержаниеЗаявления</name> + <synonym> + <key>ru</key> + <value>(не используется) Содержание заявления</value> </synonym> <type> <types>ValueStorage</types> @@ -594,6 +634,7 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> <dataHistory>Use</dataHistory> + <indexing>Index</indexing> <fullTextSearch>Use</fullTextSearch> </attributes> </tabularSections> diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl index fc57469a4..ff409c1f7 100644 --- a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl @@ -79,7 +79,7 @@ КонецПроцедуры -// Заполнить значение служебного реквизита РеквизитДопУпорядочивания у справочника Состояния оригиналов первичных документов. +// Заполнить значение служебного реквизита РеквизитДопУпорядочивания у справочника СостоянияОригиналовПервичныхДокументов. // Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт @@ -126,7 +126,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать состояние: %1 по причине: + НСтр("ru = 'Не удалось обработать %1 по причине: |%2'"), СостояниеИзм.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -138,13 +138,14 @@ Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.СостоянияОригиналовПервичныхДокументов"); Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ЗаполнитьРеквизитРеквизитДопУпорядочивания не удалось обработать некоторые состояния (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые состояния оригиналов первичных документов (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.СостоянияОригиналовПервичныхДокументов,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитРеквизитДопУпорядочивания обработала очередную порцию состояний оригиналов: %1'"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция состояния оригиналов первичных документов: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl index bee98f10b..0a1289160 100644 --- a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl +++ b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl @@ -280,8 +280,9 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать страну: %1 по причине: %2'"), - СтранаМираСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + НСтр("ru = 'Не удалось обработать страну %1 по причине: + |%2'"), + СтранаМираСсылка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.Справочники.СтраныМира, СтранаМираСсылка.Ссылка, ТекстСообщения); КонецПопытки; @@ -291,14 +292,14 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые страны мира(пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать некоторые страны мира (пропущены): %1'"), + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.СтраныМира,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию стран мира: %1'"), - ОбъектовОбработано)); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию стран мира: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl index 413b04851..ac9e0789e 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl @@ -199,7 +199,8 @@ ТекущиеДанные = Элементы.СоставРасписания.ТекущиеДанные; - Если ТекущиеДанные = Неопределено Тогда + Если ТекущиеДанные = Неопределено + Или Не ЗначениеЗаполнено(ТекущиеДанные.УзелИнформационнойБазы) Тогда Возврат; КонецЕсли; diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl index 73cbead68..2f91f5e2c 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl @@ -192,7 +192,7 @@ Процедура Далее(Команда) - ПерейтиНаСледующуюСтраницу(); + ПерейтиНаСледующуюСтраницу(Команда); КонецПроцедуры @@ -247,7 +247,7 @@ КонецПроцедуры &НаКлиенте -Процедура ПерейтиНаСледующуюСтраницу() +Процедура ПерейтиНаСледующуюСтраницу(Команда = Неопределено) Отказ = Ложь; ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; @@ -270,8 +270,16 @@ ИначеЕсли ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Тогда + ПроверкаПропущена = Команда <> Неопределено; + Если ПроверкаПропущена Тогда + ОтменитьВыполнениеЗадания(ИдентификаторЗадания); + ИдентификаторЗадания = ""; + КонецЕсли; Если ПроверкаЗавершиласьСОшибками Тогда СледующаяСтраница = Элементы.НастройкаУчетнойЗаписи; + ИначеЕсли ПроверкаПропущена И СпособНастройки = "Автоматически" Тогда + СпособНастройки = "Вручную"; + СледующаяСтраница = Элементы.НастройкаСервераИсходящейПочты; Иначе СледующаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена; КонецЕсли; @@ -407,13 +415,14 @@ Иначе ЗаголовокКнопкиДалее = НСтр("ru = 'Создать'"); КонецЕсли; + ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Тогда + ЗаголовокКнопкиДалее = НСтр("ru = 'Пропустить проверку'"); Иначе ЗаголовокКнопкиДалее = НСтр("ru = 'Далее >'"); КонецЕсли; КонецЕсли; Элементы.КнопкаДалее.Заголовок = ЗаголовокКнопкиДалее; - Элементы.КнопкаДалее.Доступность = ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; - Элементы.КнопкаДалее.Видимость = ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; + Элементы.КнопкаДалее.КнопкаПоУмолчанию =ТекущаяСтраница <> Элементы.ПроверкаНастроекУчетнойЗаписи; // КнопкаНазад Элементы.КнопкаНазад.Видимость = ТекущаяСтраница <> Элементы.НастройкаУчетнойЗаписи @@ -432,6 +441,7 @@ Иначе Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Настроить вручную'"); КонецЕсли; + Если ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи Тогда Элементы.НеУдалосьПодключитьсяКартинкаИНадпись.Видимость = ПроверкаЗавершиласьСОшибками; @@ -671,6 +681,7 @@ ПроверкаЗавершиласьСОшибками = Ложь; ДлительнаяОперация = НачатьПоискНастроекУчетнойЗаписи(); + ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания; ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); ПараметрыОжидания.ВыводитьОкноОжидания = Ложь; @@ -738,4 +749,11 @@ КонецПроцедуры +&НаСервереБезКонтекста +Процедура ОтменитьВыполнениеЗадания(ИдентификаторЗадания) + Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда + ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); + КонецЕсли; +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form index d80eb1bab..b7f56b19f 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form @@ -101,44 +101,76 @@ <items xsi:type="form:FormGroup"> <name>ПриПроверкеОбнаруженыОшибки</name> <id>3</id> - <items xsi:type="form:Decoration"> - <name>КартинкаПредупреждение</name> - <id>13</id> - <title> - <key>ru</key> - <value>Картинка вопрос</value> - - true - true - - true - - - КартинкаПредупреждениеРасширеннаяПодсказка - 15 - Label + + ГруппаОписаниеОшибки + 202 + + КартинкаПредупреждение + 13 + + <key>ru</key> + <value>Картинка вопрос</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню + 14 + true + true true - - Left + + + CommonPicture.Предупреждение32 + - - - КартинкаПредупреждениеКонтекстноеМеню - 14 - true - - true - true - - - CommonPicture.Предупреждение32 - - - - - ГруппаСообщенияОбОшибках - 16 + + + ГруппаСообщенияОбОшибках + 16 + true + true + + true + + + <key>ru</key> + <value>Сообщения об ошибках</value> + + + ГруппаСообщенияОбОшибкахРасширеннаяПодсказка + 17 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + СообщенияОбОшибках 18 @@ -174,9 +206,9 @@ true 40 - 7 + 2 true - true + false true true true @@ -191,12 +223,190 @@ Normal + true + true + + true + + + <key>ru</key> + <value>Описание ошибки</value> + + + ГруппаОписаниеОшибкиРасширеннаяПодсказка + 203 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ГруппаВозможныеПричины + 184 + + ДекорацияВозможныеПричины + 266 + + <key>ru</key> + <value>Декорация возможные причины</value> + + true + true + + true + + + ДекорацияВозможныеПричиныРасширеннаяПодсказка + 268 + Label + true + true + + Left + + + + ДекорацияВозможныеПричиныКонтекстноеМеню + 267 + true + + Label + true + true + + + URLProcessing + СпособыУстраненияОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Возможные причины</value> + + + ГруппаВозможныеПричиныРасширеннаяПодсказка + 185 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + Button + NormalSeparation + true + true + auto + Auto + Auto + + + + ГруппаСпособыУстранения + 186 + + ДекорацияСпособыУстранения + 269 + + <key>ru</key> + <value>Декорация способы устранения</value> + + true + true + + true + + + ДекорацияСпособыУстраненияРасширеннаяПодсказка + 271 + Label + true + true + + Left + + + + ДекорацияСпособыУстраненияКонтекстноеМеню + 270 + true + + Label + true + true + + + URLProcessing + СпособыУстраненияОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Способы устранения</value> + + + ГруппаСпособыУстраненияРасширеннаяПодсказка + 187 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + Button + NormalSeparation + true + true + auto + Auto + Auto + + + + ГруппаДополнительныеСсылки + 210 НужнаПомощь 21 <key>ru</key> - <value>Нужна помощь?</value> + <value>Рекомендации по решению типовых проблем</value> true true @@ -231,6 +441,45 @@ Left + + СсылкаИнформацияДляТехподдержки + 212 + + <key>ru</key> + <value>Информация для техподдержки</value> + + true + true + + true + + + СсылкаИнформацияДляТехподдержкиРасширеннаяПодсказка + 214 + Label + true + true + + Left + + + + СсылкаИнформацияДляТехподдержкиКонтекстноеМеню + 213 + true + + Label + true + true + + + Click + СсылкаИнформацияДляТехподдержкиНажатие + + true + Left + + true true @@ -238,11 +487,12 @@ <key>ru</key> - <value>Сообщения об ошибках</value> + <value>Дополнительные ссылки</value> + true - ГруппаСообщенияОбОшибкахРасширеннаяПодсказка - 17 + ГруппаДополнительныеСсылкиРасширеннаяПодсказка + 211 Label true true @@ -252,8 +502,10 @@ UsualGroup - Vertical + HorizontalIfPossible + Bottom Auto + NormalSeparation true true Auto @@ -281,7 +533,7 @@
Page - AlwaysHorizontal + Vertical auto false @@ -457,6 +709,186 @@ false + + СтраницаИнформацияДляТехподдержки + 215 + + ГруппаОписаниеОшибки1 + 217 + + КартинкаПредупреждение1 + 219 + + <key>ru</key> + <value>Картинка вопрос</value> + + true + true + + true + + + КартинкаПредупреждение1РасширеннаяПодсказка + 221 + Label + true + true + + Left + + + + КартинкаПредупреждение1КонтекстноеМеню + 220 + true + + true + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаСообщенияОбОшибках1 + 222 + + ТекстИнформацияДляТехподдержки + 224 + true + true + + true + + + ИнформацияДляТехподдержки + + None + + ТекстИнформацияДляТехподдержкиРасширеннаяПодсказка + 226 + Label + true + true + + Left + + + + ТекстИнформацияДляТехподдержкиКонтекстноеМеню + 225 + true + + InputField + true + Enter + true + Left + true + + 40 + 2 + true + true + true + true + true + true + true + + Style.FormBackColor + + + Style.FormBackColor + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Сообщения об ошибках</value> + + + ГруппаСообщенияОбОшибках1РасширеннаяПодсказка + 223 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа описание ошибки</value> + + + ГруппаОписаниеОшибки1РасширеннаяПодсказка + 218 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>При проверке обнаружены ошибки</value> + + + СтраницаИнформацияДляТехподдержкиРасширеннаяПодсказка + 216 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + true true @@ -486,6 +918,58 @@ ФормаКоманднаяПанель -1 + + ФормаНазад + 253 + true + true + + true + + + ФормаНазадРасширеннаяПодсказка + 254 + Label + true + true + + Left + + + Form.Command.Назад + Normal + Auto + true + true + UserCmds + Auto + + + ФормаПерейтиКНастройкам + 200 + true + true + + true + + + ФормаПерейтиКНастройкамРасширеннаяПодсказка + 201 + Label + true + true + + Left + + + Form.Command.ПерейтиКНастройкам + Normal + Auto + true + true + UserCmds + Auto + ФормаЗакрыть 179 @@ -580,6 +1064,128 @@ true + + ВозможныеПричины + 3 + + FormattedString + + + true + + + true + + + + СпособыУстранения + 4 + + FormattedString + + + true + + + true + + + + ИнформацияДляТехподдержки + + <key>ru</key> + <value>Информация для техподдержки</value> + + 5 + + String + + + + true + + + true + + + + ИдентификаторИсправления + 7 + + String + + + + true + + + true + + + + ВозможныеПричиныТекст + 6 + + String + + + + true + + + true + + + + СпособыУстраненияТекст + 8 + + String + + + + true + + + true + + + + ПерейтиКНастройкам + + <key>ru</key> + <value>Перейти к настройкам</value> + + 1 + + true + + + + ПерейтиКНастройкам + + + Auto + Auto + + + Назад + + <key>ru</key> + <value>< Назад</value> + + 3 + + true + + + + Назад + + + Auto + Auto + УчетнаяЗапись @@ -587,6 +1193,21 @@ true + + ТекстОшибки + + String + + + + + Заголовок + + String + + + true + diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Module.bsl index f1a86efc9..6ea854c97 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Module.bsl @@ -11,14 +11,47 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Элементы.Страницы.ТекущаяСтраница = Элементы.ВыполняетсяПроверкаНастроек; - Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Отмена'"); + СообщенияОбОшибках = Параметры.ТекстОшибки; + Если ЗначениеЗаполнено(СообщенияОбОшибках) Тогда + Заголовок = Параметры.Заголовок; + АвтоЗаголовок = Ложь; + Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + ЗаполнитьПояснения(); + УстановитьКлючСохраненияПоложенияОкна(); + Иначе + Элементы.Страницы.ТекущаяСтраница = Элементы.ВыполняетсяПроверкаНастроек; + Элементы.ФормаЗакрыть.Заголовок = НСтр("ru = 'Отмена'"); + Элементы.ФормаПерейтиКНастройкам.Видимость = Ложь; + КонецЕсли; + + Элементы.ФормаНазад.Видимость = Ложь; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) - ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина) + + Если Не ЗначениеЗаполнено(СообщенияОбОшибках) Тогда + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКНастройкам(Команда) + + ПерейтиКНастройкамПочты(); + +КонецПроцедуры + +&НаКлиенте +Процедура Назад(Команда) + + Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + Заголовок = Параметры.Заголовок; + АвтоЗаголовок = Ложь; + Элементы.ФормаНазад.Видимость = Ложь; + КонецПроцедуры #КонецОбласти @@ -30,6 +63,17 @@ РаботаСПочтовымиСообщениямиКлиент.ПерейтиКДокументацииПоВводуУчетнойЗаписиЭлектроннойПочты(); КонецПроцедуры +&НаКлиенте +Процедура СпособыУстраненияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиентСервер.СтруктураURI(НавигационнаяСсылкаФорматированнойСтроки).Схема = "" Тогда + СтандартнаяОбработка = Ложь; + ИдентификаторИсправления = НавигационнаяСсылкаФорматированнойСтроки; + ПерейтиКНастройкамПочты(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -43,6 +87,21 @@ ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); КонецПроцедуры +&НаКлиенте +Процедура СсылкаИнформацияДляТехподдержкиНажатие(Элемент) + + Если ЗначениеЗаполнено(ИнформацияДляТехподдержки) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаИнформацияДляТехподдержки; + Элементы.ФормаНазад.Видимость = Истина; + Иначе + Элементы.Страницы.ТекущаяСтраница = Элементы.ВыполняетсяПроверкаНастроек; + Заголовок = ""; + АвтоЗаголовок = Истина; + ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); + КонецЕсли; + +КонецПроцедуры + &НаСервере Функция НачатьВыполнениеНаСервере() ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор); @@ -64,14 +123,58 @@ КонецЕсли; РезультатПроверки = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); - СообщенияОбОшибках = РезультатПроверки.ОшибкиПодключения; + + ИнформацияДляТехподдержки = РезультатПроверки.ОшибкиПодключения; ВыполненныеПроверки = РезультатПроверки.ВыполненныеПроверки; - Если ЗначениеЗаполнено(СообщенияОбОшибках) Тогда - Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + + Если ЗначениеЗаполнено(ИнформацияДляТехподдержки) Тогда + Если ЗначениеЗаполнено(СообщенияОбОшибках) Тогда + Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаИнформацияДляТехподдержки; + Элементы.ФормаНазад.Видимость = Истина; + Иначе + СообщенияОбОшибках = СтрСоединить(РезультатПроверки.ТекстыОшибок, Символы.ПС); + ЗаполнитьПояснения(); + Элементы.Страницы.ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки; + КонецЕсли; Иначе Элементы.Страницы.ТекущаяСтраница = Элементы.ПроверкаУспешноВыполнена; КонецЕсли; КонецПроцедуры +&НаСервере +Процедура ЗаполнитьПояснения() + + ПоясненияПоОшибке = РаботаСПочтовымиСообщениямиСлужебный.ПоясненияПоОшибке(СообщенияОбОшибках); + + ВозможныеПричины = РаботаСПочтовымиСообщениямиСлужебный.ФорматированныйСписок(ПоясненияПоОшибке.ВозможныеПричины); + СпособыУстранения = РаботаСПочтовымиСообщениямиСлужебный.ФорматированныйСписок(ПоясненияПоОшибке.СпособыУстранения); + + Элементы.ДекорацияВозможныеПричины.Заголовок = ВозможныеПричины; + Элементы.ДекорацияСпособыУстранения.Заголовок = СпособыУстранения; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьКлючСохраненияПоложенияОкна() + + КлючСохраненияПоложенияОкна = ОбщегоНазначения.КонтрольнаяСуммаСтрокой(Строка(ВозможныеПричины) + Строка(СпособыУстранения)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиКНастройкамПочты() + + Если ВладелецФормы <> Неопределено И ВладелецФормы.ИмяФормы = "Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ФормаЭлемента" Тогда + Закрыть(ИдентификаторИсправления); + Иначе + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("Ключ", Параметры.УчетнаяЗапись); + ПараметрыОткрытия.Вставить("ИдентификаторИсправления", ИдентификаторИсправления); + + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form index fd82623a9..4ab9704f9 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form @@ -551,9 +551,6 @@ true - - Список.Ref - Список.Ссылка diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form index bb4102227..4356788e8 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form @@ -1987,6 +1987,76 @@ true + + ЦветПодсветки + 17 + + Color + + + true + + + true + + + + НачальныйЦветЭлемента + 18 + + Color + + + true + + + true + + + + СчетчикПодсветки + 19 + + Number + + 1 + + + + true + + + true + + + + ИмяПодсвечиваемогоЭлемента + 20 + + String + + + + true + + + true + + + + ИдентификаторИсправления + 21 + + String + + + + true + + + true + + ЗаписатьИЗакрыть @@ -2059,6 +2129,13 @@ <types>Boolean</types> </valueType> </parameters> + <parameters> + <name>ИдентификаторИсправления</name> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + </parameters> <commandInterface> <navigationPanel/> <commandBar> diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl index 2b6739940..dfadd4092 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl @@ -37,6 +37,9 @@ МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); КонецЕсли; + ЦветПодсветки = ЦветаСтиля.ПоясняющийОшибкуТекст; + ИдентификаторИсправления = Параметры.ИдентификаторИсправления; + КонецПроцедуры &НаСервере @@ -111,11 +114,17 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) + УстановитьВидНастройкиХраненияПисемНаСервере(); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); КонецЕсли; + + Если ЗначениеЗаполнено(ИдентификаторИсправления) Тогда + ПоказатьСпособИсправления(ИдентификаторИсправления); + КонецЕсли; КонецПроцедуры @@ -150,6 +159,31 @@ КонецПроцедуры +&НаКлиенте +Процедура ПоказатьСпособИсправления(СпособИсправления, ДополнительныеПараметры = Неопределено) Экспорт + + Если СпособИсправления = "ВключитьИспользованиеАвторизацииSMTP" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Включите авторизацию на сервере исходящей почты.'"), + Объект.Ссылка, , "Объект.ПриОтправкеПисемТребуетсяАвторизация"); + ИначеЕсли СпособИсправления = "Перенастроить" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Для перенастройки почты нажмите на кнопку ""Перенастроить"".'"), + Объект.Ссылка); + ИначеЕсли СпособИсправления = "ИспользоватьSTARTTLSДляВходящейПочты" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Переключите шифрование на STARTTLS (для входящей почты).'"), + Объект.Ссылка, "ШифрованиеПриПолученииПочты"); + ИначеЕсли СпособИсправления = "ПерезаполнитьЛогинИПароль" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Попробуйте очистить и ввести заново логин.'"), + Объект.Ссылка, , "Объект.Пользователь"); + ИначеЕсли СпособИсправления = "ПерезаполнитьПароль" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Введите пароль.'"), + Объект.Ссылка, "Пароль"); + ИначеЕсли СпособИсправления = "ЗаполнитьАдресПочты" Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Проверьте адрес почты.'"), + Объект.Ссылка, "Объект.АдресЭлектроннойПочты"); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы @@ -533,7 +567,10 @@ Если Модифицированность Тогда Записать(Новый Структура("ПроверитьНастройки")); Иначе - РаботаСПочтовымиСообщениямиКлиент.ПроверитьНастройкиУчетнойЗаписи(Объект.Ссылка); + ОписаниеОповещения = Новый ОписаниеОповещения("ПоказатьСпособИсправления", ЭтотОбъект); + ПараметрыОткрытия = Новый Структура("УчетнаяЗапись", Объект.Ссылка); + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаНастроекУчетнойЗаписи", + ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl index 77b5b2181..0e2e8837d 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl @@ -1143,9 +1143,12 @@ ТребуетсяПроверкаНастроекИсходящейПочты = Ложь; ТребуетсяПроверкаНастроекВходящейПочты = Ложь; + ТекстыОшибок = Новый Массив; + Если ПрофильИсходящейПочты <> Неопределено Тогда ТекстОшибки = ПроверитьПодключениеКСерверуИсходящейПочты(ПрофильИсходящейПочты, АдресЭлектроннойПочты); Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ТекстыОшибок.Добавить(ТекстОшибки); ТехническиеПодробности.Добавить(ТекстОшибки); ОшибкаАутентификации = ОшибкаАутентификации(ТекстОшибки); @@ -1171,6 +1174,7 @@ Протокол = ?(ЗначениеЗаполнено(ПрофильВходящейПочты.АдресСервераIMAP), ПротоколИнтернетПочты.IMAP, ПротоколИнтернетПочты.POP3); ТекстОшибки = ПроверитьПодключениеКСерверуВходящейПочты(ПрофильВходящейПочты, Протокол); Если ЗначениеЗаполнено(ТекстОшибки) Тогда + ТекстыОшибок.Добавить(ТекстОшибки); ТехническиеПодробности.Добавить(ТекстОшибки); ОшибкаАутентификации = ОшибкаАутентификации(ТекстОшибки); @@ -1248,6 +1252,7 @@ Результат = Новый Структура; Результат.Вставить("ВыполненныеПроверки", ВыполненныеПроверки); Результат.Вставить("ОшибкиПодключения", ОшибкиПодключения); + Результат.Вставить("ТекстыОшибок", ТекстыОшибок); Возврат Результат; diff --git a/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl index fefb7d636..c1709dfbc 100644 --- a/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl +++ b/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl @@ -1195,8 +1195,8 @@ Элементы.ДекорацияДатаСинхронизации.Видимость = Истина; Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока( - НСтр("ru = 'Синхронизировано: <a href=""OpenJournal"">%1</a>'"), - Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); + НСтр("ru = 'Синхронизировано: <a href=""%1"">%2</a>'"), + "OpenJournal", Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); Иначе @@ -1368,6 +1368,7 @@ Зашифрован = ДанныеКоманд.Зашифрован; ПодписанЭП = ДанныеКоманд.ПодписанЭП; Редактирует = ДанныеКоманд.Редактирует; + АвторТекущийПользователь = ДанныеКоманд.Автор = ПользователиКлиент.АвторизованныйПользователь(); РедактируетТекущийПользователь = ДанныеКоманд.ФайлРедактируетТекущийПользователь; @@ -1379,17 +1380,17 @@ Элементы.ФормаСохранитьИзменения.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; Элементы.СписокКонтекстноеМенюСохранитьИзменения.Доступность = ИзменениеФайлов И РедактируетТекущийПользователь; - Элементы.ФормаОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе;; - Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе;; + Элементы.ФормаОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ИзменениеФайлов И ЗначениеЗаполнено(Редактирует) И Не ФайлыРедактируютсяВОблачномСервисе; Элементы.ФормаЗанять.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ ПодписанЭП И НЕ Служебный; Элементы.СписокКонтекстноеМенюЗанять.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует) И НЕ ПодписанЭП И НЕ Служебный; - Элементы.ФормаРедактировать.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И НЕ РедактируетДругой И НЕ Служебный; - Элементы.СписокКонтекстноеМенюРедактировать.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И НЕ РедактируетДругой И НЕ Служебный; - - Элементы.ФормаПеренестиВПапку.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; - Элементы.СписокКонтекстноеМенюПеренестиВПапку.Доступность = ИзменениеФайлов И НЕ ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.ФормаРедактировать.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не РедактируетДругой И Не Служебный; + Элементы.СписокКонтекстноеМенюРедактировать.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не РедактируетДругой И Не Служебный; + + Элементы.ФормаПеренестиВПапку.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; + Элементы.СписокКонтекстноеМенюПеренестиВПапку.Доступность = ИзменениеФайлов И Не ПодписанЭП И Не ФайлыРедактируютсяВОблачномСервисе; Элементы.ФормаПодписать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); Элементы.СписокКонтекстноеМенюПодписать.Доступность = ИзменениеФайлов И Не ЗначениеЗаполнено(Редактирует); diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form index 3823c71df..43858a92a 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form @@ -314,7 +314,7 @@ <id>129</id> <items xsi:type="form:Button"> <name>ФормаПодписатьФайлЭП</name> - <id>19</id> + <id>289</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -322,7 +322,7 @@ </userVisible> <extendedTooltip> <name>ФормаПодписатьФайлЭПРасширеннаяПодсказка</name> - <id>71</id> + <id>292</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -340,7 +340,7 @@ </items> <items xsi:type="form:Button"> <name>ФормаДобавитьЭПИзФайла</name> - <id>20</id> + <id>290</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -348,7 +348,7 @@ </userVisible> <extendedTooltip> <name>ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка</name> - <id>72</id> + <id>293</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -366,7 +366,7 @@ </items> <items xsi:type="form:Button"> <name>ФормаСохранитьВместеСЭП</name> - <id>21</id> + <id>291</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -374,6 +374,84 @@ </userVisible> <extendedTooltip> <name>ФормаСохранитьВместеСЭПРасширеннаяПодсказка</name> + <id>294</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.СохранитьВместеСЭП</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Button"> + <name>ФормаПодписать</name> + <id>19</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаПодписатьРасширеннаяПодсказка</name> + <id>71</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.Подписать</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Button"> + <name>ФормаДобавитьПодписьИзФайла</name> + <id>20</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаДобавитьПодписьИзФайлаРасширеннаяПодсказка</name> + <id>72</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.ДобавитьЭПИзФайла</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Button"> + <name>ФормаСохранитьВместеСПодписью</name> + <id>21</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаСохранитьВместеСПодписьюРасширеннаяПодсказка</name> <id>73</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> @@ -4475,7 +4553,6 @@ <name>ПроверитьЭП</name> </handler> </action> - <modifiesStoredData>true</modifiesStoredData> <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> @@ -4520,7 +4597,6 @@ <name>ПроверитьВсе</name> </handler> </action> - <modifiesStoredData>true</modifiesStoredData> <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl index 0762b38ce..a23c232a8 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl @@ -564,6 +564,10 @@ &НаКлиенте Процедура ПроверитьЭП(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + Если Элементы.ЭлектронныеПодписи.ВыделенныеСтроки.Количество() = 0 Тогда Возврат; КонецЕсли; @@ -574,15 +578,27 @@ ДанныеФайла.СсылкаНаДвоичныеДанныеФайла, Элементы.ЭлектронныеПодписи.ВыделенныеСтроки); + Если Элементы.ФормаЗаписатьИЗакрыть.Видимость И Элементы.ФормаЗаписатьИЗакрыть.Доступность Тогда + Модифицированность = Истина; + КонецЕсли; + КонецПроцедуры &НаКлиенте Процедура ПроверитьВсе(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + ДанныеФайла = ДанныеФайла(ЭтотОбъект.Объект.Ссылка, УникальныйИдентификатор); РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект, ДанныеФайла.СсылкаНаДвоичныеДанныеФайла); + Если Элементы.ФормаЗаписатьИЗакрыть.Видимость И Элементы.ФормаЗаписатьИЗакрыть.Доступность Тогда + Модифицированность = Истина; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -610,6 +626,10 @@ &НаКлиенте Процедура УдалитьЭП(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьЭПОтветПолучен", ЭтотОбъект); ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Удалить выделенные подписи?'"), РежимДиалогаВопрос.ДаНет); @@ -655,7 +675,7 @@ &НаКлиенте Процедура УстановитьДоступностьКомандСпискаЭП() - РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект, ЭтоНовый()); КонецПроцедуры @@ -1471,6 +1491,8 @@ СведенияОФайле.АдресВременногоХранилищаТекста = Источник.ТекущаяВерсия.ТекстХранилище; СведенияОФайле.СсылкаНаВерсиюИсточник = Источник.ТекущаяВерсия; СведенияОФайле.Зашифрован = Источник.Зашифрован; + СведенияОФайле.ВремяИзмененияУниверсальное = Источник.ДатаМодификацииУниверсальная; + СведенияОФайле.ВремяИзменения = ДатаМодификации; Версия = РаботаСФайламиСлужебный.СоздатьВерсию(Приемник, СведенияОФайле); РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле( @@ -1503,8 +1525,8 @@ Элементы.ДекорацияКартинкаСтатусСинхронизации.Видимость = НЕ СведенияОСинхронизации.Синхронизирован; Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункции.ФорматированнаяСтрока( - НСтр("ru = 'Синхронизирован: <a href=""OpenJournal"">%1</a>'"), - Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); + НСтр("ru = 'Синхронизирован: <a href=""%1"">%2</a>'"), + "OpenJournal", Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD")); КонецЕсли; diff --git a/SSL/src/Catalogs/Файлы/ManagerModule.bsl b/SSL/src/Catalogs/Файлы/ManagerModule.bsl index f66dade14..091719fa9 100644 --- a/SSL/src/Catalogs/Файлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/Файлы/ManagerModule.bsl @@ -245,7 +245,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать файл: %1 по причине: + НСтр("ru = 'Не удалось обработать файл %1 по причине: |%2'"), Строка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -260,15 +260,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать программы электронной подписи (пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать файлы (пропущены): %1'"), + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе - ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - , , - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура Справочники.Файлы.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"), - ОбъектовОбработано)); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция файлов: %1'"), + ОбъектовОбработано)); КонецЕсли; Параметры.ОбработкаЗавершена = ОбработкаЗавершена; diff --git a/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl b/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl index 2f6359f58..dd7aaa61b 100644 --- a/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl +++ b/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl @@ -226,8 +226,9 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать шаблон сообщения: %1 по причине: %2'"), - Шаблон.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + НСтр("ru = 'Не удалось обработать шаблон сообщения %1 по причине: + |%2'"), + Шаблон.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.Справочники.ШаблоныСообщений, Шаблон.Ссылка, ТекстСообщения); КонецПопытки; @@ -237,14 +238,14 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые шаблоны сообщений (пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать некоторые шаблоны сообщений (пропущены): %1'"), + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ШаблоныСообщений,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию шаблонов сообщений: %1'"), - ОбъектовОбработано)); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию шаблонов сообщений: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/ЯзыкиПечатныхФорм/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ЯзыкиПечатныхФорм/Forms/ФормаСписка/Form.form index deeab0e89..4ab1250da 100644 --- a/SSL/src/Catalogs/ЯзыкиПечатныхФорм/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ЯзыкиПечатныхФорм/Forms/ФормаСписка/Form.form @@ -34,7 +34,7 @@ <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> <picture xsi:type="core:PictureRef"> - <picture>CommonPicture.Информация</picture> + <picture>StdPicture.Information</picture> </picture> </extInfo> </items> @@ -448,6 +448,10 @@ <userVisible> <common>true</common> </userVisible> + <title> + <key>ru</key> + <value>Настройка порядка элементов</value> + НастройкаПорядкаЭлементовРасширеннаяПодсказка 59 diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl index 12629ff17..5450ad48b 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl @@ -74,9 +74,9 @@ Исключение // Если не удалось обработать объект, повторяем попытку снова. ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать вопрос для анкетирования: %1 по причине: + НСтр("ru = 'Не удалось обработать вопрос для анкетирования %1 по причине: |%2'"), - Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.ПланыВидовХарактеристик.ВопросыДляАнкетирования, Выборка.Ссылка, ТекстСообщения); КонецПопытки; diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form index 06baa0cbe..ba9b0ca7e 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form @@ -1598,7 +1598,7 @@ true - CommonPicture.Информация + StdPicture.Information AsFileRef @@ -4586,17 +4586,10 @@ ЗначенияПереопределяемый.Владелец, ЗначенияПереопределяемый.Родитель, ЗначенияПереопределяемый.ЭтоГруппа, - ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА ЗначенияПереопределяемый.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставленияПереопределяемый.Наименование, ЗначенияПереопределяемый.Наименование) КАК СТРОКА(150)) - КОНЕЦ КАК Наименование, + ЗначенияПереопределяемый.Наименование КАК Наименование, ЗначенияПереопределяемый.Вес ИЗ - Справочник.ЗначенияСвойствОбъектов КАК ЗначенияПереопределяемый - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставленияПереопределяемый - ПО (ЗначенияПредставленияПереопределяемый.Ссылка = ЗначенияПереопределяемый.Ссылка) - И ЗначенияПредставленияПереопределяемый.КодЯзыка = &КодЯзыка + Справочник.ЗначенияСвойствОбъектов КАК ЗначенияПереопределяемый Catalog.ЗначенияСвойствОбъектов true true @@ -4853,29 +4846,15 @@ ТОГДА Наборы.Наименование КОГДА &ЭтоДополнительноеСведение ТОГДА ВЫБОР - КОГДА Наборы.КоличествоСведений = "" - ТОГДА ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА Наборы.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150)) - КОНЕЦ - КОГДА Наборы.КоличествоСведений <> "" - И &ЭтоОсновнойЯзык - ТОГДА Наборы.Наименование + " (" + Наборы.КоличествоСведений + ")" - ИНАЧЕ (ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150))) + " (" + Наборы.КоличествоСведений + ")" - КОНЕЦ - ИНАЧЕ ВЫБОР - КОГДА Наборы.КоличествоРеквизитов = "" - ТОГДА ВЫБОР - КОГДА &ЭтоОсновнойЯзык - ТОГДА Наборы.Наименование - ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150)) - КОНЕЦ - КОГДА Наборы.КоличествоРеквизитов <> "" - И &ЭтоОсновнойЯзык - ТОГДА Наборы.Наименование + " (" + Наборы.КоличествоРеквизитов + ")" - ИНАЧЕ (ВЫРАЗИТЬ(ЕСТЬNULL(НаборыПредставления.Наименование, Наборы.Наименование) КАК СТРОКА(150))) + " (" + Наборы.КоличествоРеквизитов + ")" + КОГДА Наборы.КоличествоСведений = "" + ТОГДА Наборы.Наименование + ИНАЧЕ Наборы.Наименование + " (" + Наборы.КоличествоСведений + ")" КОНЕЦ + ИНАЧЕ ВЫБОР + КОГДА Наборы.КоличествоРеквизитов = "" + ТОГДА Наборы.Наименование + ИНАЧЕ Наборы.Наименование + " (" + Наборы.КоличествоРеквизитов + ")" + КОНЕЦ КОНЕЦ КАК Представление, ВЫБОР КОГДА Наборы.ПометкаУдаления @@ -4888,15 +4867,12 @@ КОНЕЦ КАК НомерКартинки ИЗ Справочник.НаборыДополнительныхРеквизитовИСведений КАК Наборы - ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.Представления КАК НаборыПредставления - ПО (НаборыПредставления.Ссылка = Наборы.Ссылка) - И (НаборыПредставления.КодЯзыка = &КодЯзыка) ГДЕ ВЫБОР - КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) - ТОГДА Наборы.Ссылка В (&Наборы) - ИНАЧЕ Наборы.Родитель В (&Наборы) - КОНЕЦ + КОГДА Наборы.Родитель = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) + ТОГДА Наборы.Ссылка В (&Наборы) + ИНАЧЕ Наборы.Родитель В (&Наборы) + КОНЕЦ И Наборы.Используется И ЕСТЬNULL(Наборы.Родитель.Используется, ИСТИНА) И НЕ Наборы.Ссылка В (&ИсключаемыеНаборы) diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl index 02ee8d6f0..76f101120 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl @@ -118,9 +118,15 @@ // Заполнение наименования по набору свойств // и проверка есть ли свойство с тем же наименованием. - ТекстВопроса = НаименованиеУжеИспользуется( - Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, Объект.Представления); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + ТекстВопроса = НаименованиеУжеИспользуется( + Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, Объект.ЗаголовокЯзык1, Объект.ЗаголовокЯзык2); + Иначе + ТекстВопроса = НаименованиеУжеИспользуется( + Объект.Заголовок, Объект.Ссылка, ТекущийНаборСвойств, Объект.Наименование, "", ""); + КонецЕсли; + Если ЗначениеЗаполнено(ТекстВопроса) Тогда Кнопки = Новый СписокЗначений; Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить запись'")); @@ -244,7 +250,16 @@ // Формирование идентификатора для формул дополнительного реквизита (сведения). Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул) Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда - ЗаголовокОбъекта = ЗаголовокДляФормированияИдентификатора(ТекущийОбъект.Заголовок, ТекущийОбъект.Представления); + + ЗаголовокОбъекта = ТекущийОбъект.Заголовок; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(ТекущийОбъект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда + ЗаголовокОбъекта = ТекущийОбъект["Заголовок" + СуффиксТекущегоЯзыка]; + КонецЕсли; + КонецЕсли; + ТекущийОбъект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( ЗаголовокОбъекта, ТекущийОбъект.Ссылка); @@ -794,7 +809,16 @@ ПредлагаемыйИдентификатор = ""; Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда - Представление = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления); + + Представление = Объект.Заголовок; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(Объект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда + Представление = Объект["Заголовок" + СуффиксТекущегоЯзыка]; + КонецЕсли; + КонецЕсли; + ПредлагаемыйИдентификатор = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( Представление, Объект.Ссылка); Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда @@ -807,24 +831,19 @@ &НаСервере Процедура ЗаполнитьИдентификаторДляФормулНаСервере() - ЗаголовокДляИдентификатора = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления); - Объект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( - ЗаголовокДляИдентификатора, Объект.Ссылка); -КонецПроцедуры - -&НаСервереБезКонтекста -Функция ЗаголовокДляФормированияИдентификатора(Знач Заголовок, Знач Представления) - Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда - Отбор = Новый Структура(); - Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); - НайденныеСтроки = Представления.НайтиСтроки(Отбор); - Если НайденныеСтроки.Количество() > 0 Тогда - Заголовок = НайденныеСтроки[0].Заголовок; + + ЗаголовокДляИдентификатора = Объект.Заголовок; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ЗначениеЗаполнено(Объект["Заголовок" + СуффиксТекущегоЯзыка]) Тогда + ЗаголовокДляИдентификатора = Объект["Заголовок" + СуффиксТекущегоЯзыка]; КонецЕсли; КонецЕсли; - Возврат Заголовок; -КонецФункции + Объект.ИдентификаторДляФормул = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.УникальныйИдентификаторДляФормул( + ЗаголовокДляИдентификатора, Объект.Ссылка); +КонецПроцедуры &НаСервере Процедура УстановитьЗависимостиДополнительныхРеквизитов() @@ -1834,18 +1853,29 @@ | Значения.Предопределенный, | Значения.Владелец, | Значения.Родитель, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Значения.Наименование - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) - | КОНЕЦ КАК Наименование, + | Значения.Наименование КАК Наименование, | Значения.Вес |ИЗ - | Справочник.ЗначенияСвойствОбъектов КАК Значения + | Справочник.ЗначенияСвойствОбъектов КАК Значения"; + СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов"; + + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + " | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектов.Представления КАК ЗначенияПредставления | ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; - СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектов"; + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "Значения.Наименование КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) КАК Наименование"); + + ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(СвойстваСписка.ТекстЗапроса, "Значения.Наименование"); + КонецЕсли; + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, СвойстваСписка); Иначе @@ -1858,29 +1888,35 @@ | Значения.Предопределенный, | Значения.Владелец, | Значения.Родитель, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Значения.Наименование - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) - | КОНЕЦ КАК Наименование, + | Значения.Наименование КАК Наименование, | Значения.Вес |ИЗ - | Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения + | Справочник.ЗначенияСвойствОбъектовИерархия КАК Значения"; + СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия"; + + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + + СвойстваСписка.ТекстЗапроса = СвойстваСписка.ТекстЗапроса + " | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойствОбъектовИерархия.Представления КАК ЗначенияПредставления | ПО (ЗначенияПредставления.Ссылка = Значения.Ссылка) | И ЗначенияПредставления.КодЯзыка = &КодЯзыка"; - СвойстваСписка.ОсновнаяТаблица = "Справочник.ЗначенияСвойствОбъектовИерархия"; - ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, - СвойстваСписка); + + СвойстваСписка.ТекстЗапроса = СтрЗаменить(СвойстваСписка.ТекстЗапроса, "Значения.Наименование КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(ЗначенияПредставления.Наименование, Значения.Наименование) КАК СТРОКА(150)) КАК Наименование"); + + ИначеЕсли ЗначениеЗаполнено(СуффиксТекущегоЯзыка) + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(СвойстваСписка.ТекстЗапроса, "Значения.Наименование"); + КонецЕсли; + + ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Значения, СвойстваСписка); КонецЕсли; - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( - Значения, "ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык, Истина); ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( Значения, "КодЯзыка", ТекущийЯзык().КодЯзыка, Истина); - // Отображение уточнений. - Если НЕ ЗначениеЗаполнено(Объект.ВладелецДополнительныхЗначений) Тогда Элементы.УточнениеСпискаЗначений.Видимость = Ложь; Элементы.ДополнительныеЗначения.ТолькоПросмотр = Ложь; @@ -2300,11 +2336,7 @@ | СвойстваНаборов.НомерСтроки, | СвойстваНаборов.Свойство, | СвойстваНаборов.ПометкаУдаления, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Заголовок - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) - | КОНЕЦ КАК Заголовок, + | Свойства.Заголовок КАК Заголовок, | Свойства.ВладелецДополнительныхЗначений, | Свойства.ТипЗначения КАК ТипЗначения, | ИСТИНА КАК Общее, @@ -2313,28 +2345,13 @@ | ТОГДА 4 | ИНАЧЕ 3 | КОНЕЦ КАК НомерКартинки, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Подсказка - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) - | КОНЕЦ КАК Подсказка, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыЗначения, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + | Свойства.Подсказка КАК Подсказка, + | Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения, + | Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения |ИЗ | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства | ПО СвойстваНаборов.Свойство = Свойства.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления - | ПО СвойстваНаборов.Свойство = СвойстваПредставления.Ссылка - | И СвойстваПредставления.КодЯзыка = &КодЯзыка | |ГДЕ | СвойстваНаборов.Ссылка = &Набор @@ -2356,11 +2373,7 @@ "ВЫБРАТЬ | Свойства.Ссылка КАК Свойство, | Свойства.ПометкаУдаления КАК ПометкаУдаления, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Заголовок - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, Свойства.Заголовок) КАК СТРОКА(150)) - | КОНЕЦ КАК Заголовок, + | Свойства.Заголовок КАК Заголовок, | Свойства.ВладелецДополнительныхЗначений, | Свойства.ТипЗначения КАК ТипЗначения, | ИСТИНА КАК Общее, @@ -2369,26 +2382,11 @@ | ТОГДА 4 | ИНАЧЕ 3 | КОНЕЦ КАК НомерКартинки, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.Подсказка - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, Свойства.Подсказка) КАК СТРОКА(150)) - | КОНЕЦ КАК Подсказка, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыЗначения, Свойства.ЗаголовокФормыЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыЗначения, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА Свойства.ЗаголовокФормыВыбораЗначения - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.ЗаголовокФормыВыбораЗначения, Свойства.ЗаголовокФормыВыбораЗначения) КАК СТРОКА(150)) - | КОНЕЦ КАК ЗаголовокФормыВыбораЗначения + | Свойства.Подсказка КАК Подсказка, + | Свойства.ЗаголовокФормыЗначения КАК ЗаголовокФормыЗначения, + | Свойства.ЗаголовокФормыВыбораЗначения КАК ЗаголовокФормыВыбораЗначения |ИЗ | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства - | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления - | ПО Свойства.Ссылка = СвойстваПредставления.Ссылка - | И СвойстваПредставления.КодЯзыка = &КодЯзыка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора | ПО Свойства.Ссылка = СоставНабора.Свойство | @@ -2557,15 +2555,17 @@ КонецПроцедуры &НаСервереБезКонтекста -Функция НаименованиеУжеИспользуется(Знач Заголовок, Знач ТекущееСвойство, Знач НаборСвойств, НовоеНаименование, Знач Представления) +Функция НаименованиеУжеИспользуется(Знач Заголовок, Знач ТекущееСвойство, Знач НаборСвойств, НовоеНаименование, Знач ЗаголовокЯзык1, Знач ЗаголовокЯзык2) - Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда - Отбор = Новый Структура(); - Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); - НайденныеСтроки = Представления.НайтиСтроки(Отбор); - Если НайденныеСтроки.Количество() > 0 Тогда - Заголовок = НайденныеСтроки[0].Заголовок; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + Если МодульМультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда + Заголовок = ЗаголовокЯзык1; + ИначеЕсли МодульМультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда + Заголовок = ЗаголовокЯзык2; КонецЕсли; + КонецЕсли; НовоеНаименование = Заголовок; @@ -2779,4 +2779,4 @@ КонецПроцедуры -#КонецОбласти +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ManagerModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ManagerModule.bsl index eb169356d..415ab0bfa 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ManagerModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ManagerModule.bsl @@ -922,9 +922,9 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать дополнительный реквизит (сведение): %1 по причине: + НСтр("ru = 'Не удалось обработать дополнительный реквизит (сведение) %1 по причине: |%2'"), - Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения, Выборка.Ссылка, ТекстСообщения); КонецПопытки; @@ -935,13 +935,13 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось обработать некоторые дополнительные реквизиты или сведения (пропущены): %1'"), - ПроблемныхОбъектов); + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Обработана очередная порция дополнительных реквизитов (сведений): %1'"), - ОбъектовОбработано)); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Обработана очередная порция дополнительных реквизитов (сведений): %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ObjectModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ObjectModule.bsl index 507aff2dc..809925103 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ObjectModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ObjectModule.bsl @@ -15,7 +15,12 @@ Заголовок = ""; Имя = ""; ИдентификаторДляФормул = ""; - Представления.Очистить(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + ЗаголовокЯзык1 = ""; + ЗаголовокЯзык2 = ""; + КонецЕсли; + КонецПроцедуры @@ -212,17 +217,23 @@ КонецПроцедуры Функция ЗаголовокДляФормированияИдентификатора() + ЗаголовокДляИдентификатора = Заголовок; - Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда - Отбор = Новый Структура(); - Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); - НайденныеСтроки = Представления.НайтиСтроки(Отбор); - Если НайденныеСтроки.Количество() > 0 Тогда - ЗаголовокДляИдентификатора = НайденныеСтроки[0].Заголовок; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + СуффиксЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда + + Если ЗначениеЗаполнено(ЭтотОбъект["Заголовок" + СуффиксЯзыка]) Тогда + ЗаголовокДляИдентификатора = ЭтотОбъект["Заголовок" + СуффиксЯзыка]; + КонецЕсли; КонецЕсли; КонецЕсли; Возврат ЗаголовокДляИдентификатора; + КонецФункции #КонецОбласти diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ДополнительныеРеквизитыИСведения.mdo b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ДополнительныеРеквизитыИСведения.mdo index f2e474a94..bd8f6460d 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ДополнительныеРеквизитыИСведения.mdo +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/ДополнительныеРеквизитыИСведения.mdo @@ -294,6 +294,50 @@ Use Use + + ЗаголовокФормыВыбораЗначенияЯзык1 + + ru + Заголовок формы выбора значения язык (дополнительный язык) + + + String + + 150 + + + + ru + Используется в заголовке формы выбора дополнительного значения свойства + + + + + Use + Use + + + ЗаголовокФормыВыбораЗначенияЯзык2 + + ru + Заголовок формы выбора значения язык (дополнительный язык 2) + + + String + + 150 + + + + ru + Используется в заголовке формы выбора дополнительного значения свойства + + + + + Use + Use + ЗаголовокФормыЗначения @@ -316,6 +360,100 @@ Use Use + + ЗаголовокФормыЗначенияЯзык1 + + ru + Заголовок формы значения язык (дополнительный язык) + + + String + + 150 + + + + ru + Используется в заголовке формы дополнительного значения свойства + + + + + Use + Use + + + ЗаголовокФормыЗначенияЯзык2 + + ru + Заголовок формы значения язык (дополнительный язык 2) + + + String + + 150 + + + + ru + Используется в заголовке формы дополнительного значения свойства + + + + + Use + Use + + + ЗаголовокЯзык1 + + ru + Наименование (дополнительный язык) + + + String + + 75 + + + + ru + Краткое представление свойства, которое +выводится в формах редактирования его значения + + + + ShowError + + Index + Use + Use + + + ЗаголовокЯзык2 + + ru + Наименование (дополнительный язык 2) + + + String + + 75 + + + + ru + Краткое представление свойства, которое +выводится в формах редактирования его значения + + + + ShowError + + Index + Use + Use + ЗаполнятьОбязательно @@ -335,6 +473,24 @@ Use Use + + ИдентификаторДляФормул + + ru + Идентификатор для формул + + + String + + 150 + + + + + + Use + Use + Имя @@ -401,6 +557,25 @@ Use Use + + НаборСвойств + + ru + Набор свойств + + + CatalogRef.НаборыДополнительныхРеквизитовИСведений + + + ru + Набор свойств, в котором было изначально создано свойство. При включении свойства в несколько наборов значение не меняется. + + + + + Use + Use + Подсказка @@ -421,6 +596,46 @@ Use Use + + ПодсказкаЯзык1 + + ru + Подсказка язык (дополнительный язык) + + + String + + + + ru + Показывается пользователю при редактировании свойства в форме объекта + + + + + Use + Use + + + ПодсказкаЯзык2 + + ru + Подсказка язык (дополнительный язык 2) + + + String + + + + ru + Показывается пользователю при редактировании свойства в форме объекта + + + + + Use + Use + ФорматСвойства @@ -460,43 +675,6 @@ Use Use - - НаборСвойств - - ru - Набор свойств - - - CatalogRef.НаборыДополнительныхРеквизитовИСведений - - - ru - Набор свойств, в котором было изначально создано свойство. При включении свойства в несколько наборов значение не меняется. - - - - - Use - Use - - - ИдентификаторДляФормул - - ru - Идентификатор для формул - - - String - - 150 - - - - - - Use - Use - diff --git a/SSL/src/ChartsOfCharacteristicTypes/ОбъектыАдресацииЗадач/ManagerModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ОбъектыАдресацииЗадач/ManagerModule.bsl index dc0ccd949..60e0ec7ad 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ОбъектыАдресацииЗадач/ManagerModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ОбъектыАдресацииЗадач/ManagerModule.bsl @@ -117,7 +117,9 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); МодульМультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", - "ru='Все объекты адресации'", КодыЯзыков); // @НСтр-2 + "ru='Все объекты адресации'", КодыЯзыков); // @НСтр-1 + Иначе + Элемент.Наименование = НСтр("ru = 'Все объекты адресации'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецЕсли; БизнесПроцессыИЗадачиПереопределяемый.ПриНачальномЗаполненииОбъектовАдресацииЗадач(КодыЯзыков, Элементы, ТабличныеЧасти); diff --git a/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/Forms/ФормаЭлемента/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/Forms/ФормаЭлемента/Module.bsl index 841c970be..eee051d10 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/Forms/ФормаЭлемента/Module.bsl @@ -12,7 +12,7 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТолькоПросмотр = Истина; - + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/ManagerModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/ManagerModule.bsl index 64ddc45ab..7a48970fd 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/ManagerModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/РазделыДатЗапретаИзменения/ManagerModule.bsl @@ -47,11 +47,10 @@ ИнтеграцияПодсистемБСП.ПриЗаполненииРазделовДатЗапретаИзменения(Разделы); ДатыЗапретаИзмененияПереопределяемый.ПриЗаполненииРазделовДатЗапретаИзменения(Разделы); - ЗаголовокОшибки = - НСтр("ru = 'Ошибка в процедуре ПриЗаполненииРазделовДатЗапретаИзменения - |общего модуля ДатыЗапретаИзмененияПереопределяемый.'") - + Символы.ПС - + Символы.ПС; + ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка в процедуре %1 общего модуля %2.'"), + "ПриЗаполненииРазделовДатЗапретаИзменения", "ДатыЗапретаИзмененияПереопределяемый") + + Символы.ПС + Символы.ПС; РазделыДатЗапрета = Новый Соответствие; РазделыБезОбъектов = Новый Массив; diff --git a/SSL/src/CommonAttributes/НаименованиеЯзык1/НаименованиеЯзык1.mdo b/SSL/src/CommonAttributes/НаименованиеЯзык1/НаименованиеЯзык1.mdo index 9ceb781d1..4ae826edc 100644 --- a/SSL/src/CommonAttributes/НаименованиеЯзык1/НаименованиеЯзык1.mdo +++ b/SSL/src/CommonAttributes/НаименованиеЯзык1/НаименованиеЯзык1.mdo @@ -15,14 +15,42 @@ Use + + Catalog.НаборыДополнительныхРеквизитовИСведений + Use + + + Catalog.ВариантыОтчетов + Use + + + Catalog.ПредопределенныеВариантыОтчетовРасширений + Use + Catalog.РолиИсполнителей Use + + Catalog.ВидыКонтактнойИнформации + Use + + + Catalog.ПредопределенныеВариантыОтчетов + Use + + + Catalog.ЗначенияСвойствОбъектовИерархия + Use + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач Use + + Catalog.ЗначенияСвойствОбъектов + Use + DontUse DontUse DontUse diff --git a/SSL/src/CommonAttributes/НаименованиеЯзык2/НаименованиеЯзык2.mdo b/SSL/src/CommonAttributes/НаименованиеЯзык2/НаименованиеЯзык2.mdo index 79fa39430..a70e1e945 100644 --- a/SSL/src/CommonAttributes/НаименованиеЯзык2/НаименованиеЯзык2.mdo +++ b/SSL/src/CommonAttributes/НаименованиеЯзык2/НаименованиеЯзык2.mdo @@ -15,14 +15,42 @@ Use + + Catalog.НаборыДополнительныхРеквизитовИСведений + Use + + + Catalog.ВариантыОтчетов + Use + + + Catalog.ПредопределенныеВариантыОтчетовРасширений + Use + Catalog.РолиИсполнителей Use + + Catalog.ВидыКонтактнойИнформации + Use + + + Catalog.ПредопределенныеВариантыОтчетов + Use + + + Catalog.ЗначенияСвойствОбъектовИерархия + Use + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач Use + + Catalog.ЗначенияСвойствОбъектов + Use + DontUse DontUse DontUse diff --git a/SSL/src/CommonAttributes/ОбластьДанныхВспомогательныеДанные/ОбластьДанныхВспомогательныеДанные.mdo b/SSL/src/CommonAttributes/ОбластьДанныхВспомогательныеДанные/ОбластьДанныхВспомогательныеДанные.mdo index 0553a9cdb..71494cc2c 100644 --- a/SSL/src/CommonAttributes/ОбластьДанныхВспомогательныеДанные/ОбластьДанныхВспомогательныеДанные.mdo +++ b/SSL/src/CommonAttributes/ОбластьДанныхВспомогательныеДанные/ОбластьДанныхВспомогательныеДанные.mdo @@ -24,6 +24,10 @@ InformationRegister.ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных Use + + InformationRegister.ПрогрессОбновления + Use + InformationRegister.ОбработчикиОбновления Use diff --git a/SSL/src/CommonAttributes/ОбластьДанныхОсновныеДанные/ОбластьДанныхОсновныеДанные.mdo b/SSL/src/CommonAttributes/ОбластьДанныхОсновныеДанные/ОбластьДанныхОсновныеДанные.mdo index 3e9ea78fb..c240ff3ef 100644 --- a/SSL/src/CommonAttributes/ОбластьДанныхОсновныеДанные/ОбластьДанныхОсновныеДанные.mdo +++ b/SSL/src/CommonAttributes/ОбластьДанныхОсновныеДанные/ОбластьДанныхОсновныеДанные.mdo @@ -146,6 +146,10 @@ ScheduledJob.ПланированиеИзвлеченияТекстаВМоделиСервиса DontUse + + InformationRegister.ПрогрессОбновления + DontUse + Catalog.КлючевыеОперации DontUse @@ -374,6 +378,10 @@ Constant.ДатаПоследнегоОбновленияКлассификатораОшибок DontUse + + Constant.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста + DontUse + InformationRegister.НеразделенныеПользователи DontUse @@ -494,6 +502,10 @@ InformationRegister.ПравилаДляОбменаДанными DontUse + + Constant.ДанныеДляИзмененияМультиязычныхРеквизитов + DontUse + InformationRegister.ОбластиСтатистики DontUse @@ -622,6 +634,10 @@ InformationRegister.ВерсииПодсистемОбластейДанных DontUse + + ScheduledJob.ОбновлениеСостоянияЗаявленияНаВыпускСертификата + DontUse + Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы DontUse diff --git a/SSL/src/CommonForms/АвтономнаяРабота/Form.form b/SSL/src/CommonForms/АвтономнаяРабота/Form.form index 72c456f7f..0ecb48c33 100644 --- a/SSL/src/CommonForms/АвтономнаяРабота/Form.form +++ b/SSL/src/CommonForms/АвтономнаяРабота/Form.form @@ -38,7 +38,7 @@ true - CommonPicture.Информация + CommonPicture.УдалитьИнформация diff --git a/SSL/src/CommonForms/ВводНаРазныхЯзыках/Form.form b/SSL/src/CommonForms/ВводНаРазныхЯзыках/Form.form index 60d14ac29..e05215191 100644 --- a/SSL/src/CommonForms/ВводНаРазныхЯзыках/Form.form +++ b/SSL/src/CommonForms/ВводНаРазныхЯзыках/Form.form @@ -254,6 +254,19 @@ true + + ХранениеВТабличнойЧасти + 6 + + Boolean + + + true + + + true + + ОК diff --git a/SSL/src/CommonForms/ВводНаРазныхЯзыках/Module.bsl b/SSL/src/CommonForms/ВводНаРазныхЯзыках/Module.bsl index 5302735cd..42d8a9cb2 100644 --- a/SSL/src/CommonForms/ВводНаРазныхЯзыках/Module.bsl +++ b/SSL/src/CommonForms/ВводНаРазныхЯзыках/Module.bsl @@ -19,6 +19,7 @@ ТолькоПросмотр = Не ПравоДоступа("Изменение", ОбъектМетаданных); МультиязычныеСтрокиВРеквизитах = МультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных); + ХранениеВТабличнойЧасти = МультиязычностьСервер.ОбъектСодержитТЧПредставления(ОбъектМетаданных.ПолноеИмя()); Реквизит = ОбъектМетаданных.Реквизиты.Найти(Параметры.ИмяРеквизита); Если Реквизит = Неопределено Тогда Для каждого СтандартныйРеквизит Из ОбъектМетаданных.СтандартныеРеквизиты Цикл @@ -43,60 +44,45 @@ КонецЕсли; + ИспользуетсяПервыйДополнительныйЯзык = МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() + И ЗначениеЗаполнено(МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы()); + + ИспользуетсяВторойДополнительныйЯзык = МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() + И ЗначениеЗаполнено(МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы()); + НаборЯзыков = Новый ТаблицаЗначений; НаборЯзыков.Колонки.Добавить("КодЯзыка", ОбщегоНазначения.ОписаниеТипаСтрока(10)); НаборЯзыков.Колонки.Добавить("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(150)); НаборЯзыков.Колонки.Добавить("Суффикс", ОбщегоНазначения.ОписаниеТипаСтрока(50)); - Если МультиязычныеСтрокиВРеквизитах Тогда - - ПредставленияЯзыков = Новый Соответствие; - Для Каждого ЯзыкКонфигурации Из Метаданные.Языки Цикл - ПредставленияЯзыков.Вставить(ЯзыкКонфигурации.КодЯзыка, ЯзыкКонфигурации.Представление()); - КонецЦикла; - - НовыйЯзык = НаборЯзыков.Добавить(); - НовыйЯзык.КодЯзыка = Константы.ОсновнойЯзык.Получить(); - НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; - НовыйЯзык.Суффикс = СуффиксОсновногоЯзыка; - - Если МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда - НовыйЯзык = НаборЯзыков.Добавить(); - НовыйЯзык.КодЯзыка = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы(); - НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; - НовыйЯзык.Суффикс = СуффиксДополнительногоЯзыка1; - КонецЕсли; - - Если МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда - НовыйЯзык = НаборЯзыков.Добавить(); - НовыйЯзык.КодЯзыка = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы(); - НовыйЯзык.Представление = ПредставленияЯзыков[НовыйЯзык.КодЯзыка]; - НовыйЯзык.Суффикс = СуффиксДополнительногоЯзыка2; - КонецЕсли; - - Иначе - - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда - МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); - МодульУправлениеПечатьюМультиязычность.ПриЗаполненииНабораЯзыков(НаборЯзыков); - КонецЕсли; - - Для Каждого ЯзыкКонфигурации Из Метаданные.Языки Цикл - - Если НаборЯзыков.НайтиСтроки(Новый Структура("КодЯзыка", ЯзыкКонфигурации.КодЯзыка)).Количество() > 0 Тогда - Продолжить; - КонецЕсли; - - НовыйЯзык = НаборЯзыков.Добавить(); - НовыйЯзык.КодЯзыка = ЯзыкКонфигурации.КодЯзыка; - НовыйЯзык.Представление = ЯзыкКонфигурации.Представление(); - - КонецЦикла; - + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + МодульУправлениеПечатьюМультиязычность.ПриЗаполненииНабораЯзыков(НаборЯзыков); КонецЕсли; + Для Каждого ЯзыкКонфигурации Из Метаданные.Языки Цикл + + СтрокаЯзыка = НаборЯзыков.НайтиСтроки(Новый Структура("КодЯзыка", ЯзыкКонфигурации.КодЯзыка)); + + Если СтрокаЯзыка.Количество() = 0 Тогда + ДанныеЯзыка = НаборЯзыков.Добавить(); + ДанныеЯзыка.КодЯзыка = ЯзыкКонфигурации.КодЯзыка; + ДанныеЯзыка.Представление = ЯзыкКонфигурации.Представление(); + Иначе + ДанныеЯзыка = СтрокаЯзыка[0]; + КонецЕсли; + + Если ЯзыкКонфигурации.КодЯзыка = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы() Тогда + ДанныеЯзыка.Суффикс = СуффиксДополнительногоЯзыка1; + ИначеЕсли ЯзыкКонфигурации.КодЯзыка = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы() Тогда + ДанныеЯзыка.Суффикс = СуффиксДополнительногоЯзыка2; + КонецЕсли; + + КонецЦикла; + Если Реквизит = Неопределено Тогда - ШаблонОшибки = НСтр("ru = 'При открытии формы ВводНаРазныхЯзыках в параметре ИмяРеквизита указан не существующий реквизит %1'"); + ШаблонОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При открытии формы %1 в параметре %2 указан не существующий реквизит %1'"), "ВводНаРазныхЯзыках", "ИмяРеквизита"); ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, Параметры.ИмяРеквизита); КонецЕсли; @@ -127,36 +113,7 @@ ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; КонецЕсли; - Если МультиязычныеСтрокиВРеквизитах Тогда - - ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка(); - - ОписаниеЯзыка = ОписаниеЯзыка(Константы.ОсновнойЯзык.Получить()); - Если ПустаяСтрока(СуффиксОсновногоЯзыка) Тогда - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; - Иначе - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка]; - КонецЕсли; - - Если МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда - ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык1.Получить()); - Если ПустаяСтрока(СуффиксДополнительногоЯзыка1) Тогда - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; - Иначе - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка1]; - КонецЕсли; - КонецЕсли; - - Если МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда - ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык2.Получить()); - Если ПустаяСтрока(СуффиксДополнительногоЯзыка2) Тогда - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; - Иначе - ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка2]; - КонецЕсли; - КонецЕсли; - - Иначе + Если ХранениеВТабличнойЧасти Тогда ОсновнойЯзык = Метаданные.ОсновнойЯзык.КодЯзыка; @@ -172,6 +129,40 @@ КонецЕсли; КонецЦикла; + + КонецЕсли; + + Если МультиязычныеСтрокиВРеквизитах + И (ИспользуетсяПервыйДополнительныйЯзык + ИЛИ ИспользуетсяВторойДополнительныйЯзык) Тогда + + ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка(); + + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ОсновнойЯзык.Получить()); + Если ПустаяСтрока(СуффиксОсновногоЯзыка) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + Иначе + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксОсновногоЯзыка]; + КонецЕсли; + + Если ИспользуетсяПервыйДополнительныйЯзык Тогда + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык1.Получить()); + Если ПустаяСтрока(СуффиксДополнительногоЯзыка1) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + ИначеЕсли Параметры.ЗначенияРеквизитов <> Неопределено Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка1]; + КонецЕсли; + КонецЕсли; + + Если ИспользуетсяВторойДополнительныйЯзык Тогда + ОписаниеЯзыка = ОписаниеЯзыка(Константы.ДополнительныйЯзык2.Получить()); + Если ПустаяСтрока(СуффиксДополнительногоЯзыка2) Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ТекущиеЗначение; + ИначеЕсли Параметры.ЗначенияРеквизитов <> Неопределено Тогда + ЭтотОбъект[ОписаниеЯзыка.Имя] = Параметры.ЗначенияРеквизитов[Параметры.ИмяРеквизита + СуффиксДополнительногоЯзыка2]; + КонецЕсли; + КонецЕсли; + КонецЕсли; Элементы.Перевести.Видимость = Ложь; @@ -204,7 +195,7 @@ Результат = Новый Структура; Результат.Вставить("ОсновнойЯзык", ОсновнойЯзык); - Результат.Вставить("ХранениеВТабличнойЧасти", Не МультиязычныеСтрокиВРеквизитах); + Результат.Вставить("ХранениеВТабличнойЧасти", ХранениеВТабличнойЧасти); Результат.Вставить("Модифицированность", Модифицированность); Результат.Вставить("ЗначенияНаРазныхЯзыках", Новый Массив); diff --git a/SSL/src/CommonForms/ВосстановлениеПаролей/Module.bsl b/SSL/src/CommonForms/ВосстановлениеПаролей/Module.bsl index ca567453a..96e86947a 100644 --- a/SSL/src/CommonForms/ВосстановлениеПаролей/Module.bsl +++ b/SSL/src/CommonForms/ВосстановлениеПаролей/Module.bsl @@ -522,14 +522,17 @@ &НаСервереБезКонтекста Функция ТекстПоУмолчанию() - ТекстСообщенияHTML = НСтр("ru='Здравствуйте, &UserPresentation + ШаблонСообщенияHTML = НСтр("ru='Здравствуйте, %1 | - |Мы получили запрос на восстановление пароля от &ConfigurationPresentation. + |Мы получили запрос на восстановление пароля от %2. | - |Введите код &VerificationCode для сброса пароля. + |Введите код %3 для сброса пароля. | |Если восстановление пароля не запрашивалось, сообщите об этом техническому специалисту.'"); + ТекстСообщенияHTML = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияHTML, + "&UserPresentation", "&ConfigurationPresentation", "&VerificationCode"); + Возврат ТекстСообщенияHTML; КонецФункции diff --git a/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Module.bsl b/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Module.bsl index 46098bb2f..20012e0a8 100644 --- a/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Module.bsl +++ b/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Module.bsl @@ -64,39 +64,36 @@ НачатьТранзакцию(); Попытка + ГлавныйУзел = Константы.ГлавныйУзел.Получить(); ГлавныйУзелМенеджер = Константы.ГлавныйУзел.СоздатьМенеджерЗначения(); ГлавныйУзелМенеджер.Значение = Неопределено; ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГлавныйУзелМенеджер); - ЭтоАвтономноеРабочееМесто = Константы.ЭтоАвтономноеРабочееМесто.СоздатьМенеджерЗначения(); - ЭтоАвтономноеРабочееМесто.Прочитать(); - Если ЭтоАвтономноеРабочееМесто.Значение Тогда - ЭтоАвтономноеРабочееМесто.Значение = Ложь; - ОбновлениеИнформационнойБазы.ЗаписатьДанные(ЭтоАвтономноеРабочееМесто); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - НеИспользоватьРазделениеПоОбластямДанных = Константы.НеИспользоватьРазделениеПоОбластямДанных.СоздатьМенеджерЗначения(); - НеИспользоватьРазделениеПоОбластямДанных.Прочитать(); - Если Не Константы.ИспользоватьРазделениеПоОбластямДанных.Получить() - И Не НеИспользоватьРазделениеПоОбластямДанных.Значение Тогда - НеИспользоватьРазделениеПоОбластямДанных.Значение = Истина; - ОбновлениеИнформационнойБазы.ЗаписатьДанные(НеИспользоватьРазделениеПоОбластямДанных); + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + + МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ПриПодтвержденииОтключенияСвязиСГлавнымУзлом(); + КонецЕсли; - КонецЕсли; - - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); МодульОбменДаннымиСервер.УдалитьНастройкиСинхронизацииСГлавнымУзломРИБ(ГлавныйУзел); + КонецЕсли; СтандартныеПодсистемыСервер.ВосстановитьПредопределенныеЭлементы(); ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); ВызватьИсключение; + КонецПопытки; КонецПроцедуры diff --git a/SSL/src/CommonForms/ВыборОбъектовМетаданных/Form.form b/SSL/src/CommonForms/ВыборОбъектовМетаданных/Form.form index 0c85dd74f..914a0e59f 100644 --- a/SSL/src/CommonForms/ВыборОбъектовМетаданных/Form.form +++ b/SSL/src/CommonForms/ВыборОбъектовМетаданных/Form.form @@ -436,8 +436,13 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> + <handlers> + <event>BeforeLoadDataFromSettingsAtServer</event> + <name>ПередЗагрузкойДанныхИзНастроекНаСервере</name> + </handlers> <excludedCommands>CustomizeForm</excludedCommands> <windowOpeningMode>LockOwner</windowOpeningMode> + <autoSaveDataInSettings>Use</autoSaveDataInSettings> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> @@ -587,6 +592,19 @@ <common>true</common> </edit> </columns> + <columns> + <name>ЭтоКоллекцияОбъектов</name> + <id>9</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </columns> </attributes> <attributes> <name>ВыбранныеОбъектыМетаданных</name> @@ -720,6 +738,9 @@ <edit> <common>true</common> </edit> + <settingsSavedData xsi:type="form:DataPath"> + <segments>СпособГруппировкиОбъектов</segments> + </settingsSavedData> </attributes> <attributes> <name>АдресаВыбранныхОбъектов</name> @@ -737,6 +758,122 @@ <itemValueType/> </extInfo> </attributes> + <attributes> + <name>ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты</name> + <id>12</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> + <attributes> + <name>ЗапоминатьРазделыВыбранныхОбъектов</name> + <id>13</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> + <attributes> + <name>КоллекцииВыбираемыхОбъектовМетаданных</name> + <id>14</id> + <valueType> + <types>ValueList</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <extInfo xsi:type="form:ValueListExtInfo"> + <itemValueType/> + </extInfo> + </attributes> + <attributes> + <name>РодительскиеПодсистемы</name> + <id>15</id> + <valueType> + <types>ValueList</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <extInfo xsi:type="form:ValueListExtInfo"> + <itemValueType/> + </extInfo> + </attributes> + <attributes> + <name>ФильтрПоОбъектамМетаданных</name> + <id>16</id> + <valueType> + <types>ValueList</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <extInfo xsi:type="form:ValueListExtInfo"> + <itemValueType/> + </extInfo> + </attributes> + <attributes> + <name>УникальныйИдентификаторИсточник</name> + <id>17</id> + <valueType> + <types>UUID</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> + <attributes> + <name>ИдентификаторСтрокиПервогоВыбранногоОбъекта</name> + <id>18</id> + <valueType> + <types>Number</types> + <numberQualifiers> + <precision>10</precision> + </numberQualifiers> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> + <attributes> + <name>ПометкаВыполнялась</name> + <id>20</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> <formCommands> <name>Выбрать</name> <title> @@ -792,28 +929,24 @@ <valueType> <types>UUID</types> </valueType> - <keyParameter>true</keyParameter> </parameters> <parameters> <name>КоллекцииВыбираемыхОбъектовМетаданных</name> <valueType> <types>ValueList</types> </valueType> - <keyParameter>true</keyParameter> </parameters> <parameters> <name>ФильтрПоОбъектамМетаданных</name> <valueType> <types>ValueList</types> </valueType> - <keyParameter>true</keyParameter> </parameters> <parameters> <name>РодительскиеПодсистемы</name> <valueType> <types>ValueList</types> </valueType> - <keyParameter>true</keyParameter> </parameters> <parameters> <name>Заголовок</name> @@ -834,7 +967,12 @@ <valueType> <types>Boolean</types> </valueType> - <keyParameter>true</keyParameter> + </parameters> + <parameters> + <name>ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты</name> + <valueType> + <types>Boolean</types> + </valueType> </parameters> <commandInterface> <navigationPanel/> diff --git a/SSL/src/CommonForms/ВыборОбъектовМетаданных/Module.bsl b/SSL/src/CommonForms/ВыборОбъектовМетаданных/Module.bsl index 685745984..99eccf7bf 100644 --- a/SSL/src/CommonForms/ВыборОбъектовМетаданных/Module.bsl +++ b/SSL/src/CommonForms/ВыборОбъектовМетаданных/Module.bsl @@ -49,51 +49,86 @@ УстановитьУсловноеОформление(); + ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты = Параметры.ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты; + ЗапоминатьРазделыВыбранныхОбъектов = Параметры.ЗапоминатьРазделыВыбранныхОбъектов; + КоллекцииВыбираемыхОбъектовМетаданных = Параметры.КоллекцииВыбираемыхОбъектовМетаданных; + РодительскиеПодсистемы = Параметры.РодительскиеПодсистемы; + ФильтрПоОбъектамМетаданных = Параметры.ФильтрПоОбъектамМетаданных; + УникальныйИдентификаторИсточник = Параметры.УникальныйИдентификаторИсточник; + СпособГруппировкиОбъектов = Параметры.СпособГруппировкиОбъектов; + ВыбранныеОбъектыМетаданных = ОбщегоНазначения.СкопироватьРекурсивно(Параметры.ВыбранныеОбъектыМетаданных); + + ВыбиратьСсылки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыбиратьСсылки", Ложь); + ТолькоПодсистемыСКИ = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ТолькоПодсистемыСКИ", Ложь); + ВыборЕдинственного = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыборЕдинственного", Ложь); + НачальноеЗначениеВыбора = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "НачальноеЗначениеВыбора", Ложь); + ЗаполнитьВыбранныеОбъектыМетаданных(); - Если Параметры.ФильтрПоОбъектамМетаданных.Количество() > 0 Тогда - Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Очистить(); - Для Каждого ОбъектМетаданныхПолноеИмя Из Параметры.ФильтрПоОбъектамМетаданных Цикл + Если ФильтрПоОбъектамМетаданных.Количество() > 0 Тогда + КоллекцииВыбираемыхОбъектовМетаданных.Очистить(); + Для Каждого ОбъектМетаданныхПолноеИмя Из ФильтрПоОбъектамМетаданных Цикл ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(Метаданные.НайтиПоПолномуИмени(ОбъектМетаданныхПолноеИмя.Значение)); - Если Параметры.КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(ИмяБазовогоТипа) = Неопределено Тогда - Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Добавить(ИмяБазовогоТипа); + Если КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(ИмяБазовогоТипа) = Неопределено Тогда + КоллекцииВыбираемыхОбъектовМетаданных.Добавить(ИмяБазовогоТипа); КонецЕсли; КонецЦикла; + ИначеЕсли ВыбиратьСсылки Тогда + МодульИдентификаторыОбъектовМетаданных = ОбщегоНазначения.ОбщийМодуль( + "Справочники.ИдентификаторыОбъектовМетаданных"); + ДопустимыеКоллекции = МодульИдентификаторыОбъектовМетаданных.ДопустимыеКоллекции(); + Если Не ЗначениеЗаполнено(КоллекцииВыбираемыхОбъектовМетаданных) Тогда + Для Каждого ДопустимаяКоллекция Из ДопустимыеКоллекции Цикл + КоллекцииВыбираемыхОбъектовМетаданных.Добавить(ДопустимаяКоллекция); + КонецЦикла; + Иначе + ПодходящиеКоллекции = Новый СписокЗначений; + Для Каждого ЭлементСписка Из КоллекцииВыбираемыхОбъектовМетаданных Цикл + Если ДопустимыеКоллекции.Найти(ЭлементСписка.Значение) <> Неопределено Тогда + ПодходящиеКоллекции.Добавить().Значение = ЭлементСписка.Значение; + КонецЕсли; + КонецЦикла; + Если ПодходящиеКоллекции.Количество() = 0 Тогда + ПодходящиеКоллекции.Добавить().Значение = ДопустимыеКоллекции[0]; + КонецЕсли; + КоллекцииВыбираемыхОбъектовМетаданных = ПодходящиеКоллекции; + КонецЕсли; КонецЕсли; - Если Параметры.Свойство("ТолькоПодсистемыСКИ") И Параметры.ТолькоПодсистемыСКИ Тогда + Если ТолькоПодсистемыСКИ Тогда СписокПодсистем = Метаданные.Подсистемы; ЗаполнитьСписокПодсистем(СписокПодсистем); - ТолькоПодсистемыСКИ = Истина; КонецЕсли; - Если Параметры.Свойство("ВыборЕдинственного", ВыборЕдинственного) И ВыборЕдинственного Тогда + Если ВыборЕдинственного Тогда Элементы.Пометка.Видимость = Ложь; КонецЕсли; - Если Параметры.Свойство("Заголовок") Тогда + Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда АвтоЗаголовок = Ложь; Заголовок = Параметры.Заголовок; КонецЕсли; - Параметры.Свойство("НачальноеЗначениеВыбора", НачальноеЗначениеВыбора); Если Не ЗначениеЗаполнено(НачальноеЗначениеВыбора) И ВыборЕдинственного И Параметры.ВыбранныеОбъектыМетаданных.Количество() = 1 Тогда НачальноеЗначениеВыбора = Параметры.ВыбранныеОбъектыМетаданных[0].Значение; КонецЕсли; - СпособГруппировкиОбъектов = Параметры.СпособГруппировкиОбъектов; Если Не ЗначениеЗаполнено(СпособГруппировкиОбъектов) Тогда СпособГруппировкиОбъектов = "ПоРазделам"; - Иначе + + ИначеЕсли СпособГруппировкиОбъектов = "ПоВидам" + Или СпособГруппировкиОбъектов = "ПоРазделам" Тогда + Элементы.СпособГруппировкиОбъектов.Видимость = Ложь; - КонецЕсли; - - ЗаполнитьДеревоОбъектов(); - - Если Параметры.РодительскиеПодсистемы.Количество()> 0 Тогда - Элементы.ДеревоОбъектовМетаданных.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; + Иначе + СпособыГруппировки = СтрРазделить(Параметры.СпособГруппировкиОбъектов, ",", Ложь); + Если СпособыГруппировки[0] = "ПоВидам" Тогда + СпособГруппировкиОбъектов = "ПоВидам"; + Иначе + СпособГруппировкиОбъектов = "ПоРазделам"; + КонецЕсли; КонецЕсли; Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда @@ -105,11 +140,18 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) - // Устанавливаем начальное значение выбора. - Если ИдентификаторТекущейСтрокиПриОткрытии > 0 Тогда - - Элементы.ДеревоОбъектовМетаданных.ТекущаяСтрока = ИдентификаторТекущейСтрокиПриОткрытии; + ЗаполнитьДеревоОбъектов(Истина); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки) + + Если Не Элементы.СпособГруппировкиОбъектов.Видимость + Или Настройки["СпособГруппировкиОбъектов"] <> "ПоВидам" + И Настройки["СпособГруппировкиОбъектов"] <> "ПоРазделам" Тогда + Настройки.Вставить("СпособГруппировкиОбъектов", СпособГруппировкиОбъектов); КонецЕсли; КонецПроцедуры @@ -122,6 +164,7 @@ &НаКлиенте Процедура ПометкаПриИзменении(Элемент) + ПометкаВыполнялась = Истина; ПриПометкеЭлементаДерева(ТекущийЭлемент.ТекущиеДанные); КонецПроцедуры @@ -129,14 +172,12 @@ &НаКлиенте Процедура РежимВыбораПриИзменении(Элемент) - АдресаВыбранныхОбъектов.Очистить(); - ОбновитьКоллекциюВыбранныеОбъектыМетаданных(); + Если ПометкаВыполнялась Тогда + АдресаВыбранныхОбъектов.Очистить(); + ОбновитьКоллекциюВыбранныеОбъектыМетаданных(); + КонецЕсли; ЗаполнитьДеревоОбъектов(); - Если ДеревоОбъектовМетаданных.ПолучитьЭлементы().Количество() = 1 Тогда - ИдентификаторСтроки = ДеревоОбъектовМетаданных.ПолучитьЭлементы()[0].ПолучитьИдентификатор(); - Элементы.ДеревоОбъектовМетаданных.Развернуть(ИдентификаторСтроки); - КонецЕсли; КонецПроцедуры @@ -175,18 +216,15 @@ Возврат; КонецЕсли; Иначе - - ВыбранныеОбъектыМетаданных.Очистить(); ОбновитьКоллекциюВыбранныеОбъектыМетаданных(); - КонецЕсли; - Если ВыбиратьСсылки Тогда + Если ВыбиратьСсылки Тогда ВыбратьСсылки(ВыбранныеОбъектыМетаданных); КонецЕсли; Если ЭтотОбъект.ОписаниеОповещенияОЗакрытии = Неопределено Тогда - Оповестить("ВыборОбъектовМетаданных", ВыбранныеОбъектыМетаданных, Параметры.УникальныйИдентификаторИсточник); + Оповестить("ВыборОбъектовМетаданных", ВыбранныеОбъектыМетаданных, УникальныйИдентификаторИсточник); КонецЕсли; Закрыть(ВыбранныеОбъектыМетаданных); @@ -207,18 +245,16 @@ &НаСервере Процедура ЗаполнитьВыбранныеОбъектыМетаданных() - ОбъектыМетаданных = Параметры.ВыбранныеОбъектыМетаданных.ВыгрузитьЗначения(); - ВыбранныеОбъектыМетаданных = ОбщегоНазначения.СкопироватьРекурсивно(Параметры.ВыбранныеОбъектыМетаданных); + ОбъектыМетаданных = ВыбранныеОбъектыМетаданных.ВыгрузитьЗначения(); - Если Параметры.ЗапоминатьРазделыВыбранныхОбъектов + Если ЗапоминатьРазделыВыбранныхОбъектов И ВыбранныеОбъектыМетаданных.Количество() > 0 И СтрНачинаетсяС(ВыбранныеОбъектыМетаданных[0].Представление, "./") Тогда Для Каждого Элемент Из ВыбранныеОбъектыМетаданных Цикл АдресаВыбранныхОбъектов.Добавить(Элемент.Представление, Элемент.Значение); КонецЦикла; КонецЕсли; - ВыбиратьСсылки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыбиратьСсылки", Ложь); - Если Не ВыбиратьСсылки Тогда + Если Не ВыбиратьСсылки Тогда Возврат; КонецЕсли; @@ -265,10 +301,10 @@ КонецПроцедуры // Процедура заполняет дерево значений объектов конфигурации. -// Если список значений "Параметры.КоллекцииВыбираемыхОбъектовМетаданных" не пуст, тогда +// Если список значений "КоллекцииВыбираемыхОбъектовМетаданных" не пуст, тогда // дерево будет ограничено переданным списком коллекций объектов метаданных. // Если объекты метаданных в сформированном дереве будут найдены в списке значений -// "Параметры.ВыбранныеОбъектыМетаданных", тогда они будут помечены, как выбранные. +// ВыбранныеОбъектыМетаданных, тогда они будут помечены, как выбранные. // &НаСервере Процедура ДеревоОбъектовМетаданныхЗаполнить() @@ -279,70 +315,72 @@ КоллекцииОбъектовМетаданных.Колонки.Добавить("Имя"); КоллекцииОбъектовМетаданных.Колонки.Добавить("Синоним"); КоллекцииОбъектовМетаданных.Колонки.Добавить("Картинка"); - КоллекцииОбъектовМетаданных.Колонки.Добавить("КартинкаОбъекта"); КоллекцииОбъектовМетаданных.Колонки.Добавить("ЭтоКоллекцияОбщие"); КоллекцииОбъектовМетаданных.Колонки.Добавить("ПолноеИмя"); КоллекцииОбъектовМетаданных.Колонки.Добавить("Родитель"); - КоллекцииОбъектовМетаданных_НоваяСтрока("Подсистемы", НСтр("ru = 'Подсистемы'"), 35, 36, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМодули", НСтр("ru = 'Общие модули'"), 37, 38, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыСеанса", НСтр("ru = 'Параметры сеанса'"), 39, 40, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Роли", НСтр("ru = 'Роли'"), 41, 42, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыОбмена", НСтр("ru = 'Планы обмена'"), 43, 44, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("КритерииОтбора", НСтр("ru = 'Критерии отбора'"), 45, 46, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПодпискиНаСобытия", НСтр("ru = 'Подписки на события'"), 47, 48, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("РегламентныеЗадания", НСтр("ru = 'Регламентные задания'"), 49, 50, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ФункциональныеОпции", НСтр("ru = 'Функциональные опции'"), 51, 52, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыФункциональныхОпций", НСтр("ru = 'Параметры функциональных опций'"), 53, 54, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ХранилищаНастроек", НСтр("ru = 'Хранилища настроек'"), 55, 56, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеФормы", НСтр("ru = 'Общие формы'"), 57, 58, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКоманды", НСтр("ru = 'Общие команды'"), 59, 60, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ГруппыКоманд", НСтр("ru = 'Группы команд'"), 61, 62, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Интерфейсы", НСтр("ru = 'Интерфейсы'"), 63, 64, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМакеты", НСтр("ru = 'Общие макеты'"), 65, 66, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКартинки", НСтр("ru = 'Общие картинки'"), 67, 68, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПакетыXDTO", НСтр("ru = 'XDTO-пакеты'"), 69, 70, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("WebСервисы", НСтр("ru = 'Web-сервисы'"), 71, 72, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("WSСсылки", НСтр("ru = 'WS-ссылки'"), 73, 74, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Стили", НСтр("ru = 'Стили'"), 75, 76, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Языки", НСтр("ru = 'Языки'"), 77, 78, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Подсистемы", НСтр("ru = 'Подсистемы'"), БиблиотекаКартинок.МетаданныеПодсистемы, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМодули", НСтр("ru = 'Общие модули'"), БиблиотекаКартинок.МетаданныеОбщиеМодули, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыСеанса", НСтр("ru = 'Параметры сеанса'"), БиблиотекаКартинок.МетаданныеПараметрыСеанса, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Роли", НСтр("ru = 'Роли'"), БиблиотекаКартинок.МетаданныеРоли, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеРеквизиты", НСтр("ru = 'Общие реквизиты'"), БиблиотекаКартинок.МетаданныеОбщиеРеквизиты, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыОбмена", НСтр("ru = 'Планы обмена'"), БиблиотекаКартинок.МетаданныеПланыОбмена, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("КритерииОтбора", НСтр("ru = 'Критерии отбора'"), БиблиотекаКартинок.МетаданныеКритерииОтбора, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПодпискиНаСобытия", НСтр("ru = 'Подписки на события'"), БиблиотекаКартинок.МетаданныеПодпискиНаСобытия, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегламентныеЗадания", НСтр("ru = 'Регламентные задания'"), БиблиотекаКартинок.МетаданныеРегламентныеЗадания, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ФункциональныеОпции", НСтр("ru = 'Функциональные опции'"), БиблиотекаКартинок.МетаданныеФункциональныеОпции, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПараметрыФункциональныхОпций", НСтр("ru = 'Параметры функциональных опций'"), БиблиотекаКартинок.МетаданныеПараметрыФункциональныхОпций, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ХранилищаНастроек", НСтр("ru = 'Хранилища настроек'"), БиблиотекаКартинок.МетаданныеХранилищаНастроек, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеФормы", НСтр("ru = 'Общие формы'"), БиблиотекаКартинок.МетаданныеОбщиеФормы, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКоманды", НСтр("ru = 'Общие команды'"), БиблиотекаКартинок.МетаданныеОбщиеКоманды, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ГруппыКоманд", НСтр("ru = 'Группы команд'"), БиблиотекаКартинок.МетаданныеГруппыКоманд, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Интерфейсы", НСтр("ru = 'Интерфейсы'"), Неопределено, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеМакеты", НСтр("ru = 'Общие макеты'"), БиблиотекаКартинок.МетаданныеОбщиеМакеты, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ОбщиеКартинки", НСтр("ru = 'Общие картинки'"), БиблиотекаКартинок.МетаданныеОбщиеКартинки, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПакетыXDTO", НСтр("ru = 'XDTO-пакеты'"), БиблиотекаКартинок.МетаданныеПакетыXDTO, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("WebСервисы", НСтр("ru = 'Web-сервисы'"), БиблиотекаКартинок.МетаданныеWebСервисы, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("HTTPСервисы", НСтр("ru = 'HTTP-сервисы'"), БиблиотекаКартинок.МетаданныеHTTPСервисы, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("WSСсылки", НСтр("ru = 'WS-ссылки'"), БиблиотекаКартинок.МетаданныеWSСсылки, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Стили", НСтр("ru = 'Стили'"), БиблиотекаКартинок.МетаданныеСтили, Истина, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Языки", НСтр("ru = 'Языки'"), БиблиотекаКартинок.МетаданныеЯзыки, Истина, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Константы", НСтр("ru = 'Константы'"), БиблиотекаКартинок.Константа, БиблиотекаКартинок.Константа, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Справочники", НСтр("ru = 'Справочники'"), БиблиотекаКартинок.Справочник, БиблиотекаКартинок.Справочник, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Документы", НСтр("ru = 'Документы'"), БиблиотекаКартинок.Документ, БиблиотекаКартинок.ДокументОбъект, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ЖурналыДокументов", НСтр("ru = 'Журналы документов'"), БиблиотекаКартинок.ЖурналДокументов, БиблиотекаКартинок.ЖурналДокументов, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Перечисления", НСтр("ru = 'Перечисления'"), БиблиотекаКартинок.Перечисление, БиблиотекаКартинок.Перечисление, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Отчеты", НСтр("ru = 'Отчеты'"), БиблиотекаКартинок.Отчет, БиблиотекаКартинок.Отчет, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Обработки", НСтр("ru = 'Обработки'"), БиблиотекаКартинок.Обработка, БиблиотекаКартинок.Обработка, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовХарактеристик", НСтр("ru = 'Планы видов характеристик'"), БиблиотекаКартинок.ПланВидовХарактеристик, БиблиотекаКартинок.ПланВидовХарактеристикОбъект, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыСчетов", НСтр("ru = 'Планы счетов'"), БиблиотекаКартинок.ПланСчетов, БиблиотекаКартинок.ПланСчетовОбъект, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовРасчета", НСтр("ru = 'Планы видов расчета'"), БиблиотекаКартинок.ПланВидовРасчета, БиблиотекаКартинок.ПланВидовРасчетаОбъект, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыСведений", НСтр("ru = 'Регистры сведений'"), БиблиотекаКартинок.РегистрСведений, БиблиотекаКартинок.РегистрСведений, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыНакопления", НСтр("ru = 'Регистры накопления'"), БиблиотекаКартинок.РегистрНакопления, БиблиотекаКартинок.РегистрНакопления, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыБухгалтерии", НСтр("ru = 'Регистры бухгалтерии'"), БиблиотекаКартинок.РегистрБухгалтерии, БиблиотекаКартинок.РегистрБухгалтерии, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыРасчета", НСтр("ru = 'Регистры расчета'"), БиблиотекаКартинок.РегистрРасчета, БиблиотекаКартинок.РегистрРасчета, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("БизнесПроцессы", НСтр("ru = 'Бизнес-процессы'"), БиблиотекаКартинок.БизнесПроцесс, БиблиотекаКартинок.БизнесПроцессОбъект, Ложь, КоллекцииОбъектовМетаданных); - КоллекцииОбъектовМетаданных_НоваяСтрока("Задачи", НСтр("ru = 'Задачи'"), БиблиотекаКартинок.Задача, БиблиотекаКартинок.ЗадачаОбъект, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Константы", НСтр("ru = 'Константы'"), БиблиотекаКартинок.МетаданныеКонстанты, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Справочники", НСтр("ru = 'Справочники'"), БиблиотекаКартинок.МетаданныеСправочники, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Документы", НСтр("ru = 'Документы'"), БиблиотекаКартинок.МетаданныеДокументы, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ЖурналыДокументов", НСтр("ru = 'Журналы документов'"), БиблиотекаКартинок.МетаданныеЖурналыДокументов, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Перечисления", НСтр("ru = 'Перечисления'"), БиблиотекаКартинок.МетаданныеПеречисления, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Отчеты", НСтр("ru = 'Отчеты'"), БиблиотекаКартинок.МетаданныеОтчеты, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Обработки", НСтр("ru = 'Обработки'"), БиблиотекаКартинок.МетаданныеОбработки, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовХарактеристик", НСтр("ru = 'Планы видов характеристик'"), БиблиотекаКартинок.МетаданныеПланыВидовХарактеристик, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыСчетов", НСтр("ru = 'Планы счетов'"), БиблиотекаКартинок.МетаданныеПланыСчетов, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ПланыВидовРасчета", НСтр("ru = 'Планы видов расчета'"), БиблиотекаКартинок.МетаданныеПланыВидовРасчета, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыСведений", НСтр("ru = 'Регистры сведений'"), БиблиотекаКартинок.МетаданныеРегистрыСведений, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыНакопления", НСтр("ru = 'Регистры накопления'"), БиблиотекаКартинок.МетаданныеРегистрыНакопления, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыБухгалтерии", НСтр("ru = 'Регистры бухгалтерии'"), БиблиотекаКартинок.МетаданныеРегистрыБухгалтерии, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("РегистрыРасчета", НСтр("ru = 'Регистры расчета'"), БиблиотекаКартинок.МетаданныеРегистрыРасчета, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("БизнесПроцессы", НСтр("ru = 'Бизнес-процессы'"), БиблиотекаКартинок.МетаданныеБизнесПроцессы, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("Задачи", НСтр("ru = 'Задачи'"), БиблиотекаКартинок.МетаданныеЗадачи, Ложь, КоллекцииОбъектовМетаданных); + КоллекцииОбъектовМетаданных_НоваяСтрока("ВнешниеИсточникиДанных", НСтр("ru = 'Внешние источники данных'"), БиблиотекаКартинок.МетаданныеВнешниеИсточникиДанных, Ложь, КоллекцииОбъектовМетаданных); // Создание предопределенных элементов. ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); ПараметрыЭлемента.Имя = Метаданные.Имя; ПараметрыЭлемента.Синоним = Метаданные.Синоним; - ПараметрыЭлемента.Картинка = 79; + ПараметрыЭлемента.Картинка = БиблиотекаКартинок.МетаданныеКонфигурация; ПараметрыЭлемента.Родитель = ДеревоОбъектовМетаданных; ЭлементКонфигурация = НоваяСтрокаДерева(ПараметрыЭлемента); ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); ПараметрыЭлемента.Имя = "Общие"; ПараметрыЭлемента.Синоним = НСтр("ru = 'Общие'"); - ПараметрыЭлемента.Картинка = 0; + ПараметрыЭлемента.Картинка = БиблиотекаКартинок.МетаданныеОбщие; ПараметрыЭлемента.Родитель = ЭлементКонфигурация; ЭлементОбщие = НоваяСтрокаДерева(ПараметрыЭлемента); // Заполнение дерева объектов метаданных. Для Каждого Строка Из КоллекцииОбъектовМетаданных Цикл - Если Параметры.КоллекцииВыбираемыхОбъектовМетаданных.Количество() = 0 - Или Параметры.КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(Строка.Имя) <> Неопределено Тогда + Если КоллекцииВыбираемыхОбъектовМетаданных.Количество() = 0 + Или КоллекцииВыбираемыхОбъектовМетаданных.НайтиПоЗначению(Строка.Имя) <> Неопределено Тогда Строка.Родитель = ?(Строка.ЭтоКоллекцияОбщие, ЭлементОбщие, ЭлементКонфигурация); ДобавитьЭлементДереваОбъектовМетаданных(Строка, ?(Строка.Имя = "Подсистемы", Метаданные.Подсистемы, Неопределено)); КонецЕсли; @@ -361,8 +399,7 @@ // Имя - Строка - имя родительского элемента. // Синоним - Строка - синоним родительского элемента. // Пометка - Булево - начальная пометка коллекции или объекта метаданных. -// Картинка - Число - код картинки родительского элемента. -// КартинкаОбъекта - Число - код картинки подэлемента. +// Картинка - Картинка - картинка родительского элемента. // Родитель - ссылка на элемента дерева значений, который является корнем // для добавляемого элемента. // @@ -374,8 +411,7 @@ СтруктураПараметров.Вставить("ПолноеИмя", ""); СтруктураПараметров.Вставить("Синоним", ""); СтруктураПараметров.Вставить("Пометка", 0); - СтруктураПараметров.Вставить("Картинка", 0); - СтруктураПараметров.Вставить("КартинкаОбъекта", Неопределено); + СтруктураПараметров.Вставить("Картинка", Неопределено); СтруктураПараметров.Вставить("Родитель", Неопределено); Возврат СтруктураПараметров; @@ -389,13 +425,17 @@ // // Параметры: // ПараметрыЭлемента - Структура: -// Имя - Строка - имя родительского элемента. -// Синоним - Строка - синоним родительского элемента. -// Пометка - Булево - начальная пометка коллекции или объекта метаданных. -// Картинка - Число - код картинки родительского элемента. -// КартинкаОбъекта - Число - код картинки подэлемента. -// Родитель - ссылка на элемента дерева значений, который является корнем -// для добавляемого элемента. +// * Имя - Строка - имя родительского элемента. +// * Синоним - Строка - синоним родительского элемента. +// * Пометка - Булево - начальная пометка коллекции или объекта метаданных. +// * Картинка - Картинка - картинка родительского элемента. +// * Родитель - ДанныеФормыЭлементДерева: +// ** Имя - Строка. +// ** Представление - Строка. +// ** Картинка - Картинка. +// ** ПолноеИмя - Строка. +// ** ЭтоОбъектМетаданных - Булево. +// ** Пометка - Булево. // Подсистемы - КоллекцияОбъектовМетаданных - если заполнен, то содержит значение Метаданные.Подсистемы (коллекцию элементов). // Проверять - Булево - признак проверки на принадлежность родительским подсистемам. // @@ -424,11 +464,12 @@ КонецЕсли; НоваяСтрока = НоваяСтрокаДерева(ПараметрыЭлемента, Подсистемы <> Неопределено И Подсистемы <> Метаданные.Подсистемы); + НоваяСтрока.ЭтоКоллекцияОбъектов = Истина; Для Каждого ЭлементКоллекцииМетаданных Из Метаданные[ПараметрыЭлемента.Имя] Цикл - Если Параметры.ФильтрПоОбъектамМетаданных.Количество() > 0 - И Параметры.ФильтрПоОбъектамМетаданных.НайтиПоЗначению(ЭлементКоллекцииМетаданных.ПолноеИмя()) = Неопределено Тогда + Если ФильтрПоОбъектамМетаданных.Количество() > 0 + И ФильтрПоОбъектамМетаданных.НайтиПоЗначению(ЭлементКоллекцииМетаданных.ПолноеИмя()) = Неопределено Тогда Продолжить; КонецЕсли; @@ -437,7 +478,8 @@ ПараметрыЭлемента.ПолноеИмя = ЭлементКоллекцииМетаданных.ПолноеИмя(); ПараметрыЭлемента.Синоним = ЭлементКоллекцииМетаданных.Синоним; ПараметрыЭлемента.Родитель = НоваяСтрока; - ПараметрыЭлемента.Картинка = КартинкаВКонфигураторе(ЭлементКоллекцииМетаданных); + ПараметрыЭлемента.Картинка = ?(ПараметрыЭлемента.Родитель.Картинка <> Неопределено, + ПараметрыЭлемента.Родитель.Картинка, КартинкаВКонфигураторе(ЭлементКоллекцииМетаданных)); НоваяСтрокаДерева(ПараметрыЭлемента, Истина); КонецЦикла; @@ -451,12 +493,13 @@ КонецЕсли; НоваяСтрока = НоваяСтрокаДерева(ПараметрыЭлемента, Подсистемы <> Неопределено И Подсистемы <> Метаданные.Подсистемы); + НоваяСтрока.ЭтоКоллекцияОбъектов = (Подсистемы = Метаданные.Подсистемы); Для Каждого ЭлементКоллекцииМетаданных Из Подсистемы Цикл Если Не Проверять - Или Параметры.РодительскиеПодсистемы.Количество() = 0 - Или Параметры.РодительскиеПодсистемы.НайтиПоЗначению(ЭлементКоллекцииМетаданных.Имя) <> Неопределено Тогда + Или РодительскиеПодсистемы.Количество() = 0 + Или РодительскиеПодсистемы.НайтиПоЗначению(ЭлементКоллекцииМетаданных.Имя) <> Неопределено Тогда ПараметрыЭлемента = ПараметрыЭлементаДереваОбъектовМетаданных(); ПараметрыЭлемента.Имя = ЭлементКоллекцииМетаданных.Имя; @@ -475,14 +518,25 @@ &НаСервере Функция НоваяСтрокаДерева(ПараметрыСтроки, ЭтоОбъектМетаданных = Ложь) - Коллекция = ПараметрыСтроки.Родитель.ПолучитьЭлементы(); // КоллекцияСтрокДереваЗначений + Коллекция = ПараметрыСтроки.Родитель.ПолучитьЭлементы(); НоваяСтрока = Коллекция.Добавить(); НоваяСтрока.Имя = ПараметрыСтроки.Имя; НоваяСтрока.Представление = ?(ЗначениеЗаполнено(ПараметрыСтроки.Синоним), ПараметрыСтроки.Синоним, ПараметрыСтроки.Имя); - НоваяСтрока.Пометка = ?(ВыбранныеОбъектыМетаданных.НайтиПоЗначению(ПараметрыСтроки.ПолноеИмя) = Неопределено, 0, 1); НоваяСтрока.Картинка = ПараметрыСтроки.Картинка; НоваяСтрока.ПолноеИмя = ПараметрыСтроки.ПолноеИмя; НоваяСтрока.ЭтоОбъектМетаданных = ЭтоОбъектМетаданных; + НоваяСтрока.Пометка = ?(ВыбранныеОбъектыМетаданных.НайтиПоЗначению(ПараметрыСтроки.ПолноеИмя) <> Неопределено + Или ЭтоОбъектМетаданных И ВыбранныеОбъектыМетаданных.НайтиПоЗначению(ПараметрыСтроки.Родитель.Имя) <> Неопределено, 1, 0); + + Если НоваяСтрока.Пометка + И НоваяСтрока.ЭтоОбъектМетаданных + И Не ЗначениеЗаполнено(ИдентификаторСтрокиПервогоВыбранногоОбъекта) Тогда + + ИдентификаторСтрокиПервогоВыбранногоОбъекта = НоваяСтрока.ПолучитьИдентификатор(); + Если Не ЗначениеЗаполнено(ИдентификаторТекущейСтрокиПриОткрытии) Тогда + ИдентификаторТекущейСтрокиПриОткрытии = ИдентификаторСтрокиПервогоВыбранногоОбъекта; + КонецЕсли; + КонецЕсли; Если НоваяСтрока.ЭтоОбъектМетаданных И НоваяСтрока.ПолноеИмя = НачальноеЗначениеВыбора Тогда @@ -501,18 +555,16 @@ // Синоним - Строка - синоним объекта метаданных. // Картинка - Число - картинка поставленная в соответствие объекту метаданных // или виду объекта метаданных. -// КартинкаОбъекта - Число // ЭтоКоллекцияОбщие - Булево - признак того, что текущий элемент содержит подэлементы. // Таб - ТаблицаЗначений // &НаСервере -Процедура КоллекцииОбъектовМетаданных_НоваяСтрока(Имя, Синоним, Картинка, КартинкаОбъекта, ЭтоКоллекцияОбщие, Таб) +Процедура КоллекцииОбъектовМетаданных_НоваяСтрока(Имя, Синоним, Картинка, ЭтоКоллекцияОбщие, Таб) НоваяСтрока = Таб.Добавить(); НоваяСтрока.Имя = Имя; НоваяСтрока.Синоним = Синоним; НоваяСтрока.Картинка = Картинка; - НоваяСтрока.КартинкаОбъекта = КартинкаОбъекта; НоваяСтрока.ЭтоКоллекцияОбщие = ЭтоКоллекцияОбщие; КонецПроцедуры @@ -642,13 +694,16 @@ ОписаниеОбъектовМетаданных = ВыбранныеОбъектыМетаданных.ВыгрузитьЗначения(); Ссылки = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ОписаниеОбъектовМетаданных, Ложь); - Для Каждого ЭлементСписка Из ВыбранныеОбъектыМетаданных Цикл - + ТекущийИндекс = ВыбранныеОбъектыМетаданных.Количество() - 1; + Пока ТекущийИндекс >= 0 Цикл + ЭлементСписка = ВыбранныеОбъектыМетаданных[ТекущийИндекс]; Ссылка = Ссылки[ЭлементСписка.Значение]; Если Ссылка <> Неопределено Тогда ЭлементСписка.Значение = Ссылка; + Иначе + ВыбранныеОбъектыМетаданных.Удалить(ЭлементСписка); КонецЕсли; - + ТекущийИндекс = ТекущийИндекс - 1; КонецЦикла; КонецПроцедуры @@ -745,8 +800,8 @@ Функция ОбъектМетаданныхДоступен(ОбъектМетаданных) Если Не ЭтоПодсистема(ОбъектМетаданных) Тогда - ЭтоВыбираемыйОбъект = Не ЗначениеЗаполнено(Параметры.КоллекцииВыбираемыхОбъектовМетаданных); - Для Каждого ВидОбъекта Из Параметры.КоллекцииВыбираемыхОбъектовМетаданных.ВыгрузитьЗначения() Цикл + ЭтоВыбираемыйОбъект = Не ЗначениеЗаполнено(КоллекцииВыбираемыхОбъектовМетаданных); + Для Каждого ВидОбъекта Из КоллекцииВыбираемыхОбъектовМетаданных.ВыгрузитьЗначения() Цикл Если Метаданные[ВидОбъекта].Содержит(ОбъектМетаданных) Тогда ЭтоВыбираемыйОбъект = Истина; Прервать; @@ -823,8 +878,31 @@ КонецФункции +&НаКлиенте +Процедура ЗаполнитьДеревоОбъектов(ПриОткрытии = Ложь) + + ИдентификаторыРазворачиваемыхСтрок = Новый Массив; + ЗаполнитьДеревоОбъектовНаСервере(ПриОткрытии, ИдентификаторыРазворачиваемыхСтрок); + + Если ПриОткрытии + И (РодительскиеПодсистемы.Количество() > 0 + Или КоллекцииВыбираемыхОбъектовМетаданных.Количество() = 1) Тогда + + Элементы.ДеревоОбъектовМетаданных.Развернуть(ИдентификаторыРазворачиваемыхСтрок[0], Истина); + Возврат; + КонецЕсли; + + Для Каждого ИдентификаторСтроки Из ИдентификаторыРазворачиваемыхСтрок Цикл + Элементы.ДеревоОбъектовМетаданных.Развернуть(ИдентификаторСтроки); + КонецЦикла; + +КонецПроцедуры + &НаСервере -Процедура ЗаполнитьДеревоОбъектов() +Процедура ЗаполнитьДеревоОбъектовНаСервере(ПриОткрытии, ИдентификаторыРазворачиваемыхСтрок) + + ИдентификаторТекущейСтрокиПриОткрытии = 0; + ИдентификаторСтрокиПервогоВыбранногоОбъекта = 0; Если СпособГруппировкиОбъектов = "ПоРазделам" Тогда ДеревоОбъектовМетаданныхЗаполнитьПоРазделам(); @@ -834,6 +912,32 @@ НачальнаяПометкаКоллекций(ДеревоОбъектовМетаданных); + Если ДеревоОбъектовМетаданных.ПолучитьЭлементы().Количество() < 1 Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ИдентификаторСтрокиПервогоВыбранногоОбъекта) Тогда + Строка = ДеревоОбъектовМетаданных.НайтиПоИдентификатору(ИдентификаторСтрокиПервогоВыбранногоОбъекта); + Пока Строка <> Неопределено Цикл + ИдентификаторыРазворачиваемыхСтрок.Вставить(0, Строка.ПолучитьИдентификатор()); + Строка = Строка.ПолучитьРодителя(); + КонецЦикла; + Иначе + ИдентификаторКорня = ДеревоОбъектовМетаданных.ПолучитьЭлементы()[0].ПолучитьИдентификатор(); + ИдентификаторыРазворачиваемыхСтрок.Добавить(ИдентификаторКорня); + КонецЕсли; + + // Устанавливаем начальное значение выбора. + Если (ПриОткрытии Или Не ПометкаВыполнялась) + И ИдентификаторТекущейСтрокиПриОткрытии > 0 Тогда + + Элементы.ДеревоОбъектовМетаданных.ТекущаяСтрока = ИдентификаторТекущейСтрокиПриОткрытии; + + ИначеЕсли ЗначениеЗаполнено(ИдентификаторСтрокиПервогоВыбранногоОбъекта) Тогда + + Элементы.ДеревоОбъектовМетаданных.ТекущаяСтрока = ИдентификаторСтрокиПервогоВыбранногоОбъекта; + КонецЕсли; + КонецПроцедуры #Область ПометкаЭлементов @@ -1175,8 +1279,21 @@ Результат = Новый Соответствие; Для Каждого Элемент Из Ветка.ПолучитьЭлементы() Цикл + Если СпособГруппировкиОбъектов = "ПоВидам" + И ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты + И Элемент.Пометка = 1 + И (Элемент.ЭтоКоллекцияОбъектов + Или Ветка = ДеревоОбъектовМетаданных) Тогда + + Если Элемент.ЭтоКоллекцияОбъектов Тогда + Результат.Вставить(Элемент.Имя, Элемент.Представление); + Иначе + Результат.Вставить("Конфигурация", НСтр("ru = 'Конфигурация'")); + КонецЕсли; + Продолжить; + КонецЕсли; Если Элемент.Пометка = 1 И Не ПустаяСтрока(Элемент.ПолноеИмя) И Элемент.ЭтоОбъектМетаданных Тогда - Результат.Вставить(Элемент.ПолноеИмя, ?(Параметры.ЗапоминатьРазделыВыбранныхОбъектов + Результат.Вставить(Элемент.ПолноеИмя, ?(ЗапоминатьРазделыВыбранныхОбъектов И СпособГруппировкиОбъектов = "ПоРазделам", Элемент.Адрес, Элемент.Представление)); КонецЕсли; Для Каждого ВыбранныйЭлемент Из ВыбранныеЭлементы(Элемент) Цикл diff --git a/SSL/src/CommonForms/НастройкиПравОбъектов/Form.form b/SSL/src/CommonForms/НастройкиПравОбъектов/Form.form index b6de16c3a..34eba55dc 100644 --- a/SSL/src/CommonForms/НастройкиПравОбъектов/Form.form +++ b/SSL/src/CommonForms/НастройкиПравОбъектов/Form.form @@ -74,7 +74,7 @@ <event>TextEditEnd</event> <name>ГруппыПравПользовательОкончаниеВводаТекста</name> </handlers> - <width>35</width> + <width>31</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <wrap>true</wrap> @@ -394,29 +394,483 @@ <autoMaxCardHeight>true</autoMaxCardHeight> <rowFilter xsi:type="core:UndefinedValue"/> </items> - <items xsi:type="form:FormField"> - <name>НаследоватьПраваРодителей</name> - <id>15</id> - <title> - <key>ru</key> - <value>Наследовать права от вышестоящих папок</value> - + + НаследованиеИЛегенда + 70 + + НаследоватьПраваРодителей + 15 + + <key>ru</key> + <value>Наследовать права от вышестоящих папок</value> + + true + true + + true + + + НаследоватьПраваРодителей + + Right + + OnChange + НаследоватьПраваРодителейПриИзменении + + + НаследоватьПраваРодителейExtendedTooltip + 58 + Label + true + true + + Left + + + + НаследоватьПраваРодителейКонтекстноеМеню + 16 + true + + CheckBoxField + Enter + true + Left + true + + + + Разделитель + 75 + true + true + + true + + + РазделительРасширеннаяПодсказка + 77 + Label + true + true + + Left + + + + РазделительКонтекстноеМеню + 76 + true + + Label + true + true + + Left + + + + Легенда + 78 + + ЛегендаПравоРазрешено + 80 + + КартинкаПравоРазрешено + 104 + + <key>ru</key> + <value>✔</value> + + true + true + + true + + + ru + Разрешает доступ + + + КартинкаПравоРазрешеноРасширеннаяПодсказка + 106 + Label + true + true + + Left + + + + КартинкаПравоРазрешеноКонтекстноеМеню + 105 + true + + Label + true + true + + Style.РазрешенноеПравоДоступаЦвет + + + Style.NormalTextFont + true + false + false + false + 120 + + + Left + + + + ОписаниеПравоРазрешено + 85 + + <key>ru</key> + <value>Разрешено </value> + + true + true + + true + + + ru + Разрешает доступ + + + ОписаниеПравоРазрешеноРасширеннаяПодсказка + 87 + Label + true + true + + Left + + + + ОписаниеПравоРазрешеноКонтекстноеМеню + 86 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Легенда право разрешено</value> + + + ЛегендаПравоРазрешеноРасширеннаяПодсказка + 81 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ЛегендаПравоЗапрещено + 88 + + КартинкаПравоЗапрещено + 107 + + <key>ru</key> + <value>✘</value> + + true + true + + true + + + ru + Запрещает доступ, даже если в других строках для этого пользователя/группы есть разрешение + + + КартинкаПравоЗапрещеноРасширеннаяПодсказка + 109 + Label + true + true + + Left + + + + КартинкаПравоЗапрещеноКонтекстноеМеню + 108 + true + + Label + true + true + + Style.ЗапрещенноеПравоДоступаЦвет + + + Style.NormalTextFont + true + false + false + false + 120 + + + Left + + + + ОписаниеПравоЗапрещено + 93 + + <key>ru</key> + <value>Запрещено </value> + + true + true + + true + + + ru + Запрещает доступ, даже если в других строках +для этого пользователя/группы есть разрешение + + + ОписаниеПравоЗапрещеноРасширеннаяПодсказка + 95 + Label + true + true + + Left + + + + ОписаниеПравоЗапрещеноКонтекстноеМеню + 94 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Легенда право запрещено</value> + + + ЛегендаПравоЗапрещеноРасширеннаяПодсказка + 89 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ЛегендаПравоНеНазначено + 96 + + КартинкаПравоНеНазначено + 110 + + <key>ru</key> + <value>●</value> + + true + true + + true + + + ru + Не разрешает доступ, но и не запрещает + + + КартинкаПравоНеНазначеноРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + + КартинкаПравоНеНазначеноКонтекстноеМеню + 111 + true + + Label + true + true + + Style.НеназначенноеПравоДоступаЦвет + + + Left + + + + ОписаниеПравоНеНазначено + 101 + + <key>ru</key> + <value>Не назначено </value> + + true + true + + true + + + ru + Не разрешает доступ, но и не запрещает + + + ОписаниеПравоНеНазначеноРасширеннаяПодсказка + 103 + Label + true + true + + Left + + + + ОписаниеПравоНеНазначеноКонтекстноеМеню + 102 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Легенда право не назначено</value> + + + ЛегендаПравоНеНазначеноРасширеннаяПодсказка + 97 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Легенда</value> + + Button + + ЛегендаРасширеннаяПодсказка + 79 + + <key>ru</key> + <value><fontsize 12><colorstyle 0:5a83b75a-38b0-4d15-9c6f-c201fa97e485>✔</></><fontsize 12><color #008000> </></><fontsize 10><colorstyle -3>р</></><fontsize 10><colorstyle -3>азрешает</></><fontsize 10><colorstyle -3> доступ</></> +<fontsize 12><colorstyle 0:0c44fdea-7b81-45be-87f5-d64456a9d379>✘</></><fontsize 12> </><fontsize 10><colorstyle -3>запрещает</></><fontsize 10><colorstyle -3> </></><fontsize 10><colorstyle -3>доступ, даже если в других </></><fontsize 10><colorstyle -3>строках для этого пользователя или </></><fontsize 10><colorstyle -3>группы есть разрешение </></> +<fontsize 12><colorstyle 0:0a83f9ec-eabe-4e8f-9fa9-0067acad6fc4>●</></><fontsize 12> </><fontsize 12> </><fontsize 10><colorstyle -3>н</></><fontsize 10><colorstyle -3>е разрешает доступ, но и не запрещает</></> + +<fontsize 10>Таким образом, п</><fontsize 10>ользователь </><fontsize 10>получит доступ, если ему или группе пользователей, в которую он входит</><fontsize 10>,</> +<fontsize 10>в соответствующей колонке установлено хотя бы одно разрешение </><fontsize 12><colorstyle 0:5a83b75a-38b0-4d15-9c6f-c201fa97e485>✔</></> +<fontsize 10>и не установлено ни одного запрета </><fontsize 12><colorstyle 0:0c44fdea-7b81-45be-87f5-d64456a9d379>✘</></><fontsize 12><color #000000>.</></></value> + + true + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + true true true - - НаследоватьПраваРодителей - - Right - - OnChange - НаследоватьПраваРодителейПриИзменении - + + <key>ru</key> + <value>Наследование и легенда</value> + - НаследоватьПраваРодителейExtendedTooltip - 58 + НаследованиеИЛегендаРасширеннаяПодсказка + 71 Label true true @@ -424,17 +878,14 @@ Left - - НаследоватьПраваРодителейКонтекстноеМеню - 16 - true - - CheckBoxField - Enter - true - Left - true - + UsualGroup + + Auto + true + true + Auto + Auto + ФормаКоманднаяПанель @@ -1004,7 +1455,7 @@ УстановитьРазрешениеПрава <key>ru</key> - <value>Установить разрешение права "Да"</value> + <value>Разрешено ✔</value> 4 @@ -1026,7 +1477,7 @@ УстановитьЗапретПрава <key>ru</key> - <value>Установить запрет права "Нет"</value> + <value>Запрещено ✘</value> 5 @@ -1048,7 +1499,7 @@ СнятьУстановкуПрава <key>ru</key> - <value>Снять установку права " "</value> + <value>Не назначено ●</value> 6 diff --git a/SSL/src/CommonForms/НастройкиПравОбъектов/Module.bsl b/SSL/src/CommonForms/НастройкиПравОбъектов/Module.bsl index 226b118ae..70bbbcb30 100644 --- a/SSL/src/CommonForms/НастройкиПравОбъектов/Module.bsl +++ b/SSL/src/CommonForms/НастройкиПравОбъектов/Module.bsl @@ -33,6 +33,9 @@ НСтр("ru = 'Нет права Просмотр на объекты типа ""%1"".'"), Строка(ТипСсылкиНаОбъект)); КонецЕсли; + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Права доступа: %1 (%2)'"), Строка(СсылкаНаОбъект), Строка(ТипСсылкиНаОбъект)); + // Проверка разрешения на открытие формы. ПроверитьРазрешениеНаУправлениеПравами(); @@ -338,23 +341,21 @@ &НаСервере Процедура УстановитьУсловноеОформление() - + УсловноеОформление.Элементы.Очистить(); - - // - - Элемент = УсловноеОформление.Элементы.Добавить(); - - ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГруппыПрав.Имя); - - ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); - ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); - ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; - ОтборЭлемента.ПравоеЗначение = Истина; - - Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); - + + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый); + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( + Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + + ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГруппыПрав.Имя); + КонецПроцедуры &НаКлиенте @@ -558,23 +559,20 @@ КонецЕсли; КонецЦикла; Иначе - Элемент = ДобавитьЭлемент("ГруппыПрав" + ПредставленияПрава.Имя, Тип("ПолеФормы"), Элементы.ГруппыПрав); - Элемент.ТолькоПросмотр = Истина; - Элемент.Формат = НСтр("ru = 'ЧЦ=1; ЧН=; БЛ=Нет; БИ=Да'"); + ИмяЭлемента = "ГруппыПрав" + ПредставленияПрава.Имя; + ПутьКДанным = "ГруппыПрав." + ПредставленияПрава.Имя; + Элемент = ДобавитьЭлемент(ИмяЭлемента, Тип("ПолеФормы"), Элементы.ГруппыПрав); + Элемент.Вид = ВидПоляФормы.ПолеНадписи; Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр; Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; - Элемент.ПутьКДанным = "ГруппыПрав." + ПредставленияПрава.Имя; + Элемент.ПутьКДанным = ПутьКДанным; Элемент.Подсказка = ПредставленияПрава.Подсказка; - // Расчет оптимальной ширины элемента. - ШиринаЭлемента = 0; - Для НомерСтроки = 1 По СтрЧислоСтрок(ПредставленияПрава.Заголовок) Цикл - ШиринаЭлемента = Макс(ШиринаЭлемента, СтрДлина(СтрПолучитьСтроку(ПредставленияПрава.Заголовок, НомерСтроки))); - КонецЦикла; - Если СтрЧислоСтрок(ПредставленияПрава.Заголовок) = 1 Тогда - ШиринаЭлемента = ШиринаЭлемента + 1; - КонецЕсли; - Элемент.Ширина = ШиринаЭлемента; + УстановитьШиринуПоЗаголовку(Элемент, ПредставленияПрава.Заголовок); + + УстановитьОформлениеФлажка(ИмяЭлемента, 0, ПутьКДанным, Неопределено); + УстановитьОформлениеФлажка(ИмяЭлемента, 1, ПутьКДанным, Истина); + УстановитьОформлениеФлажка(ИмяЭлемента, 2, ПутьКДанным, Ложь); КонецЕсли; Если Элементы.ГруппыПрав.ВысотаШапки < СтрЧислоСтрок(ПредставленияПрава.Заголовок) Тогда @@ -583,9 +581,9 @@ КонецЦикла; Если НовыеРеквизиты = Неопределено И Параметры.СсылкаНаОбъект.Метаданные().Иерархический Тогда + // Элемент "ГруппыПравНаследованиеРазрешено". Элемент = ДобавитьЭлемент("ГруппыПравНаследованиеРазрешено", Тип("ПолеФормы"), Элементы.ГруппыПрав); - Элемент.ТолькоПросмотр = Истина; - Элемент.Формат = НСтр("ru = 'ЧЦ=1; ЧН=; БЛ=Нет; БИ=Да'"); + Элемент.Вид = ВидПоляФормы.ПолеНадписи; Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр; Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; Элемент.ПутьКДанным = "ГруппыПрав.НаследованиеРазрешено"; @@ -594,29 +592,33 @@ |подпапок'"); Элемент.Подсказка = НСтр("ru = 'Права не только для текущей папки, |но и для ее нижестоящих папок'"); + УстановитьШиринуПоЗаголовку(Элемент); + УстановитьОформлениеФлажка("ГруппыПравНаследованиеРазрешено", 1, "ГруппыПрав.НаследованиеРазрешено", Истина); + УстановитьОформлениеФлажка("ГруппыПравНаследованиеРазрешено", 2, "ГруппыПрав.НаследованиеРазрешено", Ложь); + + // Элемент "ГруппыПравВладелецНастройки". Элемент = ДобавитьЭлемент("ГруппыПравВладелецНастройки", Тип("ПолеФормы"), Элементы.ГруппыПрав); - Элемент.ТолькоПросмотр = Истина; - Элемент.ПутьКДанным = "ГруппыПрав.ВладелецНастройки"; - Элемент.Заголовок = НСтр("ru = 'Наследуется от'"); - Элемент.Подсказка = НСтр("ru = 'Папка, от которой наследуются настройка прав'"); - Элемент.Видимость = РодительЗаполнен; + Элемент.Вид = ВидПоляФормы.ПолеНадписи; + Элемент.ПутьКДанным = "ГруппыПрав.ВладелецНастройки"; + Элемент.Заголовок = НСтр("ru = 'Наследуется от'"); + Элемент.Подсказка = НСтр("ru = 'Папка, от которой наследуются настройка прав'"); + Элемент.Видимость = РодительЗаполнен; + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); - ЭлементУсловногоОформления.Использование = Истина; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Text", ""); ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( Тип("ЭлементОтбораКомпоновкиДанных")); - ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Ложь; ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); - ОформляемоеПоле.Использование = Истина; ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ГруппыПравВладелецНастройки"); + Если Элементы.ГруппыПрав.ВысотаШапки = 1 Тогда Элементы.ГруппыПрав.ВысотаШапки = 2; КонецЕсли; @@ -624,6 +626,81 @@ КонецПроцедуры +&НаСервере +Процедура УстановитьШиринуПоЗаголовку(Элемент, Заголовок = "") + + Если Не ЗначениеЗаполнено(Заголовок) Тогда + Заголовок = Элемент.Заголовок; + КонецЕсли; + + ШиринаЭлемента = 0; + Для НомерСтроки = 1 По СтрЧислоСтрок(Заголовок) Цикл + ШиринаЭлемента = Макс(ШиринаЭлемента, СтрДлина(СтрПолучитьСтроку(Заголовок, НомерСтроки))); + КонецЦикла; + Элемент.Ширина = Цел(ШиринаЭлемента * 0.7); + + Если Элемент.Ширина < 3 Тогда + Элемент.Ширина = 3; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОформлениеФлажка(ИмяЭлемента, ВариантЦвета, ИмяРеквизита, ПравоеЗначение); + + Если ВариантЦвета = 0 Тогда + ЦветТекста = Метаданные.ЭлементыСтиля.НеназначенноеПравоДоступаЦвет.Значение; + Шрифт = Элементы.КартинкаПравоНеНазначено.Шрифт; + Символ = Элементы.КартинкаПравоНеНазначено.Заголовок; + + ИначеЕсли ВариантЦвета = 1 Тогда + ЦветТекста = Метаданные.ЭлементыСтиля.РазрешенноеПравоДоступаЦвет.Значение; + Шрифт = Элементы.КартинкаПравоРазрешено.Шрифт; + Символ = Элементы.КартинкаПравоРазрешено.Заголовок; + + ИначеЕсли ВариантЦвета = 2 Тогда + ЦветТекста = Метаданные.ЭлементыСтиля.ЗапрещенноеПравоДоступаЦвет.Значение; + Шрифт = Элементы.КартинкаПравоЗапрещено.Шрифт; + Символ = Элементы.КартинкаПравоЗапрещено.Заголовок; + КонецЕсли; + + // Цвет + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветТекста); + + Если ВариантЦвета <> 0 Тогда + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( + Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ГруппыПрав.НастройкаРодителя"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + КонецЕсли; + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( + Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяРеквизита); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = ПравоеЗначение; + + ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяЭлемента); + + // Шрифт и Текст. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Шрифт); + ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", Символ); + + ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить( + Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяРеквизита); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = ПравоеЗначение; + + ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяЭлемента); + +КонецПроцедуры + &НаСервере Процедура ЗаполнитьПрава() diff --git a/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Form.form b/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Form.form index 255b13643..06c0e534f 100644 --- a/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Form.form +++ b/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Form.form @@ -2480,6 +2480,33 @@ Normal + + ИзменитьПрефиксИБ + 769 + true + true + + true + + + ИзменитьПрефиксИБРасширеннаяПодсказка + 770 + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьПрефиксИБ + Normal + Auto + true + true + UserCmds + Auto + СписокПриложенийГруппаРасписаниеВыполненияОбмена 594 @@ -3788,6 +3815,28 @@ Auto Auto + + ИзменитьПрефиксИБ + + <key>ru</key> + <value>Изменить</value> + + 13 + + ru + Изменить префикс ИБ + + + true + + + + ИзменитьПрефиксИБ + + + Auto + Auto + diff --git a/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Module.bsl b/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Module.bsl index b453e436a..efe16cdef 100644 --- a/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Module.bsl +++ b/SSL/src/CommonForms/НастройкиСинхронизацииДанных/Module.bsl @@ -72,6 +72,10 @@ ОбновитьДанныеМонитораИнтерактивно(); + ИначеЕсли ИмяСобытия = "НаборКонстант.ПрефиксУзлаРаспределеннойИнформационнойБазы" Тогда + + ПрефиксИБ = Параметр; + КонецЕсли; КонецПроцедуры @@ -274,6 +278,16 @@ КонецПроцедуры +&НаКлиенте +Процедура ИзменитьПрефиксИБ(Команда) + + ПараметрыФормы = Новый Структура("Префикс", ПрефиксИБ); + + ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.ИзменениеПрефиксаУзлаИБ",ПараметрыФормы,,,,,, + РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + #КонецОбласти #КонецОбласти @@ -388,6 +402,7 @@ Если ПустаяСтрока(ИмяНабораСобытий) ИЛИ ИмяНабораСобытий = "СобытияВыгрузки" Тогда + ОтборТипыПредупреждений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения")); ОтборТипыПредупреждений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта")); ОтборТипыПредупреждений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных")); diff --git a/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Form.form b/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Form.form index da0fe6768..9d90c3601 100644 --- a/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Form.form +++ b/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Form.form @@ -45,8 +45,7 @@ Left true - 20 - true + 30 true false true @@ -72,12 +71,110 @@ МоиСертификаты + + + ru + Мои сертификаты с истекающим сроком действия + + + МоиСертификатыСИстекающимСрокомДействия + + Style.ФонУправляющегоПоля Normal + + СертификатыТолькоДействующие + 421 + true + true + + true + + + СертификатыТолькоДействующие + + Right + + OnChange + СертификатыТолькоДействующиеПриИзменении + + + СертификатыТолькоДействующиеРасширеннаяПодсказка + 423 + Label + true + true + + Left + + + + СертификатыТолькоДействующиеКонтекстноеМеню + 422 + true + + CheckBoxField + Enter + true + Left + true + + + + ПользовательОтбор + 376 + + <key>ru</key> + <value>Использует</value> + + true + true + + true + + + ПользовательОтбор + + + OnChange + ПользовательОтборПриИзменении + + + ПользовательОтборРасширеннаяПодсказка + 378 + Label + true + true + + Left + + + + ПользовательОтборКонтекстноеМеню + 377 + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + true + Normal + + СертификатыПоказатьЗаявления 334 @@ -155,7 +252,7 @@ UsualGroup - HorizontalIfPossible + AlwaysHorizontal Auto true true @@ -591,7 +688,7 @@ 260 <key>ru</key> - <value>Пользователь</value> + <value>Используют</value> true true @@ -874,10 +971,17 @@ true true - Сертификаты.DefaultPicture + Сертификаты.СостояниеСертификатаВЛичномХранилище + + CommonPicture.СостоянияСертификатов + true + + OnGetDataAtServer + СертификатыПриПолученииДанныхНаСервере + 60 0001-01-01T00:00:00 @@ -889,6 +993,451 @@ ГруппаПользовательскихНастроек + + ГруппаЛегенда + 379 + + ГруппаСертификатВЛичномХранилище + 393 + + ДекорацияКартинкаСертификатВЛичномХранилище + 381 + + <key>ru</key> + <value>Сертификат в личном хранилище</value> + + true + true + + true + + + ДекорацияКартинкаСертификатВЛичномХранилищеРасширеннаяПодсказка + 383 + Label + true + true + + Left + + + + ДекорацияКартинкаСертификатВЛичномХранилищеКонтекстноеМеню + 382 + true + + true + true + + + CommonPicture.СертификатВЛичномХранилище + + AsFileRef + + + + ДекорацияНадписьСертификатВЛичномХранилище + 401 + + <key>ru</key> + <value>Сертификат находится в личном хранилище на компьютере или доступен к использованию на сервере или в облаке</value> + + true + true + + true + + Button + + ДекорацияНадписьСертификатВЛичномХранилищеРасширеннаяПодсказка + 403 + Label + true + true + + Left + + + + ДекорацияНадписьСертификатВЛичномХранилищеКонтекстноеМеню + 402 + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификат в личном хранилище</value> + + + ГруппаСертификатВЛичномХранилищеРасширеннаяПодсказка + 394 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСрокДействияСертификатаЗаканчивается + 395 + + ДекорацияКартинкаСрокДействияСертификатаЗаканчивается + 387 + + <key>ru</key> + <value>Сертификат в личном хранилище</value> + + true + true + + true + + + ДекорацияКартинкаСрокДействияСертификатаЗаканчиваетсяРасширеннаяПодсказка + 389 + Label + true + true + + Left + + + + ДекорацияКартинкаСрокДействияСертификатаЗаканчиваетсяКонтекстноеМеню + 388 + true + + true + true + + + CommonPicture.СрокДействияСертификатаЗаканчивается + + AsFileRef + + + + ДекорацияНадписьСрокДействияСертификатаЗаканчивается + 404 + + <key>ru</key> + <value>До истечения срока действия сертификата осталось менее 30 календарных дней</value> + + true + true + + true + + Button + + ДекорацияНадписьСрокДействияСертификатаЗаканчиваетсяРасширеннаяПодсказка + 406 + Label + true + true + + Left + + + + ДекорацияНадписьСрокДействияСертификатаЗаканчиваетсяКонтекстноеМеню + 405 + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Срок действия сертификата заканчивается</value> + + + ГруппаСрокДействияСертификатаЗаканчиваетсяРасширеннаяПодсказка + 396 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСертификатПросрочен + 397 + + ДекорацияКартинкаСертификатПросрочен + 384 + + <key>ru</key> + <value>Декорация картинка сертификат просрочен</value> + + true + true + + true + + + ДекорацияКартинкаСертификатПросроченРасширеннаяПодсказка + 386 + Label + true + true + + Left + + + + ДекорацияКартинкаСертификатПросроченКонтекстноеМеню + 385 + true + + true + true + + + CommonPicture.СертификатПросрочен + + AsFileRef + + + + ДекорацияНадписьСертификатПросрочен + 407 + + <key>ru</key> + <value>Сертификат просрочен</value> + + true + true + + true + + + ДекорацияНадписьСертификатПросроченРасширеннаяПодсказка + 409 + Label + true + true + + Left + + + + ДекорацияНадписьСертификатПросроченКонтекстноеМеню + 408 + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификат просрочен</value> + + + ГруппаСертификатПросроченРасширеннаяПодсказка + 398 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСертификатТолькоДляШифрования + 413 + + ДекорацияКартинкаСертификатТолькоДляШифрования + 418 + + <key>ru</key> + <value>Декорация картинка сертификат только для шифрования</value> + + true + true + + true + + + ДекорацияКартинкаСертификатТолькоДляШифрованияРасширеннаяПодсказка + 420 + Label + true + true + + Left + + + + ДекорацияКартинкаСертификатТолькоДляШифрованияКонтекстноеМеню + 419 + true + + true + true + + + StdPicture.Attribute + + AsFileRef + + + + ДекорацияНадписьСертификатТолькоДляШифрования + 415 + + <key>ru</key> + <value>Сертификат может использоваться только для шифрования и расшифровки</value> + + true + true + + true + + + ДекорацияНадписьСертификатТолькоДляШифрованияРасширеннаяПодсказка + 417 + Label + true + true + + Left + + + + ДекорацияНадписьСертификатТолькоДляШифрованияКонтекстноеМеню + 416 + true + + Label + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Сертификат только для шифрования</value> + + + ГруппаСертификатТолькоДляШифрованияРасширеннаяПодсказка + 414 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Легенда</value> + + + ГруппаЛегендаРасширеннаяПодсказка + 380 + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Button + true + true + auto + Auto + Auto + + true true @@ -2460,6 +3009,60 @@ Auto InAdditionalSubmenu + + ФормаПоказатьВерсиюКомпонентыExtraCryptoAPI + 424 + true + true + + true + + + ФормаПоказатьВерсиюКомпонентыExtraCryptoAPIРасширеннаяПодсказка + 425 + Label + true + true + + Left + + + Form.Command.ПоказатьВерсиюКомпонентыExtraCryptoAPI + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаУстановитьКомпонентуExtraCryptoAPI + 430 + true + true + + true + + + ФормаУстановитьКомпонентуExtraCryptoAPIРасширеннаяПодсказка + 431 + Label + true + true + + Left + + + Form.Command.УстановитьКомпонентуExtraCryptoAPI + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left true @@ -2597,22 +3200,48 @@ СертификатыПереопределяемый.ДанныеСертификата КАК ДанныеСертификата, СертификатыПереопределяемый.Программа КАК Программа, СертификатыПереопределяемый.Отозван КАК Отозван, - СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча, + СертификатыПереопределяемый.ВводитьПарольВПрограммеЭлектроннойПодписи КАК ВводитьПарольВПрограммеЭлектроннойПодписи, СертификатыПереопределяемый.Организация КАК Организация, - ВЫБОР - КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) = 0 - ТОГДА СертификатыПереопределяемый.Пользователь - КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) = 1 - ТОГДА СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь - КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) > 1 - ТОГДА &НесколькоПользователей - ИНАЧЕ " " - КОНЕЦ КАК Пользователь, - СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия, + Выбор + Когда СертификатыПереопределяемый.Пользователь = Значение(Справочник.Пользователи.ПустаяСсылка) + Тогда " " + Иначе СертификатыПереопределяемый.Пользователь + Конец КАК Пользователь, СертификатыПереопределяемый.Добавил КАК Добавил, &ДополнительноеПоле КАК СостояниеЗаявления, СертификатыПереопределяемый.Предопределенный КАК Предопределенный, СертификатыПереопределяемый.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + Выбор + Когда СертификатыПереопределяемый.ПометкаУдаления + Тогда 1 + Когда &ЭтоЗаявление + Тогда 5 + Иначе Выбор + Когда СертификатыПереопределяемый.Отпечаток В (&СертификатыВЛичномХранилище) + Тогда Выбор + Когда СертификатыПереопределяемый.ДействителенДо < &ТекущаяДата + Тогда 4 + Когда СертификатыПереопределяемый.ДействителенДо < ДобавитьКДате(&ТекущаяДата, День, 30) + Тогда 3 + Иначе 2 + Конец + Иначе 0 + Конец + Конец КАК СостояниеСертификатаВЛичномХранилище, + Выбор + Когда НЕ СертификатыПереопределяемый.ПометкаУдаления + И НЕ СертификатыПереопределяемый.Отозван + И СертификатыПереопределяемый.ДействителенДо >= &ТекущаяДата + И СертификатыПереопределяемый.ДействителенДо <= ДобавитьКДате(&ТекущаяДата, День, 30) + Тогда Истина + Иначе Ложь + Конец КАК СрокДействияСкороЗакончится, + Выбор + Когда НЕ СертификатыПереопределяемый.Отозван + И СертификатыПереопределяемый.ДействителенДо > &ТекущаяДата + Тогда Истина + Иначе Ложь + Конец КАК Действует, ВЫБОР КОГДА ПрограммыПереопределяемый.ЭтоПрограммаОблачногоСервиса ТОГДА 4 @@ -2630,16 +3259,7 @@ Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыПереопределяемый ПО СертификатыПереопределяемый.Программа = ПрограммыПереопределяемый.Ссылка - ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ - СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка КАК Ссылка, - МАКСИМУМ(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь) КАК Пользователь, - КОЛИЧЕСТВО(*) КАК ВсегоПользователей - ИЗ - Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый - - СГРУППИРОВАТЬ ПО - СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка) КАК СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый - ПО (СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка = СертификатыПереопределяемый.Ссылка) + И &ДополнительноеСоединение ГДЕ (&ПользовательСертификата = НЕОПРЕДЕЛЕНО ИЛИ СертификатыПереопределяемый.Пользователь = &ПользовательСертификата @@ -3074,6 +3694,69 @@ + + СертификатыВЛичномХранилище + 17 + + ValueList + + + true + + + true + + + + + + + ПользовательОтбор + + <key>ru</key> + <value>Пользователь</value> + + 18 + + CatalogRef.Пользователи + + + true + + + true + + + + ЗаявлениеНаВыпускСертификатаДоступно + 19 + + Boolean + + + true + + + true + + + + СертификатыТолькоДействующие + + <key>ru</key> + <value>Только действующие сертификаты</value> + + 20 + + Boolean + + + true + + + true + + Обновить @@ -3192,6 +3875,60 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ПоказатьВерсиюКомпонентыExtraCryptoAPI</name> + <title> + <key>ru</key> + <value>Показать версию компоненты ExtraCryptoAPI</value> + + 6 + + ru + Показать версию установленной компоненты с предложением установки, если она не установлена или если загружена более новая компонента. + + + true + + + + ПоказатьВерсиюКомпонентыExtraCryptoAPI + + + Auto + Auto + + + УстановитьКомпонентуExtraCryptoAPI + + <key>ru</key> + <value>Установить компоненту ExtraCryptoAPI</value> + + 7 + + ru + Установить и подключить последнюю версию компоненты с предложением загрузки из интернета свежей версии, если она существует. + + + true + + + + УстановитьКомпонентуExtraCryptoAPI + + + Auto + Auto + + + СертификатыПоказать + + String + + 50 + + + true + diff --git a/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Module.bsl b/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Module.bsl index 8fe553283..89160c27c 100644 --- a/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Module.bsl +++ b/SSL/src/CommonForms/НастройкиЭлектроннойПодписиИШифрования/Module.bsl @@ -49,12 +49,20 @@ ПодписыватьНаСервере = Константы.СоздаватьЭлектронныеПодписиНаСервере.Получить(); КонецЕсли; - Если Пользователи.ЭтоПолноправныйПользователь() Тогда + Если ЗначениеЗаполнено(Параметры.СертификатыПоказать) Тогда + СертификатыПоказать = Параметры.СертификатыПоказать; + ИначеЕсли ЭтоПолноправныйПользователь Тогда СертификатыПоказать = "ВсеСертификаты"; Иначе СертификатыПоказать = "МоиСертификаты"; + КонецЕсли; - // Страница Программы + Если Не ЭтоПолноправныйПользователь ИЛИ СертификатыПоказать <> "ВсеСертификаты" Тогда + ПользовательОтбор = Пользователи.ТекущийПользователь(); + КонецЕсли; + + // Страница Программы + Если Не ПравоДоступа("Изменение", Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования) Тогда Элементы.Программы.ИзменятьСоставСтрок = Ложь; ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, @@ -78,13 +86,26 @@ НСтр("ru = 'Список программ, предусмотренных администратором, которые можно использовать на компьютере'"); КонецЕсли; + // Страница Сертификаты + ТекстЗапроса = Сертификаты.ТекстЗапроса; - Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + ЗаявлениеНаВыпускСертификатаДоступно = ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно; + Если ЗаявлениеНаВыпускСертификатаДоступно Тогда МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ЗаполнитьСписокВыбораСостоянияЗаявления(Элементы.СертификатыПоказатьЗаявления.СписокВыбора); МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСостояниемВСпискеСертификатов(ТекстЗапроса); + МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДобавитьЛегенду(ЭтотОбъект, Элементы.ГруппаЛегенда); + Элементы.СертификатыПоказать.СписокВыбора.Добавить("МоиЗаявленияВРаботе", НСтр("ru = 'Мои заявления в работе'")); + + Если Не ПравоДоступа("Добавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования) Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + "СертификатыДобавить", "Видимость", Ложь); + КонецЕсли; + Иначе ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительноеПоле", "НЕОПРЕДЕЛЕНО"); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ДополнительноеСоединение", ""); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЭтоЗаявление", "Ложь"); ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СертификатыСоздать", "Видимость", Истина); @@ -98,7 +119,9 @@ СвойстваСписка.ТекстЗапроса = ТекстЗапроса; ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Сертификаты, СвойстваСписка); - СертификатыОбновитьОтбор(ЭтотОбъект, Пользователи.ТекущийПользователь()); + СертификатыВЛичномХранилище = Новый СписокЗначений; + УстановитьПараметрыВСпискеСертификатовНаСервере(); + СертификатыОбновитьОтбор(ЭтотОбъект); Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда // Состав и настройки предусмотренных программ нельзя изменять. @@ -125,8 +148,6 @@ МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS"); Элементы.Программы.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов"); Элементы.Программы.ПутьКДаннымКартинкиСтроки = "Программы.ТипРазмещения"; - Элементы.Сертификаты.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов"); - Элементы.Сертификаты.ПутьКДаннымКартинкиСтроки = "Сертификаты.ТипРазмещения"; КонецЕсли; ОбновитьТекущуюВидимостьЭлементов(); @@ -137,6 +158,7 @@ Процедура ПриОткрытии(Отказ) ОпределитьУстановленныеПрограммы(); + ПодключитьОбработчикОжидания("ДобавитьСертификатыВЛичномХранилищеВПараметрДинамическогоСписка", 0.1, Истина); КонецПроцедуры @@ -144,17 +166,25 @@ Процедура ПриПовторномОткрытии() ОпределитьУстановленныеПрограммы(); + Если ЗначениеЗаполнено(Параметры.СертификатыПоказать) Тогда + СертификатыПоказать = Параметры.СертификатыПоказать; + СертификатыОбновитьОтбор(ЭтотОбъект); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) - Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") - И Параметр.Свойство("ЭтоНовый") Тогда - - Элементы.Сертификаты.Обновить(); - Элементы.Сертификаты.ТекущаяСтрока = Источник; + Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + Если Параметр.Количество() = 0 Тогда + Элементы.Сертификаты.Обновить(); + ИначеЕсли Параметр.Установлен Тогда + ПодключитьОбработчикОжидания("ОбновитьСписокСертификатов", 0.1, Истина); + ИначеЕсли Параметр.ЭтоНовый Тогда + Элементы.Сертификаты.Обновить(); + Элементы.Сертификаты.ТекущаяСтрока = Источник; + КонецЕсли; Возврат; КонецЕсли; @@ -208,7 +238,21 @@ &НаКлиенте Процедура СертификатыПоказатьЗаявленияПриИзменении(Элемент) - СертификатыОбновитьОтбор(ЭтотОбъект, ПользователиКлиент.ТекущийПользователь()); + СертификатыОбновитьОтбор(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатыТолькоДействующиеПриИзменении(Элемент) + + СертификатыОбновитьОтбор(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПользовательОтборПриИзменении(Элемент) + + СертификатыОбновитьОтбор(ЭтотОбъект); КонецПроцедуры @@ -342,6 +386,62 @@ КонецПроцедуры +&НаСервереБезКонтекста +Процедура СертификатыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) + + Для Каждого Строка Из Строки Цикл + Если НЕ Строка.Значение.Данные.Свойство("Пользователь") Тогда + Возврат; + КонецЕсли; + Прервать; + КонецЦикла; + + Запрос = Неопределено; + Для Каждого Строка Из Строки Цикл + Если ЗначениеЗаполнено(Строка.Значение.Данные.Пользователь) Тогда + Продолжить; + КонецЕсли; + Если Запрос = Неопределено Тогда + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка КАК Ссылка, + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь КАК Пользователь, + | Представление(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь) КАК ПользовательПредставление + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка В (&Ссылки) + |ИТОГИ + | КОЛИЧЕСТВО(Пользователь) + |ПО + | Ссылка"; + Запрос.УстановитьПараметр("Ссылки", Строки.ПолучитьКлючи()); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + КонецЕсли; + Если ВыборкаСсылка.НайтиСледующий(Строка.Значение.Данные["Ссылка"], "Ссылка") Тогда + КоличествоПользователей = ВыборкаСсылка.Пользователь; + ВыборкаПользователь = ВыборкаСсылка.Выбрать(); + ВыборкаПользователь.Следующий(); + Если КоличествоПользователей = 1 Тогда + Строка.Значение.Данные.Пользователь = ВыборкаПользователь.ПользовательПредставление; + Продолжить; + КонецЕсли; + Пользователь1 = ВыборкаПользователь.ПользовательПредставление; + ВыборкаПользователь.Следующий(); + Пользователь2 = ВыборкаПользователь.ПользовательПредставление; + Строка.Значение.Данные.Пользователь = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПользователиСертификатаСтрокой( + Пользователь1, Пользователь2, КоличествоПользователей); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыПрограммы @@ -438,8 +538,8 @@ Процедура Обновить(Команда) ЗаполнитьПрограммыИНастройки(Истина); - ОпределитьУстановленныеПрограммы(); + ОбновитьСписокСертификатов(); КонецПроцедуры @@ -467,6 +567,20 @@ КонецПроцедуры +&НаКлиенте +Процедура ПоказатьВерсиюКомпонентыExtraCryptoAPI(Команда) + + УстановитьПодключитьСообщитьВерсиюКомпоненты(Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьКомпонентуExtraCryptoAPI(Команда) + + УстановитьПодключитьСообщитьВерсиюКомпоненты(Истина); + +КонецПроцедуры + &НаКлиенте Процедура ПрограммыУстановитьПометкуУдаления(Команда) @@ -491,13 +605,66 @@ Новый ФорматированнаяСтрока(СодержимоеВопроса), РежимДиалогаВопрос.ДаНет); - КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции +&НаКлиенте +Процедура ОбновитьСписокСертификатов() + + СертификатыВЛичномХранилище = Новый СписокЗначений; + ОписаниеОповещения = Новый ОписаниеОповещения( + "ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте", + ЭтотОбъект, "ОбновитьНаСервере"); + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(ОписаниеОповещения, Истина, Истина, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьСертификатыВЛичномХранилищеВПараметрДинамическогоСписка() + + ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте( + Новый ОписаниеОповещения("ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте", ЭтотОбъект), + Истина, Истина, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте(Результат, Параметры) Экспорт + + Для Каждого КлючИЗначение Из Результат.СвойстваСертификатовНаКлиенте Цикл + СертификатыВЛичномХранилище.Добавить(КлючИЗначение.Ключ); + КонецЦикла; + + Если Параметры = "ОбновитьНаСервере" Тогда + УстановитьПараметрыВСпискеСертификатовНаСервере() + Иначе + ТекущаяДата = ОбщегоНазначенияКлиент.ДатаУниверсальная(); + УстановитьПараметрыВСпискеСертификатов(ЭтотОбъект, СертификатыВЛичномХранилище, ТекущаяДата); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьПараметрыВСпискеСертификатов(Форма, СписокСертификатов, ТекущаяДата) + + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Форма.Сертификаты, "СертификатыВЛичномХранилище", СписокСертификатов, Истина); + ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка( + Форма.Сертификаты, "ТекущаяДата", ТекущаяДата, Истина); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПараметрыВСпискеСертификатовНаСервере() + + ЭлектроннаяПодписьСлужебный.ДополнитьСписокСертификатовВЛичномХранилищеНаСервере(СертификатыВЛичномХранилище); + УстановитьПараметрыВСпискеСертификатов(ЭтотОбъект, СертификатыВЛичномХранилище, ТекущаяУниверсальнаяДата()); + +КонецПроцедуры + &НаСервере Процедура УстановитьУсловноеОформление() @@ -524,28 +691,60 @@ КонецПроцедуры &НаКлиентеНаСервереБезКонтекста -Процедура СертификатыОбновитьОтбор(Форма, ТекущийПользователь) +Процедура СертификатыОбновитьОтбор(Форма, ТекущийПользователь = Неопределено) Элементы = Форма.Элементы; // Отбор сертификатов Все/Мои. ПоказатьСвои = Форма.СертификатыПоказать <> "ВсеСертификаты"; + Если ТекущийПользователь <> Неопределено Тогда + Если ПоказатьСвои Тогда + Форма.ПользовательОтбор = ТекущийПользователь; + Иначе + Форма.ПользовательОтбор = Неопределено; + КонецЕсли; + КонецЕсли; - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Форма.Сертификаты, "ПользовательСертификата", - ?(ПоказатьСвои, ТекущийПользователь, Неопределено)); - ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Форма.Сертификаты, "НесколькоПользователей", - НСтр("ru = '<Несколько>'")); - - Форма.Сертификаты.Параметры.УстановитьЗначениеПараметра("ПользовательСертификата", - ?(ПоказатьСвои, ТекущийПользователь, Неопределено)); - + // Отбор по пользователю. Элементы.СертификатыПользователь.Видимость = Не ПоказатьСвои; + Элементы.ПользовательОтбор.Видимость = Не ПоказатьСвои; + Форма.Сертификаты.Параметры.УстановитьЗначениеПараметра("ПользовательСертификата", ?(ЗначениеЗаполнено( + Форма.ПользовательОтбор), Форма.ПользовательОтбор, Неопределено)); - Если Элементы.СертификатыПоказатьЗаявления.Видимость Тогда - // Отбор сертификатов по состоянию заявления. - ОтборПоСостояниюЗаявления = ЗначениеЗаполнено(Форма.СертификатыПоказатьЗаявления); + // Отбор по действующим. + ОтборПоДействующим = Не Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия" + И Не Форма.СертификатыПоказать = "МоиЗаявленияВРаботе"; + + Элементы.СертификатыТолькоДействующие.Видимость = ОтборПоДействующим; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты, + "Действует", Истина, , , ОтборПоДействующим И Форма.СертификатыТолькоДействующие); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты, + "СрокДействияСкороЗакончится", Истина, , ,Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия"); + + Если Форма.СертификатыПоказать = "МоиЗаявленияВРаботе" Тогда + + Форма.СертификатыПоказатьЗаявления = Неопределено; + Форма.Элементы.СертификатыПоказатьЗаявления.Видимость = Ложь; + + СостоянияЗаявления = Новый Массив; + СостоянияЗаявления.Добавить(ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено")); + СостоянияЗаявления.Добавить(ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Отклонено")); + + ОтборПоСостояниюЗаявления = Неопределено; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты, - "СостояниеЗаявления", Форма.СертификатыПоказатьЗаявления, , , ОтборПоСостояниюЗаявления); + "СостояниеЗаявления", СостоянияЗаявления, ВидСравненияКомпоновкиДанных.НеВСписке, , Истина); + Иначе + + Форма.Элементы.СертификатыПоказатьЗаявления.Видимость = Форма.ЗаявлениеНаВыпускСертификатаДоступно + И Не Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия"; + + Если Элементы.СертификатыПоказатьЗаявления.Видимость Тогда + // Отбор сертификатов по состоянию заявления. + ОтборПоСостояниюЗаявления = ЗначениеЗаполнено(Форма.СертификатыПоказатьЗаявления); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты, + "СостояниеЗаявления", Форма.СертификатыПоказатьЗаявления, , , ОтборПоСостояниюЗаявления); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -962,8 +1161,6 @@ &НаСервере Процедура ЗаполнитьПрограммыИНастройки(ОбновитьПовтИсп = Ложь) - Элементы.Сертификаты.Обновить(); - Если ОбновитьПовтИсп Тогда ОбновитьПовторноИспользуемыеЗначения(); КонецЕсли; @@ -1177,4 +1374,62 @@ КонецПроцедуры +&НаКлиенте +Процедура УстановитьПодключитьСообщитьВерсиюКомпоненты(ПредложитьЗагрузить) + + ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты(); + ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Требуется установка компоненты %1'"), "ExtraCryptoAPI"); + ПараметрыПодключения.ПредложитьЗагрузить = ПредложитьЗагрузить; + ПараметрыПодключения.ПредложитьУстановить = Истина; + + ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты(); + + ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета( + Новый ОписаниеОповещения("СообщитьРезультатПодключенияКомпоненты", ЭтотОбъект), + ОписаниеКомпоненты.ИмяОбъекта, + ОписаниеКомпоненты.ПолноеИмяМакета, + ПараметрыПодключения); + +КонецПроцедуры + +&НаКлиенте +Процедура СообщитьРезультатПодключенияКомпоненты(Результат, ДополнительныеПараметры) Экспорт + + Если Результат.Подключено Тогда + Попытка + ОповещениеПослеПолученияВерсии = Новый ОписаниеОповещения("СообщитьВерсиюКомпонентыПослеПодключения", ЭтотОбъект); + Результат.ПодключаемыйМодуль.НачатьВызовПолучитьВерсию(ОповещениеПослеПолученияВерсии); + Возврат; + Исключение + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось определить версию компоненты. + | %1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + ПоказатьПредупреждение(, ТекстОшибки); + КонецПопытки; + Иначе + Если ПустаяСтрока(Результат.ОписаниеОшибки) Тогда + // Пользователь отказался от установки. + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Компонента %1 не установлена.'"), "ExtraCryptoAPI"); + ПоказатьПредупреждение(, ТекстОшибки); + Иначе + // Установка не удалась, описание ошибки в Результат.ОписаниеОшибки. + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Компонента %1 не установлена (%2).'"), "ExtraCryptoAPI", Результат.ОписаниеОшибки); + ПоказатьПредупреждение(, ТекстОшибки); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СообщитьВерсиюКомпонентыПослеПодключения(Результат, Параметры, ДополнительныеПараметры) Экспорт + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Установлена компонента %1 версии %2.'"), "ExtraCryptoAPI", Результат); + ПоказатьПредупреждение(, ТекстСообщения); + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Form.form b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Form.form index a124ddeaf..068c0ff23 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Form.form +++ b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Form.form @@ -104,7 +104,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Help/ru.html b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Help/ru.html index a0cb235ed..ec56c9127 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Help/ru.html +++ b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Help/ru.html @@ -10,7 +10,7 @@
  • Если в программе после обновления версии еще проводится обработка данных, то для всех пользователей выводится предупреждение  Выполняются дополнительные процедуры обработки данных. В это время работа в программе временно ограничена, так как еще не завершен переход на новую версию.

Возможности для администратора

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

См. также:

  • diff --git a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Module.bsl b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Module.bsl index 558d862f2..6ac3ac8a5 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Module.bsl +++ b/SSL/src/CommonForms/ОписаниеИзмененийПрограммы/Module.bsl @@ -167,7 +167,7 @@ &НаКлиенте Процедура ОтложенноеОбновлениеДанных(Команда) - ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы"); КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl b/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl index 59434deb6..45addadf0 100644 --- a/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl +++ b/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl @@ -274,7 +274,9 @@ ДанныеВыбора = ПохожиеПолучателиИзСпискаПереданных(Текст); КонецЕсли; - СтандартнаяОбработка = ДанныеВыбора.Количество() = 0; + Если ДанныеВыбора.Количество() > 0 Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; КонецПроцедуры @@ -439,7 +441,17 @@ ОчиститьСообщения(); ЕстьОшибочныеПолучатели = Ложь; - Если ПоляЗаполненыКорректно() И ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели) Тогда + СообщениеОтправлено = Ложь; + Попытка + СообщениеОтправлено = ОтправитьПочтовоеСообщение(ЕстьОшибочныеПолучатели); + Исключение + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + ЗаголовокОшибки = НСтр("ru = 'Письмо не отправлено'"); + РаботаСПочтовымиСообщениямиКлиент.СообщитьОбОшибкеПодключения(УчетнаяЗапись, ЗаголовокОшибки, ТекстОшибки); + Возврат; + КонецПопытки; + + Если ПоляЗаполненыКорректно() И СообщениеОтправлено Тогда СохранитьАдресОтвета(АдресОтвета); ТребуетсяПодтверждениеЗакрытияФормы = Ложь; diff --git a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl index 9c21fc9ed..38216d98e 100644 --- a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl +++ b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl @@ -862,8 +862,8 @@ Если ТекущийРазделСсылка = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Для панели отчетов указан несуществующий раздел ""%1"" (см. ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов).'"), - Параметры.ПутьКПодсистеме); + НСтр("ru = 'Для панели отчетов указан несуществующий раздел ""%1"" (см. %2).'"), + Параметры.ПутьКПодсистеме, "ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов"); КонецЕсли; КлючНазначенияИспользования = "Раздел_" + Строка(ТекущийРазделСсылка.УникальныйИдентификатор()); @@ -1106,7 +1106,7 @@ Надпись.Высота = 2; КонецЕсли; Иначе - Надпись.Заголовок = НСтр("ru = 'В панели отчетов этого раздела не размещено ни одного отчета.'"); + Надпись.Заголовок = НСтр("ru = 'В этом разделе отчеты еще не размещены.'"); КонецЕсли; Элементы["БыстрыйДоступШапка"].Видимость = Ложь; Элементы["БыстрыйДоступПодвал"].Видимость = Ложь; diff --git a/SSL/src/CommonForms/ПечатьДокументов/Form.form b/SSL/src/CommonForms/ПечатьДокументов/Form.form index 8c963746d..34e0c075c 100644 --- a/SSL/src/CommonForms/ПечатьДокументов/Form.form +++ b/SSL/src/CommonForms/ПечатьДокументов/Form.form @@ -1185,7 +1185,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl index 221ca196b..40c2e1dc6 100644 --- a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl +++ b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl @@ -213,19 +213,16 @@ Если ИмяСобытия = "Запись_ПользовательскиеМакетыПечати" И Источник.ВладелецФормы = ЭтотОбъект И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету Тогда - ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1,Истина); + ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1, Истина); ИначеЕсли (ИмяСобытия = "ОтказОтИзмененияМакета" Или ИмяСобытия = "ОтменаРедактированияТабличногоДокумента" - И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету) - И Источник.ВладелецФормы = ЭтотОбъект Тогда + И Источник.ВладелецФормы = ЭтотОбъект + И СтрЗаканчиваетсяНа(НастройкаПечатнойФормы.ПутьКМакету, Параметр.ИмяОбъектаМетаданныхМакета)) Тогда ОтобразитьСостояниеТекущейПечатнойФормы(); ИначеЕсли ИмяСобытия = "Запись_ТабличныйДокумент" - И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету + И СтрЗаканчиваетсяНа(НастройкаПечатнойФормы.ПутьКМакету, Параметр.ИмяОбъектаМетаданныхМакета) И Источник.ВладелецФормы = ЭтотОбъект Тогда - Макет = Параметр.ТабличныйДокумент; - АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет); - ЗаписатьМакет(Параметр.ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, Параметр.КодЯзыка); - ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1,Истина); + ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1, Истина); КонецЕсли; УправлениеПечатьюКлиентПереопределяемый.ПечатьДокументовОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); @@ -1259,10 +1256,9 @@ ОтобразитьСостояниеТекущейПечатнойФормы(НСтр("ru = 'Макет редактируется'")); - ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету; - ПараметрыОткрытия = Новый Структура; - ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета); + ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", НастройкаПечатнойФормы.ПутьКМакету); + ПараметрыОткрытия.Вставить("Ссылка", СсылкаМакета(НастройкаПечатнойФормы.ПутьКМакету)); ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); ПараметрыОткрытия.Вставить("ИмяДокумента", НастройкаПечатнойФормы.Представление); ПараметрыОткрытия.Вставить("ТипМакета", "MXL"); @@ -1389,11 +1385,6 @@ Возврат УправлениеПечатьюКлиент.НастройкаТекущейПечатнойФормы(ЭтотОбъект); КонецФункции -&НаСервереБезКонтекста -Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, КодЯзыка) - УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, КодЯзыка); -КонецПроцедуры - &НаКлиенте Процедура ПерейтиКДокументуЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт @@ -1632,7 +1623,18 @@ КонецЦикла; КонецЕсли; - УправлениеПечатью.ДобавитьПодписьИПечать(ТабличныйДокумент, ПодписиИПечатиОбластей); + ДанныеПечатиРисунковТабличногоДокумента = УправлениеПечатью.ПодписиИПечатиТабличногоДокумента(ОбъектыПечати, ТабличныйДокумент, ТекущийЯзык); + Для Каждого ПодписиИПечатиОбласти Из ПодписиИПечатиОбластей Цикл + ИмяОбласти = ПодписиИПечатиОбласти.Ключ; + Если ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Неопределено Тогда + ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Новый Соответствие(); + КонецЕсли; + Для Каждого Элемент Из ПодписиИПечатиОбласти.Значение Цикл + ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти][Элемент.Ключ] = Элемент.Значение; + КонецЦикла; + КонецЦикла; + + УправлениеПечатью.ДобавитьПодписьИПечать(ТабличныйДокумент, ДанныеПечатиРисунковТабличногоДокумента); КонецЦикла; КонецПроцедуры @@ -1828,4 +1830,11 @@ КонецПроцедуры +&НаСервере +Функция СсылкаМакета(ИмяОбъектаМетаданныхМакета) + + Возврат Справочники.МакетыПечатныхФорм.СсылкаМакета(ИмяОбъектаМетаданныхМакета); + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonForms/Расширения/Module.bsl b/SSL/src/CommonForms/Расширения/Module.bsl index 0d76db576..41501b4c9 100644 --- a/SSL/src/CommonForms/Расширения/Module.bsl +++ b/SSL/src/CommonForms/Расширения/Module.bsl @@ -30,11 +30,6 @@ Элементы.СписокРасширенийБезопасныйРежимФлаг.ТолькоПросмотр = Истина; КонецЕсли; - Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() - И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Тогда - ВызватьИсключение НСтр("ru = 'Расширения недоступны в базовой версии программы.'"); - КонецЕсли; - Если Не ПравоДоступа("АдминистрированиеРасширенийКонфигурации", Метаданные) Тогда Элементы.СписокРасширенийОбновить.ТолькоВоВсехДействиях = Ложь; Элементы.СписокРасширений.ТолькоПросмотр = Истина; diff --git a/SSL/src/CommonForms/РегиональныеНастройки/Form.form b/SSL/src/CommonForms/РегиональныеНастройки/Form.form index ec6e98cc5..a4ffe9e55 100644 --- a/SSL/src/CommonForms/РегиональныеНастройки/Form.form +++ b/SSL/src/CommonForms/РегиональныеНастройки/Form.form @@ -618,9 +618,7 @@ 77 <key>ru</key> - <value>Перезаполнение строк предопределенных элементов и классификаторов. - -</value> + <value>Перезаполнение строк предопределенных элементов и классификаторов. </value> true true @@ -751,9 +749,7 @@ 72 <key>ru</key> - <value>Строки предопределенных элементов и классификаторов успешно перезаполнены. - -</value> + <value>Строки предопределенных элементов и классификаторов успешно перезаполнены.</value> true true @@ -1047,7 +1043,7 @@ ИспользоватьДополнительныйЯзык2 <key>ru</key> - <value>Использовать дополнительный язык1</value> + <value>Использовать дополнительный язык 2</value> 6 @@ -1138,6 +1134,19 @@ true + + ПродолжитьИзменениеМультиязычныхРеквизитов + 12 + + Boolean + + + true + + + true + + ОК diff --git a/SSL/src/CommonForms/РегиональныеНастройки/Module.bsl b/SSL/src/CommonForms/РегиональныеНастройки/Module.bsl index 7b40bb436..99ecbee84 100644 --- a/SSL/src/CommonForms/РегиональныеНастройки/Module.bsl +++ b/SSL/src/CommonForms/РегиональныеНастройки/Module.bsl @@ -65,11 +65,20 @@ ОтобразитьНастройкиДополнительныхЯзыков(Настройки, КоличествоЯзыков); КонецЕсли; + ДанныеДляИзмененияМультиязычныхРеквизитов = МультиязычностьСервер.ДанныеДляИзмененияМультиязычныхРеквизитов(); + Если ДанныеДляИзмененияМультиязычныхРеквизитов <> Неопределено Тогда + ПродолжитьИзменениеМультиязычныхРеквизитов = Истина; + КонецЕсли; + КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) + Если ПродолжитьИзменениеМультиязычныхРеквизитов Тогда + ПерезаполнитьДанные(); + КонецЕсли; + Если ИнформационнаяБазаФайловая И СтрНайти(ПараметрЗапуска, "ВыполнитьОбновлениеИЗавершитьРаботу") > 0 Тогда ПодключитьОбработчикОжидания("УстановитьЗначенияПоУмолчанию", 0.1, Истина); @@ -282,16 +291,45 @@ &НаСервере Функция ЗапуститьФоновоеПерезаполнениеНаСервере(Знач УникальныйИдентификатор) - ПараметрыМетода = СтарыеИНовыеЗначенияКонстант(); - ЗаписатьЗначенияКонстант(); - + Если Не ПродолжитьИзменениеМультиязычныхРеквизитов Тогда + СписокМетаданныхДляОбработки = ПодготовитьСписокМетаданныхДляОбработки(СтарыеИНовыеЗначенияКонстант()); + ЗаписатьЗначенияКонстант(СписокМетаданныхДляОбработки); + КонецЕсли; + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Перезаполнение строк предопределенных элементов и классификаторов.'"); - ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне("МультиязычностьСервер.ПерезаполнитьМультиязычныеСтрокиВОбъектах", - ПараметрыМетода, ПараметрыВыполнения); + ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне("МультиязычностьСервер.ИзменитьЯзыкВМультиязычныхРеквизитахКонфигурации", + Новый Структура, ПараметрыВыполнения); Возврат ФоновоеЗадание; + +КонецФункции + +&НаСервере +Функция ПодготовитьСписокМетаданныхДляОбработки(СтарыеИНовыеЗначенияКонстант) + + ОбъектыСМультиязычнымиРеквизитами = МультиязычностьСервер.ИменаОбъектовСМультиязычнымиРеквизитами(); + + ТекущиеСсылкиНаОбъекты = Новый Соответствие; + + Для Каждого ОбъектСМультиязычнымиРеквизитами Из ОбъектыСМультиязычнымиРеквизитами Цикл + + Настройки = Новый Структура; + Настройки.Вставить("СсылкаНаПоследнийОбработанныйОбъекты", Неопределено); + Настройки.Вставить("ЯзыковыеПоля", ОбъектСМультиязычнымиРеквизитами.Значение); + + ТекущиеСсылкиНаОбъекты.Вставить(ОбъектСМультиязычнымиРеквизитами.Ключ, Настройки); + КонецЦикла; + + НастройкиОбработки = Новый Структура; + НастройкиОбработки.Вставить("НастройкиИзмененияЯзыков", СтарыеИНовыеЗначенияКонстант); + НастройкиОбработки.Вставить("Объекты", ТекущиеСсылкиНаОбъекты); + + Значение = Новый ХранилищеЗначения(НастройкиОбработки); + + Возврат Значение; + КонецФункции &НаКлиенте @@ -349,7 +387,7 @@ КонецФункции &НаСервере -Процедура ЗаписатьЗначенияКонстант() +Процедура ЗаписатьЗначенияКонстант(СписокМетаданныхДляОбработки = Неопределено) Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда @@ -375,20 +413,35 @@ Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Или Не ОбщегоНазначения.РазделениеВключено() Тогда - Константы.ОсновнойЯзык.Установить(ОсновнойЯзык); - ПараметрыСеанса.ОсновнойЯзык = ОсновнойЯзык; - КодЯзыка1 = ?(ИспользоватьДополнительныйЯзык1, ДополнительныйЯзык1, ""); - Константы.ДополнительныйЯзык1.Установить(КодЯзыка1); - Константы.ИспользоватьДополнительныйЯзык1.Установить(ИспользоватьДополнительныйЯзык1); - КодЯзыка2 = ?(ИспользоватьДополнительныйЯзык2, ДополнительныйЯзык2, ""); - Константы.ДополнительныйЯзык2.Установить(КодЯзыка2); - Константы.ИспользоватьДополнительныйЯзык2.Установить(ИспользоватьДополнительныйЯзык2); + НачатьТранзакцию(); + Попытка + + ПараметрыСеанса.ОсновнойЯзык = ОсновнойЯзык; + + Константы.ОсновнойЯзык.Установить(ОсновнойЯзык); + + Константы.ДополнительныйЯзык1.Установить(КодЯзыка1); + Константы.ИспользоватьДополнительныйЯзык1.Установить(ИспользоватьДополнительныйЯзык1); + + Константы.ДополнительныйЯзык2.Установить(КодЯзыка2); + Константы.ИспользоватьДополнительныйЯзык2.Установить(ИспользоватьДополнительныйЯзык2); + + Константы.ДанныеДляИзмененияМультиязычныхРеквизитов.Установить(СписокМетаданныхДляОбработки); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; КонецЕсли; + ОбновитьПовторноИспользуемыеЗначения(); + КонецПроцедуры &НаСервере diff --git a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Form.form b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Form.form index 3796c2707..c562a6cd5 100644 --- a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Form.form +++ b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Form.form @@ -466,6 +466,63 @@ <representationInContextMenu>Auto</representationInContextMenu> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> </items> + <items xsi:type="form:Addition"> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <name>СписокПоиск</name> + <id>42</id> + <extendedTooltip> + <name>СписокПоискРасширеннаяПодсказка</name> + <id>44</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокПоискКонтекстноеМеню</name> + <id>43</id> + <autoFill>true</autoFill> + </contextMenu> + <source>ТаблицаЗначенийСвойств</source> + <extInfo xsi:type="form:SearchStringAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </items> + <items xsi:type="form:Addition"> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <name>СписокПоискУправление</name> + <id>45</id> + <extendedTooltip> + <name>СписокПоискУправлениеРасширеннаяПодсказка</name> + <id>47</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокПоискУправлениеКонтекстноеМеню</name> + <id>46</id> + <autoFill>true</autoFill> + </contextMenu> + <type>SearchControlAddition</type> + <source>ТаблицаЗначенийСвойств</source> + <extInfo xsi:type="form:SearchControlAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </items> <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form index 457b98e4f..4be58f3d9 100644 --- a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form @@ -5,22 +5,107 @@ <value>Табличный документ (Создание)</value> - КоманднаяПанель - 3 + Группа3 + 487 - ДействияСДокументом - 31 - - ЗаписатьИЗакрыть - 51 + КоманднаяПанель + 3 + + ДействияСДокументом + 31 + + ЗаписатьИЗакрыть + 51 + true + true + + true + + + ЗаписатьИЗакрытьExtendedTooltip + 96 + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Записать + 52 + true + true + + true + + + ЗаписатьExtendedTooltip + 97 + Label + true + true + + Left + + + Form.Command.Записать + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Редактирование + 84 + true + true + + true + + + РедактированиеExtendedTooltip + 98 + Label + true + true + + Left + + + Form.Command.Редактирование + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + true true true + + <key>ru</key> + <value>Действия с документом</value> + - ЗаписатьИЗакрытьExtendedTooltip - 96 + ДействияСДокументомExtendedTooltip + 95 Label true true @@ -28,25 +113,126 @@ Left - Form.Command.ЗаписатьИЗакрыть - Auto - true + + + + Группа5 + 470 + + Отменить + 472 + true + true + + true + + + ОтменитьРасширеннаяПодсказка + 473 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Undo + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Вернуть + 474 + true + true + + true + + + ВернутьРасширеннаяПодсказка + 475 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Redo + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + Группа5РасширеннаяПодсказка + 471 + Label + true + true + + Left + + + + Compact + + + + ПредварительныйПросмотр1 + 611 + true + true + + true + + + ПредварительныйПросмотр1РасширеннаяПодсказка + 612 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Preview + Normal + Picture true true UserCmds Auto + InCommandBarAndInAdditionalSubmenu - Записать - 52 + ПоказыватьКолонтитулы + 331 + + <key>ru</key> + <value>Колонтитулы</value> + true true true - ЗаписатьExtendedTooltip - 97 + ПоказыватьКолонтитулыРасширеннаяПодсказка + 332 Label true true @@ -54,25 +240,108 @@ Left - Form.Command.Записать + Form.Command.ПоказыватьКолонтитулы + Normal + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ПосмотретьПечатнуюФорму + 596 + true + true + + true + + + ПосмотретьПечатнуюФормуРасширеннаяПодсказка + 597 + Label + true + true + + Left + + + Form.Command.ПосмотретьПечатнуюФорму Normal Auto true true UserCmds Auto + InCommandBarAndInAdditionalSubmenu - - Редактирование - 84 + + ПовторятьНаКаждойСтранице + 629 + + ПовторятьВНачалеСтраницы + 551 + true + true + + true + + + ПовторятьВНачалеСтраницыРасширеннаяПодсказка + 552 + Label + true + true + + Left + + + Form.Command.ПовторятьВНачалеСтраницы + Normal + Auto + true + true + UserCmds + Auto + + + ПовторятьВКонцеСтраницы + 613 + true + true + + true + + + ПовторятьВКонцеСтраницыРасширеннаяПодсказка + 614 + Label + true + true + + Left + + + Form.Command.ПовторятьВКонцеСтраницы + Normal + Auto + true + true + UserCmds + Auto + true true true + + <key>ru</key> + <value>Группа7</value> + - РедактированиеExtendedTooltip - 98 + ПовторятьНаКаждойСтраницеРасширеннаяПодсказка + 630 Label true true @@ -80,13 +349,288 @@ Left - Form.Command.Редактирование + + Compact + + + + Перевод + 476 + + Язык + 265 + true + true + + true + + + <key>ru</key> + <value>Язык</value> + + + ЯзыкРасширеннаяПодсказка + 266 + Label + true + true + + Left + + + Popup + + Auto + Normal + + + + Перевести + 267 + true + true + + true + + + ПеревестиРасширеннаяПодсказка + 268 + Label + true + true + + Left + + + Form.Command.Перевести + Normal + true + true + UserCmds + + CommonPicture.РежимИспользованияПриложенияВСервисеЛокально + + Auto + InCommandBarAndInAdditionalSubmenu + + + КнопкаПоказатьСкрытьОригинал + 274 + true + true + + true + + + КнопкаПоказатьСкрытьОригиналРасширеннаяПодсказка + 275 + Label + true + true + + Left + + + Form.Command.ПоказатьСкрытьОригинал + Normal + Auto + true + true + UserCmds + + StdPicture.Document + + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Перевод</value> + + + ПереводРасширеннаяПодсказка + 477 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельExtendedTooltip + 94 + Label + true + true + + Left + + + CommandBar + + Left + + + + КнопкаДоступныеПоля + 480 + true + true + + true + + + КнопкаДоступныеПоляРасширеннаяПодсказка + 481 + Label + true + true + + Left + + + UsualButton + Form.Command.ДоступныеПоля + Normal + Auto + true + true + Right + UserCmds + true + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + true + + Группа3РасширеннаяПодсказка + 488 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + + + КоманднаяПанель2 + 392 + + КомандыРедактирования + 85 + + Переименовать + 633 + true + true + + true + + + ПереименоватьРасширеннаяПодсказка + 634 + Label + true + true + + Left + + + Form.Command.Переименовать Normal Auto true true UserCmds Auto + InAdditionalSubmenu + + + УдалитьШтампЭП + 607 + true + true + + true + + + УдалитьШтампЭПРасширеннаяПодсказка + 608 + Label + true + true + + Left + + + Form.Command.УдалитьШтампЭП + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + УдалитьЯзыкМакета + 609 + true + true + + true + + + УдалитьЯзыкМакетаРасширеннаяПодсказка + 610 + Label + true + true + + Left + + + Form.Command.УдалитьЯзыкМакета + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu РедактироватьВоВнешнейПрограмме @@ -115,127 +659,20 @@ Auto InAdditionalSubmenu - true - true - - true - - - <key>ru</key> - <value>Действия с документом</value> - - - ДействияСДокументомExtendedTooltip - 95 - Label - true - true - - Left - - - - - - Язык - 265 - true - true - - true - - - <key>ru</key> - <value>Язык</value> - - - ЯзыкРасширеннаяПодсказка - 266 - Label - true - true - - Left - - - Popup - - Auto - Normal - - - - Перевести - 267 - true - true - - true - - - ПеревестиРасширеннаяПодсказка - 268 - Label - true - true - - Left - - - Form.Command.Перевести - Normal - Auto - true - true - UserCmds - Auto - - - КнопкаПоказатьСкрытьОригинал - 274 - true - true - - true - - - КнопкаПоказатьСкрытьОригиналРасширеннаяПодсказка - 275 - Label - true - true - - Left - - - Form.Command.ПоказатьСкрытьОригинал - Normal - Auto - true - true - UserCmds - - StdPicture.Document - - Auto - - - ВсеДействия - 83 - ДействияСГруппами - 34 + Правка + 464 - ОтображатьГруппировки - 35 + ТабличныйДокументВставитьИзБуфераОбмена + 466 true true true - ОтображатьГруппировкиExtendedTooltip - 136 + ТабличныйДокументВставитьИзБуфераОбменаРасширеннаяПодсказка + 467 Label true true @@ -243,25 +680,26 @@ Left - Form.Item.ТабличныйДокумент.StandardCommand.ShowGroups + Form.Item.ТабличныйДокумент.StandardCommand.PasteFromClipboard Normal Auto true true UserCmds Auto + InCommandBarAndInAdditionalSubmenu - СвернутьВсеГруппы - 36 + ТабличныйДокументКопироватьВБуферОбмена + 468 true true true - СвернутьВсеГруппыExtendedTooltip - 137 + ТабличныйДокументКопироватьВБуферОбменаРасширеннаяПодсказка + 469 Label true true @@ -269,39 +707,14 @@ Left - Form.Item.ТабличныйДокумент.StandardCommand.CollapseAllGroups - Normal - Auto - true - true - UserCmds - Auto - - - РазвернутьВсеГруппы - 37 - true - true - - true - - - РазвернутьВсеГруппыExtendedTooltip - 138 - Label - true - true - - Left - - - Form.Item.ТабличныйДокумент.StandardCommand.ExpandAllGroups + Form.Item.ТабличныйДокумент.StandardCommand.CopyToClipboard Normal Auto true true UserCmds Auto + InCommandBarAndInAdditionalSubmenu true true @@ -310,11 +723,11 @@ <key>ru</key> - <value>Действия с группами</value> + <value>Правка</value> - ДействияСГруппамиExtendedTooltip - 135 + ПравкаРасширеннаяПодсказка + 465 Label true true @@ -322,58 +735,10 @@ Left - - - - ИзменитьФорму - 6 - true - true - - true - - - ИзменитьФормуExtendedTooltip - 139 - Label - true - true - - Left - - - Form.StandardCommand.CustomizeForm - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Все действия</value> - - - ВсеДействияExtendedTooltip - 134 - Label - true - true - - Left + + Compact - - - - - КомандыРедактирования - 85 + ФорматированиеТекста 53 @@ -407,32 +772,6 @@ Auto InCommandBarAndInAdditionalSubmenu - - УвеличитьРазмерШрифта - 55 - true - true - - true - - - УвеличитьРазмерШрифтаExtendedTooltip - 103 - Label - true - true - - Left - - - Form.Command.УвеличитьРазмерШрифта - Normal - Auto - true - true - UserCmds - Auto - УменьшитьРазмерШрифта 56 @@ -458,6 +797,34 @@ true UserCmds Auto + InCommandBarAndInAdditionalSubmenu + + + УвеличитьРазмерШрифта + 55 + true + true + + true + + + УвеличитьРазмерШрифтаExtendedTooltip + 103 + Label + true + true + + Left + + + Form.Command.УвеличитьРазмерШрифта + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu true true @@ -586,7 +953,7 @@ Form.Command.Зачеркивание Normal - Auto + Picture true true UserCmds @@ -746,7 +1113,113 @@ Left - + + Compact + + + + ВертикальноеВыравнивание + 615 + + ВыровнятьПоВерхнемуКраю + 617 + true + true + + true + + + ВыровнятьПоВерхнемуКраюРасширеннаяПодсказка + 618 + Label + true + true + + Left + + + Form.Command.ВыровнятьПоВерхнемуКраю + Normal + Auto + true + true + UserCmds + Auto + + + ВыровнятьПоСередине + 619 + true + true + + true + + + ВыровнятьПоСерединеРасширеннаяПодсказка + 620 + Label + true + true + + Left + + + Form.Command.ВыровнятьПоСередине + Normal + Auto + true + true + UserCmds + Auto + + + ВыровнятьПоНижнемуКраю + 621 + true + true + + true + + + ВыровнятьПоНижнемуКраюРасширеннаяПодсказка + 622 + Label + true + true + + Left + + + Form.Command.ВыровнятьПоНижнемуКраю + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа7</value> + + + ВертикальноеВыравниваниеРасширеннаяПодсказка + 616 + Label + true + true + + Left + + + + Compact + Цвет @@ -832,6 +1305,36 @@ Auto InCommandBarAndInAdditionalSubmenu + + ТабличныйДокументОчиститьФормат + 482 + true + true + + true + + + ТабличныйДокументОчиститьФорматРасширеннаяПодсказка + 483 + Label + true + true + + Left + + + Form.Command.ОчиститьФормат + Normal + Auto + true + true + UserCmds + + StdPicture.QueryWizardCreateTempTableDropQuery + + Auto + InCommandBarAndInAdditionalSubmenu + true true @@ -851,7 +1354,9 @@ Left - + + Compact + true true @@ -872,7 +1377,9 @@ Left - + + Compact + Границы @@ -1206,16 +1713,16 @@ ДействияСЯчейками 50 - ТабличныйДокументОбъединить - 263 + ТабличныйДокументПерейтиКЯчейке + 394 true true true - ТабличныйДокументОбъединитьРасширеннаяПодсказка - 264 + ТабличныйДокументПерейтиКЯчейкеРасширеннаяПодсказка + 395 Label true true @@ -1223,15 +1730,586 @@ Left - Form.Item.ТабличныйДокумент.StandardCommand.Merge + Form.Item.ТабличныйДокумент.StandardCommand.GoToCell Normal - Picture + Auto true true UserCmds Auto InCommandBarAndInAdditionalSubmenu + + ТабличныйДокументГруппа1 + 424 + + ТабличныйДокументОбъединить + 263 + true + true + + true + + + ТабличныйДокументОбъединитьРасширеннаяПодсказка + 264 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Merge + Normal + Picture + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа1РасширеннаяПодсказка + 425 + Label + true + true + + Left + + + + + + ТабличныйДокументГруппа3 + 428 + + ТабличныйДокументРаздвинуть + 396 + true + true + + true + + + ТабличныйДокументРаздвинутьРасширеннаяПодсказка + 397 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.InsertRows + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументРазбитьЯчейку + 398 + true + true + + true + + + ТабличныйДокументРазбитьЯчейкуРасширеннаяПодсказка + 399 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.SplitCell + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа3РасширеннаяПодсказка + 429 + Label + true + true + + Left + + + + + + ТабличныйДокументГруппа2 + 426 + + ТабличныйДокументВставитьСтрокиСверху + 400 + true + true + + true + + + ТабличныйДокументВставитьСтрокиСверхуРасширеннаяПодсказка + 401 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.InsertRowsTop + Normal + Auto + true + true + UserCmds + + CommonPicture.ВставитьГруппировкуВыше + + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументВставитьСтрокиСнизу + 402 + true + true + + true + + + ТабличныйДокументВставитьСтрокиСнизуРасширеннаяПодсказка + 403 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.InsertRowsBottom + Normal + Auto + true + true + UserCmds + + CommonPicture.ВставитьГруппировкуНиже + + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументУдалитьСтроки + 404 + true + true + + true + + + ТабличныйДокументУдалитьСтрокиРасширеннаяПодсказка + 405 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.DeleteRows + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа2РасширеннаяПодсказка + 427 + Label + true + true + + Left + + + + + + ТабличныйДокументГруппа4 + 430 + + ТабличныйДокументВставитьКолонкиСлева + 406 + true + true + + true + + + ТабличныйДокументВставитьКолонкиСлеваРасширеннаяПодсказка + 407 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.InsertColumnsLeft + Normal + Auto + true + true + UserCmds + + CommonPicture.ВставитьКолонкуСлева + + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументВставитьКолонкиСправа + 408 + true + true + + true + + + ТабличныйДокументВставитьКолонкиСправаРасширеннаяПодсказка + 409 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.InsertColumnsRight + Normal + Auto + true + true + UserCmds + + CommonPicture.ВставитьКолонкуСправа + + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументУдалитьКолонки + 410 + true + true + + true + + + ТабличныйДокументУдалитьКолонкиРасширеннаяПодсказка + 411 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.DeleteColumns + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа4РасширеннаяПодсказка + 431 + Label + true + true + + Left + + + + + + ТабличныйДокументГруппа5 + 432 + + ТабличныйДокументОчиститьВсе + 412 + true + true + + true + + + ТабличныйДокументОчиститьВсеРасширеннаяПодсказка + 413 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ClearAll + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументОчиститьСодержимое + 414 + true + true + + true + + + ТабличныйДокументОчиститьСодержимоеРасширеннаяПодсказка + 415 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ClearContent + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Очистить</value> + + + ТабличныйДокументГруппа5РасширеннаяПодсказка + 433 + Label + true + true + + Left + + + Popup + + Auto + Normal + + + + ТабличныйДокументГруппа6 + 434 + + ТабличныйДокументСкрыть + 416 + true + true + + true + + + ТабличныйДокументСкрытьРасширеннаяПодсказка + 417 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Hide + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументОтобразить + 418 + true + true + + true + + + ТабличныйДокументОтобразитьРасширеннаяПодсказка + 419 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Show + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа6РасширеннаяПодсказка + 435 + Label + true + true + + Left + + + + + + ТабличныйДокументГруппа7 + 436 + + ТабличныйДокументВысотаСтрок + 420 + true + true + + true + + + ТабличныйДокументВысотаСтрокРасширеннаяПодсказка + 421 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.RowHeight + Normal + Auto + true + true + UserCmds + + CommonPicture.ВысотаСтроки + + Auto + InCommandBarAndInAdditionalSubmenu + + + ТабличныйДокументШиринаКолонок + 422 + true + true + + true + + + ТабличныйДокументШиринаКолонокРасширеннаяПодсказка + 423 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ColumnWidth + Normal + Auto + true + true + UserCmds + + CommonPicture.ШиринаКолонки + + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + ТабличныйДокументГруппа7РасширеннаяПодсказка + 437 + Label + true + true + + Left + + + + true true @@ -1251,7 +2329,254 @@ Left - + Popup + + + StdPicture.SpreadsheetInsertComment + + Picture + Normal + + + + Рисунки + 438 + + Картинка + 440 + true + true + + true + + + КартинкаРасширеннаяПодсказка + 441 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Picture + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Текст + 442 + true + true + + true + + + ТекстРасширеннаяПодсказка + 443 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Text + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Прямоугольник + 444 + true + true + + true + + + ПрямоугольникРасширеннаяПодсказка + 445 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Rectangle + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Прямая + 446 + true + true + + true + + + ПрямаяРасширеннаяПодсказка + 447 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Line + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Эллипс + 448 + true + true + + true + + + ЭллипсРасширеннаяПодсказка + 449 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Ellipse + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Группа6 + 454 + + Сгруппировать + 450 + true + true + + true + + + СгруппироватьРасширеннаяПодсказка + 451 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Group + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + Разгруппировать + 452 + true + true + + true + + + РазгруппироватьРасширеннаяПодсказка + 453 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Ungroup + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + Группа6РасширеннаяПодсказка + 455 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Рисунки</value> + + + РисункиРасширеннаяПодсказка + 439 + Label + true + true + + Left + + + Popup + + + StdPicture.Picture + + Picture + Normal + true true @@ -1272,8 +2597,546 @@ Left + + + + КоманднаяПанельКолонтитулов + 478 + + КомандыТекстаСлеваВерхнегоКолонтитула + 577 + true + + true + + + <key>ru</key> + <value>Команды текста слева верхнего колонтитула</value> + + + КомандыТекстаСлеваВерхнегоКолонтитулаРасширеннаяПодсказка + 578 + Label + true + true + + Left + + + + Item.ТекстСлеваСверху + + + + КомандыТекстаВЦентреВерхнегоКолонтитула + 579 + true + + true + + + <key>ru</key> + <value>Команды текста в центре верхнего колонтитула</value> + + + КомандыТекстаВЦентреВерхнегоКолонтитулаРасширеннаяПодсказка + 580 + Label + true + true + + Left + + + + Item.ТекстВЦентреСверху + + + + КомандыТекстаСправаВерхнегоКолонтитула + 581 + true + + true + + + <key>ru</key> + <value>Команды текста справа верхнего колонтитула</value> + + + КомандыТекстаСправаВерхнегоКолонтитулаРасширеннаяПодсказка + 582 + Label + true + true + + Left + + + + Item.ТекстСправаСверху + + + + КомандыТекстаСлеваНижнегоКолонтитула + 585 + true + + true + + + <key>ru</key> + <value>Команды текста слева нижнего колонтитула</value> + + + КомандыТекстаСлеваНижнегоКолонтитулаРасширеннаяПодсказка + 586 + Label + true + true + + Left + + + + Item.ТекстСлеваСнизу + + + + КомандыТекстаВЦентреНижнегоКолонтитула + 587 + true + + true + + + <key>ru</key> + <value>Команды текста в центре нижнего колонтитула</value> + + + КомандыТекстаВЦентреНижнегоКолонтитулаРасширеннаяПодсказка + 588 + Label + true + true + + Left + + + + Item.ТекстВЦентреСнизу + + + + КомандыТекстаСправаНижнегоКолонтитула + 589 + true + + true + + + <key>ru</key> + <value>Команды текста справа нижнего колонтитула</value> + + + КомандыТекстаСправаНижнегоКолонтитулаРасширеннаяПодсказка + 590 + Label + true + true + + Left + + + + Item.ТекстСправаСнизу + + + true + + true + + + <key>ru</key> + <value>Командная панель колонтитулов</value> + + + КоманднаяПанельКолонтитуловРасширеннаяПодсказка + 479 + Label + true + true + + Left + + + + + + ВсеДействия + 83 + + ДействияСГруппами + 34 + + ОтображатьГруппировки + 35 + true + true + + true + + + ОтображатьГруппировкиExtendedTooltip + 136 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ShowGroups + Normal + Auto + true + true + UserCmds + Auto + + + СвернутьВсеГруппы + 36 + true + true + + true + + + СвернутьВсеГруппыExtendedTooltip + 137 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.CollapseAllGroups + Normal + Auto + true + true + UserCmds + Auto + + + РазвернутьВсеГруппы + 37 + true + true + + true + + + РазвернутьВсеГруппыExtendedTooltip + 138 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ExpandAllGroups + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Действия с группами</value> + + + ДействияСГруппамиExtendedTooltip + 135 + Label + true + true + + Left + + + + + + ИзменитьФорму + 6 + true + true + + true + + + ИзменитьФормуExtendedTooltip + 139 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + ГруппаПечать + 333 + + Печать + 335 + true + true + + true + + + ПечатьРасширеннаяПодсказка + 336 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Print + Normal + Auto + true + true + UserCmds + Auto + + + ПредварительныйПросмотр + 337 + true + true + + true + + + ПредварительныйПросмотрРасширеннаяПодсказка + 338 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.Preview + Normal + Auto + true + true + UserCmds + Auto + + + ПараметрыСтраницы + 339 + true + true + + true + + + ПараметрыСтраницыРасширеннаяПодсказка + 340 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.PageSetup + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа печать</value> + + + ru + Группа печать + + + ГруппаПечатьРасширеннаяПодсказка + 334 + Label + true + true + + Left + + + + + + ИмпортЭкспорт + 627 + + СохранитьВФайл + 623 + true + true + + true + + + СохранитьВФайлРасширеннаяПодсказка + 624 + Label + true + true + + Left + + + Form.Command.СохранитьВФайл + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ЗагрузитьИзФайла + 625 + true + true + + true + + + ЗагрузитьИзФайлаРасширеннаяПодсказка + 626 + Label + true + true + + Left + + + Form.Command.ЗагрузитьИзФайла + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Группа7</value> + + + ИмпортЭкспортРасширеннаяПодсказка + 628 + Label + true + true + + Left + + + + + + Таблица + 631 + true + true + + true + + + <key>ru</key> + <value>Таблица</value> + + + ТаблицаРасширеннаяПодсказка + 632 + Label + true + true + + Left + + + Popup + + Auto + Item.ТабличныйДокумент + Normal + + + true + true + + true + + + <key>ru</key> + <value>Все действия</value> + + + ВсеДействияExtendedTooltip + 134 + Label + true + true + + Left + + - Item.ТабличныйДокумент + Form @@ -1309,11 +3172,11 @@ <key>ru</key> - <value>Командная панель</value> + <value>Командная панель 2</value> - КоманднаяПанельExtendedTooltip - 94 + КоманднаяПанель2РасширеннаяПодсказка + 393 Label true true @@ -1400,7 +3263,6 @@ Left - true true true @@ -1433,80 +3295,1093 @@ Макеты 272 - - ПоставляемыйМакет - 269 - true - - true - - - ПоставляемыйМакет - - - ПоставляемыйМакетРасширеннаяПодсказка - 271 - Label - true - true - - Left + + Группа2 + 294 + + ВерхнийКолонтитул + 355 + + ТекстСлеваСверху + 357 + true + true + + true + + + ТекстСлеваСверху + + None + + OnChange + ТекстСлеваСверхуПриИзменении + + + ТекстСлеваСверхуExtendedTooltip + 359 + Label + true + true + + Left + + + + ТекстСлеваСверхуКонтекстноеМеню + 358 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + + ТекстВЦентреСверху + 360 + true + true + + true + + + ТекстВЦентреСверху + + None + + OnChange + ТекстВЦентреСверхуПриИзменении + + + ТекстВЦентреСверхуExtendedTooltip + 362 + Label + true + true + + Left + + + + ТекстВЦентреСверхуКонтекстноеМеню + 361 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + + ТекстСправаСверху + 363 + true + true + + true + + + ТекстСправаСверху + + None + + OnChange + ТекстСправаСверхуПриИзменении + + + ТекстСправаСверхуExtendedTooltip + 365 + Label + true + true + + Left + + + + ТекстСправаСверхуКонтекстноеМеню + 364 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Верхний колонтитул</value> + + + ВерхнийКолонтитулРасширеннаяПодсказка + 356 + Label + true + true + + Left + + + UsualGroup + + Auto + true + Button + true + auto + Auto + Auto - - - ПоставляемыйМакетКонтекстноеМеню - 270 - true - - SpreadsheetDocumentField - Enter - true - Left - true - - - OnActivate - ПоставляемыйМакетПриАктивизации - - 50 - true - 10 - true - true - true - true - true - true - true - Special - ScrollAuto - ScrollAuto - Always - Auto - true - true - true - - - - ТабличныйДокумент - 1 - - <key>ru</key> - <value>Измененный макет</value> - + + + ГруппаМакеты + 292 + + СтраницыМакетов + 601 + + СтраницаМакет + 603 + + ПоставляемыйМакет + 269 + true + + true + + + ПоставляемыйМакет + + + ПоставляемыйМакетРасширеннаяПодсказка + 271 + Label + true + true + + Left + + + + ПоставляемыйМакетКонтекстноеМеню + 270 + true + + SpreadsheetDocumentField + Enter + true + Left + true + + + OnActivate + ПоставляемыйМакетПриАктивизации + + 50 + true + 10 + true + true + true + true + true + true + true + Special + ScrollAuto + ScrollAuto + Always + Auto + true + true + true + + + + ТабличныйДокумент + 1 + + <key>ru</key> + <value>Измененный макет</value> + + true + true + + true + + + ТабличныйДокумент + + None + + ТабличныйДокументExtendedTooltip + 144 + Label + true + true + + Left + + + + ТабличныйДокументКонтекстноеМеню + 2 + true + + SpreadsheetDocumentField + Enter + true + Left + true + + + DragCheck + ТабличныйДокументПроверкаПеретаскивания + + + OnActivate + ТабличныйДокументПриАктивизации + + + Drag + ТабличныйДокументПеретаскивание + + 50 + true + 10 + true + true + true + true + true + Special + ScrollAlways + ScrollAlways + Always + Auto + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница макет</value> + + + СтраницаМакетРасширеннаяПодсказка + 604 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаОбразец + 605 + + ПечатнаяФорма + 598 + true + true + + true + + + ПечатнаяФорма + + None + + ПечатнаяФормаРасширеннаяПодсказка + 600 + Label + true + true + + Left + + + + ПечатнаяФормаКонтекстноеМеню + 599 + true + + SpreadsheetDocumentField + Enter + true + Left + true + + 50 + true + 10 + true + true + true + Special + ScrollAuto + ScrollAuto + Always + Auto + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница образец</value> + + + СтраницаОбразецРасширеннаяПодсказка + 606 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы макетов</value> + + + СтраницыМакетовРасширеннаяПодсказка + 602 + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Макеты</value> + + + ГруппаМакетыРасширеннаяПодсказка + 293 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + НижнийКолонтитул + 366 + + ТекстСлеваСнизу + 368 + true + true + + true + + + ТекстСлеваСнизу + + None + + OnChange + ТекстСлеваСнизуПриИзменении + + + ТекстСлеваСнизуExtendedTooltip + 370 + Label + true + true + + Left + + + + ТекстСлеваСнизуКонтекстноеМеню + 369 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + + ТекстВЦентреСнизу + 371 + true + true + + true + + + ТекстВЦентреСнизу + + None + + OnChange + ТекстВЦентреСнизуПриИзменении + + + ТекстВЦентреСнизуExtendedTooltip + 373 + Label + true + true + + Left + + + + ТекстВЦентреСнизуКонтекстноеМеню + 372 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + + ТекстСправаСнизу + 374 + true + true + + true + + + ТекстСправаСнизу + + None + + OnChange + ТекстСправаСнизуПриИзменении + + + ТекстСправаСнизуExtendedTooltip + 376 + Label + true + true + + Left + + + + ТекстСправаСнизуКонтекстноеМеню + 375 + true + + FormattedDocumentField + Enter + true + Left + true + + 20 + true + 2 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Нижний колонтитул</value> + + + НижнийКолонтитулРасширеннаяПодсказка + 367 + Label + true + true + + Left + + + UsualGroup + + Auto + true + Button + true + auto + Auto + Auto + + + + НастройкиТекущейОбласти + 501 + + ИмяОбласти + 591 + + <key>ru</key> + <value>Имя области</value> + + true + true + + true + + + ИмяОбласти + + None + + ИмяОбластиРасширеннаяПодсказка + 593 + Label + true + true + + Left + + + + ИмяОбластиКонтекстноеМеню + 592 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + + Style.AccentColor + + + Windows.WindowBackground + + Normal + + ru + Имя области + + + + + Группа4 + 520 + + ТекущееЗначение + 289 + + <key>ru</key> + <value>Текст выбранной ячейки</value> + + true + true + + true + + + ТекущееЗначение + + None + + OnChange + ТекущееЗначениеПриИзменении + + + ТекущееЗначениеРасширеннаяПодсказка + 291 + Label + true + true + + Left + + + + ТекущееЗначениеКонтекстноеМеню + 290 + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 3 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Текст выбранной ячейки</value> + + + Группа4РасширеннаяПодсказка + 521 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + Группа1 + 518 + + УсловиеВывода + 512 + + <key>ru</key> + <value>Условие вывода</value> + + true + true + + true + + + УсловиеВывода + + None + + УсловиеВыводаРасширеннаяПодсказка + 514 + Label + true + true + + Left + + + + УсловиеВыводаКонтекстноеМеню + 513 + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 3 + true + true + true + + + true + + true + + + <key>ru</key> + <value>Условие вывода</value> + + + Группа1РасширеннаяПодсказка + 519 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + true + auto + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Выбранные ячейки</value> + + + НастройкиТекущейОбластиРасширеннаяПодсказка + 502 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + Страницы + 560 + + СтраницаТекстВыбраннойЯчейки + 562 + + ТекущееЗначение1 + 566 + true + true + + true + + + ТекущееЗначение + + None + + OnChange + ТекущееЗначениеПриИзменении + + + ТекущееЗначение1РасширеннаяПодсказка + 568 + Label + true + true + + Left + + + + ТекущееЗначение1КонтекстноеМеню + 567 + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 3 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Текст выбранной ячейки</value> + + + СтраницаТекстВыбраннойЯчейкиРасширеннаяПодсказка + 563 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаУсловиеВывода + 564 + + ПовторятьНаКаждойСтранице2 + 572 + true + true + + true + + + ПовторятьНаКаждойСтранице + + Right + + ПовторятьНаКаждойСтранице2РасширеннаяПодсказка + 574 + Label + true + true + + Left + + + + ПовторятьНаКаждойСтранице2КонтекстноеМеню + 573 + true + + CheckBoxField + Enter + true + Left + true + + + + УсловиеВывода1 + 569 + true + true + + true + + + УсловиеВывода + + None + + УсловиеВывода1РасширеннаяПодсказка + 571 + Label + true + true + + Left + + + + УсловиеВывода1КонтекстноеМеню + 570 + true + + TextDocumentField + Enter + true + Left + true + + 50 + true + 3 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Условие вывода</value> + + + СтраницаУсловиеВыводаРасширеннаяПодсказка + 565 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 561 + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + true true true - - ТабличныйДокумент - - None - ТабличныйДокументExtendedTooltip - 144 + Группа2РасширеннаяПодсказка + 295 Label true true @@ -1514,38 +4389,191 @@ Left - - ТабличныйДокументКонтекстноеМеню - 2 - true - - SpreadsheetDocumentField - Enter - true - Left - true - - - OnActivate - ТабличныйДокументПриАктивизации - - 50 + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаПоляИОператоры + 326 + + ГруппаДоступныеПоля + 575 + true + true + + true + + + <key>ru</key> + <value>Доступные поля</value> + + + ГруппаДоступныеПоляРасширеннаяПодсказка + 576 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаОператорыИФункции + 543 + true + true + + true + + + <key>ru</key> + <value>Операторы и функции</value> + + + ГруппаОператорыИФункцииРасширеннаяПодсказка + 544 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаТекстДляКопирования + 553 + + ТекстДляКопирования + 555 + true + + true + + + ТекстДляКопирования + + None + + ТекстДляКопированияРасширеннаяПодсказка + 557 + Label + true + true + + Left + + + + ТекстДляКопированияКонтекстноеМеню + 556 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + ru + Текст для копирования и вставки в макет + + + + true + true + + true + + + <key>ru</key> + <value>Текст для копирования</value> + + + ГруппаТекстДляКопированияРасширеннаяПодсказка + 554 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Доступные поля</value> + + + ГруппаПоляИОператорыРасширеннаяПодсказка + 327 + Label true - 10 true - true - true - true - true - Special - ScrollAlways - ScrollAlways - Always - Auto - true - true - true - true + + Left + + + UsualGroup + + Vertical + Center + Auto + + ru + Доступные поля + + Button + true + Auto + Auto true @@ -1742,6 +4770,343 @@ true + + ШрифтЗаголовкаТаблицы + 11 + + Font + + + true + + + true + + + + ТекущееЗначение + + <key>ru</key> + <value>Текущее значение</value> + + 12 + + String + + + + true + + + true + + + + Образец + 14 + + + true + + + true + + + + ТекстВЦентреСверху + + <key>ru</key> + <value>Текст в центре сверху</value> + + 16 + + FormattedDocument + + + true + + + true + + + + ТекстВЦентреСнизу + + <key>ru</key> + <value>Текст в центре снизу</value> + + 17 + + FormattedDocument + + + true + + + true + + + + ТекстСлеваСверху + + <key>ru</key> + <value>Текст слева сверху</value> + + 18 + + FormattedDocument + + + true + + + true + + + + ТекстСлеваСнизу + + <key>ru</key> + <value>Текст слева снизу</value> + + 19 + + FormattedDocument + + + true + + + true + + + + ТекстСправаСверху + + <key>ru</key> + <value>Текст справа сверху</value> + + 20 + + FormattedDocument + + + true + + + true + + + + ТекстСправаСнизу + + <key>ru</key> + <value>Текст справа снизу</value> + + 21 + + FormattedDocument + + + true + + + true + + + + ЦветФонаВыделенияПоля + 22 + + Color + + + true + + + true + + + + СтрокаПоиска + 23 + + String + + + + true + + + true + + + + ПовторятьНаКаждойСтранице + + <key>ru</key> + <value>Повторять строку на каждой странице</value> + + 26 + + Boolean + + + true + + + true + + + + УсловиеВывода + + <key>ru</key> + <value>Условие вывода</value> + + 27 + + String + + + + true + + + true + + + + ТекстДляКопирования + + <key>ru</key> + <value>Текст для копирования</value> + + 28 + + String + + + + true + + + true + + + + ИмяОбласти + 29 + + String + + + + true + + + true + + + + ИдентификаторМакета + 33 + + String + + + + true + + + true + + + + ВладелецМакета + 34 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + ПечатнаяФорма + + <key>ru</key> + <value>Печатная форма</value> + + 35 + + SpreadsheetDocument + + + true + + + true + + + + + ТипыПрисоединенныхФайлов + 36 + + TypeDescription + + + true + + + true + + + + ПодсвеченныеОбласти + 37 + + ValueList + + + true + + + true + + + + + + + СсылкаМакета + 38 + + + true + + + true + + + + ЭтоПечатнаяФорма + 39 + + Boolean + + + true + + + true + + ЗаписатьИЗакрыть @@ -1956,6 +5321,332 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ПоказыватьКолонтитулы</name> + <title> + <key>ru</key> + <value>Показывать колонтитулы</value> + + 5 + + ru + Настройка колонтитулов, результат которой отображается в образце формы настройки и в предварительном просмотре печати + + + true + + + CommonPicture.ФорматПустой + + + + НастроитьКолонтитулы + + + Picture + Auto + Auto + + + ДоступныеПоля + + <key>ru</key> + <value>Доступные поля</value> + + 10 + + ru + Доступные поля + + + true + + + + ДоступныеПоля + + + Auto + Auto + + + ОчиститьФормат + + <key>ru</key> + <value>Очистить формат</value> + + 11 + + ru + Очистить формат + + + true + + Auto + Auto + + + ПовторятьВНачалеСтраницы + + <key>ru</key> + <value>Повторять в начале страницы</value> + + 18 + + ru + Повторять выбранные строки в начале страницы + + + true + + + CommonPicture.ПовторятьВНачалеСтраницы + + + + ПовторятьНаКаждойСтранице + + + Picture + true + Auto + Auto + + + ПосмотретьПечатнуюФорму + + <key>ru</key> + <value>Посмотреть печатную форму</value> + + 33 + + ru + Образец печатной формы + + + true + + + StdPicture.ShowData + + + + ПосмотретьПечатнуюФорму + + + Auto + Auto + + + УдалитьШтампЭП + + <key>ru</key> + <value>Удалить штамп ЭП</value> + + 34 + + ru + Удалить штамп электронной подписи + + + true + + + StdPicture.SpreadsheetDeleteComment + + + + УдалитьШтампЭП + + + true + Auto + Auto + + + УдалитьЯзыкМакета + + <key>ru</key> + <value>Удалить язык макета</value> + + 35 + + true + + + StdPicture.Delete + + + + УдалитьЯзыкМакета + + + Auto + Auto + + + ПовторятьВКонцеСтраницы + + <key>ru</key> + <value>Повторять в конце страницы</value> + + 36 + + ru + Повторять выбранные строки в конце страницы + + + true + + + CommonPicture.ПовторятьВКонцеСтраницы + + + + ПовторятьВКонцеСтраницы + + + Picture + true + Auto + Auto + + + ВыровнятьПоВерхнемуКраю + + <key>ru</key> + <value>Выровнять по верхнему краю</value> + + 37 + + ru + Выровнять текст по верхнему краю + + + true + + + CommonPicture.ВертикальноеПоложениеВерх + + + + ВыровнятьПоВерхнемуКраю + + + Picture + true + Auto + Auto + + + ВыровнятьПоСередине + + <key>ru</key> + <value>Выровнять по середине</value> + + 38 + + ru + Выровнять текст по центру между верхней и нижней границей ячейки + + + true + + + CommonPicture.ВертикальноеПоложениеЦентр + + + + ВыровнятьПоСередине + + + Picture + true + Auto + Auto + + + ВыровнятьПоНижнемуКраю + + <key>ru</key> + <value>Выровнять по нижнему краю</value> + + 39 + + ru + Выровнять текст по нижнему краю + + + true + + + CommonPicture.ВертикальноеПоложениеНиз + + + + ВыровнятьПоНижнемуКраю + + + Picture + true + Auto + Auto + + + СохранитьВФайл + + <key>ru</key> + <value>Сохранить в файл...</value> + + 40 + + true + + + + СохранитьВФайл + + + Auto + Auto + + + ЗагрузитьИзФайла + + <key>ru</key> + <value>Загрузить из файла...</value> + + 41 + + true + + + + ЗагрузитьИзФайла + + + Auto + Auto + + + Переименовать + + <key>ru</key> + <value>Переименовать...</value> + + 42 + + true + + + + Переименовать + + + Auto + Auto + ТабличныйДокумент @@ -2009,6 +5700,25 @@ + + Владелец + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + true + + + Ссылка + + true + + + Копирование + + Boolean + + diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl index 9beff9ded..e49de2912 100644 --- a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl @@ -14,16 +14,44 @@ Если Параметры.РежимОткрытияОкна <> Неопределено Тогда РежимОткрытияОкна = Параметры.РежимОткрытияОкна; КонецЕсли; + + ТабличныйДокумент.КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ТабличныйДокумент.Макет = Истина; + + ИдентификаторМакета = Параметры.ИмяОбъектаМетаданныхМакета; + СсылкаМакета = Параметры.Ссылка; + + ВладелецМакета = Параметры.Владелец; + Если Не ЗначениеЗаполнено(ВладелецМакета) И ЗначениеЗаполнено(ИдентификаторМакета) Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ВладелецМакета = МодульУправлениеПечатью.ВладелецМакета(ИдентификаторМакета); + КонецЕсли; + КонецЕсли; + + ИмяДокумента = Параметры.ИмяДокумента; + Элементы.Переименовать.Видимость = ЗначениеЗаполнено(Параметры.Ссылка) + Или ПустаяСтрока(ИдентификаторМакета) И ПустаяСтрока(Параметры.ПутьКФайлу); + + ЭтоМакет = Не ПустаяСтрока(ИдентификаторМакета) Или ЗначениеЗаполнено(ВладелецМакета); + ЭтоПечатнаяФорма = Ложь; // Макет для автоматической компоновки печатной формы. + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ЭтоПечатнаяФорма = МодульУправлениеПечатью.ЭтоПечатнаяФорма(ИдентификаторМакета, ВладелецМакета); + КонецЕсли; Если Параметры.ТабличныйДокумент = Неопределено Тогда - Если Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) Тогда + Если Не ПустаяСтрока(ИдентификаторМакета) Тогда РедактированиеЗапрещено = Не Параметры.Редактирование; ЗагрузитьТабличныйДокументИзМетаданных(Параметры.КодЯзыка); + Если Параметры.Копирование Тогда + ИдентификаторМакета = ""; + КонецЕсли; КонецЕсли; - ИначеЕсли ТипЗнч(Параметры.ТабличныйДокумент) = Тип("ТабличныйДокумент") Тогда ТабличныйДокумент = Параметры.ТабличныйДокумент; Иначе + ТабличныйДокумент.КодЯзыка = Неопределено; ДвоичныеДанные = ПолучитьИзВременногоХранилища(Параметры.ТабличныйДокумент); // ДвоичныеДанные - ИмяВременногоФайла = ПолучитьИмяВременногоФайла("mxl"); ДвоичныеДанные.Записать(ИмяВременногоФайла); @@ -33,36 +61,104 @@ Элементы.ТабличныйДокумент.Редактирование = Параметры.Редактирование; Элементы.ТабличныйДокумент.ОтображатьГруппировки = Истина; - - ЭтоМакет = Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета); - Элементы.Предупреждение.Видимость = ЭтоМакет И Параметры.Редактирование; - - Элементы.РедактироватьВоВнешнейПрограмме.Видимость = ОбщегоНазначения.ЭтоВебКлиент() - И Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать"); - - Если Не ПустаяСтрока(Параметры.ИмяДокумента) Тогда - ИмяДокумента = Параметры.ИмяДокумента; - КонецЕсли; - Элементы.ТабличныйДокумент.ОтображатьИменаСтрокИКолонок = ТабличныйДокумент.Макет; Элементы.ТабличныйДокумент.ОтображатьИменаЯчеек = ТабличныйДокумент.Макет; + Элементы.Предупреждение.Видимость = ЭтоМакет И Не ЭтоПечатнаяФорма И Параметры.Редактирование; + Элементы.РедактироватьВоВнешнейПрограмме.Видимость = ОбщегоНазначения.ЭтоВебКлиент() + И Не ПустаяСтрока(ИдентификаторМакета) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать"); + + ДоступенПереводМакета = Ложь; Если ЭтоМакет Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); - МодульУправлениеПечатьюМультиязычность.ЗаполнитьПодменюЯзык(ЭтотОбъект, Параметры.КодЯзыка); - ДоступенАвтоматическийПеревод = МодульУправлениеПечатьюМультиязычность.ДоступенАвтоматическийПеревод(ТекущийЯзык); + ДоступенПереводМакета = МодульУправлениеПечатьюМультиязычность.ДоступенПереводМакета(ИдентификаторМакета); + Если ЭтоПечатнаяФорма Или МодульУправлениеПечатьюМультиязычность.ДоступенПереводМакета(ИдентификаторМакета) Тогда + МодульУправлениеПечатьюМультиязычность.ЗаполнитьПодменюЯзык(ЭтотОбъект, Параметры.КодЯзыка); + ДоступенАвтоматическийПеревод = МодульУправлениеПечатьюМультиязычность.ДоступенАвтоматическийПеревод(ТекущийЯзык); + КонецЕсли; КонецЕсли; КонецЕсли; + + Элементы.Язык.Доступность = (ЭтоПечатнаяФорма Или ДоступенПереводМакета) И ЗначениеЗаполнено(ИдентификаторМакета); + Элементы.Перевести.Видимость = ДоступенАвтоматическийПеревод; + Элементы.КнопкаПоказатьСкрытьОригинал.Видимость = Элементы.Перевести.Видимость; + Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = ТекущийЯзык <> ОбщегоНазначения.КодОсновногоЯзыка(); Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда - - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоманднаяПанель", "Видимость", Ложь); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Предупреждение", "Видимость", Ложь); - + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоманднаяПанель", "Видимость", Ложь); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Предупреждение", "Видимость", Ложь); КонецЕсли; + Если ЭтоПечатнаяФорма И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + + ПодобратьОбразец(); + Элементы.Редактирование.Видимость = Ложь; + ЦветФонаВыделенияПоля = ЦветаСтиля.ЦветНавигации; + + Элементы.ТекстДляКопирования.Видимость = ОбщегоНазначения.ЭтоВебКлиент(); + + ПараметрыДобавления = МодульКонструкторФормул.ПараметрыДобавленияСпискаПолей(); + ПараметрыДобавления.ИмяСписка = ИмяСпискаПолей(); + ПараметрыДобавления.МестоРазмещенияСписка = Элементы.ГруппаДоступныеПоля; + ПараметрыДобавления.КоллекцииПолей = ДоступныеПоляОбъекта(); + Если ЗначениеЗаполнено(ВладелецМакета) Тогда + ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ВладелецМакета); + ПараметрыДобавления.ИмяОсновногоИсточника = ОбъектМетаданных.ПолноеИмя(); + КонецЕсли; + ПараметрыДобавления.ПодсказкаВводаСтрокиПоиска = ПодсказкаВводаСтрокиПоискаСпискаПолей(); + ПараметрыДобавления.ПриОпределенииИсточниковДоступныхПолей = "УправлениеПечатью"; + ПараметрыДобавления.ОбработчикиСписка.Вставить("Выбор", "Подключаемый_СписокПолейВыбор"); + ПараметрыДобавления.ОбработчикиСписка.Вставить("ПередНачаломИзменения", "Подключаемый_ДоступныеПоляПередНачаломИзменения"); + ПараметрыДобавления.ОбработчикиСписка.Вставить("ПриОкончанииРедактирования", "Подключаемый_ДоступныеПоляПриОкончанииРедактирования"); + + МодульКонструкторФормул.ДобавитьСписокПолейНаФорму(ЭтотОбъект, ПараметрыДобавления); + + ПараметрыДобавления = МодульКонструкторФормул.ПараметрыДобавленияСпискаПолей(); + ПараметрыДобавления.ИмяСписка = ИмяСпискаОператоров(); + ПараметрыДобавления.МестоРазмещенияСписка = Элементы.ГруппаОператорыИФункции; + ПараметрыДобавления.КоллекцииПолей.Добавить(СписокОператоров()); + ПараметрыДобавления.ПодсказкаВводаСтрокиПоиска = НСтр("ru = 'Найти оператор или функцию...'"); + ПараметрыДобавления.СкобкиПредставлений = Ложь; + ПараметрыДобавления.ОбработчикиСписка.Вставить("Выбор", "Подключаемый_СписокПолейВыбор"); + ПараметрыДобавления.ОбработчикиСписка.Вставить("НачалоПеретаскивания", "Подключаемый_ОператорыНачалоПеретаскивания"); + ПараметрыДобавления.ОбработчикиСписка.Вставить("ОкончаниеПеретаскивания", "Подключаемый_ОператорыОкончаниеПеретаскивания"); + + МодульКонструкторФормул.ДобавитьСписокПолейНаФорму(ЭтотОбъект, ПараметрыДобавления); + + ТабличныйДокумент = ПрочитатьМакет(); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева, ТекстСлеваСверху); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре, ТекстВЦентреСверху); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа, ТекстСправаСверху); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.НижнийКолонтитул.ТекстСлева, ТекстСлеваСнизу); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре, ТекстВЦентреСнизу); + ПрочитатьТекстВПолеКолонтитула(ТабличныйДокумент.НижнийКолонтитул.ТекстСправа, ТекстСправаСнизу); + + РасширитьСписокПолей(); + + ТабличныйДокумент.Макет = Истина; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + ТипыПрисоединенныхФайлов = МодульРаботаСФайламиСлужебный.ТипыПрисоединенныхФайлов(); + КонецЕсли; + КонецЕсли; + + Если Не ЭтоПечатнаяФорма Тогда + Элементы.ПоказыватьКолонтитулы.Видимость = Ложь; + Элементы.НастройкиТекущейОбласти.Видимость = Ложь; + Элементы.КнопкаДоступныеПоля.Видимость = Ложь; + Элементы.ПосмотретьПечатнуюФорму.Видимость = Ложь; + Элементы.ПовторятьВНачалеСтраницы.Видимость = Ложь; + Элементы.ПовторятьВКонцеСтраницы.Видимость = Ложь; + КонецЕсли; + + Элементы.ВерхнийКолонтитул.Видимость = Ложь; + Элементы.НижнийКолонтитул.Видимость = Ложь; + Элементы.УдалитьЯзыкМакета.Видимость = Ложь; + КонецПроцедуры &НаКлиенте @@ -84,6 +180,12 @@ &НаКлиенте Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + Если Элементы.ПосмотретьПечатнуюФорму.Пометка Тогда + Отказ = Истина; + ПосмотретьПечатнуюФорму(Неопределено); + Возврат; + КонецЕсли; + ОписаниеОповещения = Новый ОписаниеОповещения("ПодтвердитьИЗакрыть", ЭтотОбъект); ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Сохранить изменения в %1?'"), ИмяДокумента); ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(ОписаниеОповещения, Отказ, ЗавершениеРаботы, ТекстВопроса); @@ -92,7 +194,9 @@ Возврат; КонецЕсли; - ОповеститьОЗаписиТабличногоДокумента(); + Если Не ЭтоНовый() Тогда + ОповеститьОЗаписиТабличногоДокумента(); + КонецЕсли; КонецПроцедуры @@ -123,6 +227,8 @@ Процедура ТабличныйДокументПриАктивизации(Элемент) ОбновитьПометкиКнопокКоманднойПанели(); СинхронизироватьОбластьПросмотраМакетов(); + ПодключитьОбработчикОжидания("ОчиститьПодсветку", 0.1, Истина); + ПодключитьОбработчикОжидания("ОбновитьОбластьНастройкиВыбранныхЯчеек", 0.1, Истина); КонецПроцедуры &НаКлиенте @@ -162,7 +268,8 @@ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ТабличныйДокумент", ТабличныйДокумент); - ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", Параметры.ИмяОбъектаМетаданныхМакета); + ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ИдентификаторМакета); + ПараметрыОткрытия.Вставить("ИдентификаторМакета", ИдентификаторМакета); ПараметрыОткрытия.Вставить("ТипМакета", "MXL"); ОписаниеОповещения = Новый ОписаниеОповещения("РедактироватьВоВнешнейПрограммеЗавершение", ЭтотОбъект); МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); @@ -170,6 +277,33 @@ КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура СохранитьВФайл(Команда) + + ОчиститьПодсветку(); + + ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + ДиалогВыбораФайла.ПолноеИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяДокумента); + ДиалогВыбораФайла.Фильтр = НСтр("ru = 'Табличный документ'") + " (*.mxl)|*.mxl"; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьСохранениеВФайл", ЭтотОбъект); + ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(ОписаниеОповещения, ДиалогВыбораФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьИзФайла(Команда) + + ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + ДиалогВыбораФайла.Фильтр = НСтр("ru = 'Табличный документ'") + " (*.mxl)|*.mxl"; + ДиалогВыбораФайла.МножественныйВыбор = Ложь; + + ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьЗагрузкуИзФайла", ЭтотОбъект); + ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(ОписаниеОповещения, ДиалогВыбораФайла); + +КонецПроцедуры + + // Форматирование &НаКлиенте @@ -226,6 +360,83 @@ КонецПроцедуры +&НаКлиенте +Процедура ТекстСлеваСверхуПриИзменении(Элемент) + + ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева = ТекстСлеваСверху.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстВЦентреСверхуПриИзменении(Элемент) + + ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = ТекстВЦентреСверху.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстСправаСверхуПриИзменении(Элемент) + + ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа = ТекстСправаСверху.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстСлеваСнизуПриИзменении(Элемент) + + ТабличныйДокумент.НижнийКолонтитул.ТекстСлева = ТекстСлеваСнизу.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстВЦентреСнизуПриИзменении(Элемент) + + ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре = ТекстВЦентреСнизу.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстСправаСнизуПриИзменении(Элемент) + + ТабличныйДокумент.НижнийКолонтитул.ТекстСправа = ТекстСправаСнизу.ПолучитьФорматированнуюСтроку(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыровнятьПоВерхнемуКраю(Команда) + + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Область.ВертикальноеПоложение = ВертикальноеПоложение.Верх; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыровнятьПоСередине(Команда) + + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Область.ВертикальноеПоложение = ВертикальноеПоложение.Центр; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыровнятьПоНижнемуКраю(Команда) + + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Область.ВертикальноеПоложение = ВертикальноеПоложение.Низ; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура Переименовать(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореИмениМакета", ЭтотОбъект); + ПоказатьВводСтроки(ОписаниеОповещения, ИмяДокумента, НСтр("ru = 'Введите наименование макета'"), 100, Ложь); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -237,18 +448,21 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); - ТабличныйДокумент = МодульУправлениеПечатью.МакетПечатнойФормы(Параметры.ИмяОбъектаМетаданныхМакета, КодЯзыка); - ПоставляемыйМакет = МодульУправлениеПечатью.ПоставляемыйМакет(Параметры.ИмяОбъектаМетаданныхМакета, КодЯзыка); + ТабличныйДокумент = МодульУправлениеПечатью.МакетПечатнойФормы(ИдентификаторМакета, КодЯзыка); + Если Не ЗначениеЗаполнено(СсылкаМакета) Тогда + ПоставляемыйМакет = МодульУправлениеПечатью.ПоставляемыйМакет(ИдентификаторМакета, КодЯзыка); + КонецЕсли; КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); Если ЗначениеЗаполнено(КодЯзыка) Тогда - ДоступныеЯзыкиТабличногоДокумента = МодульУправлениеПечатьюМультиязычность.ЯзыкиМакета(Параметры.ИмяОбъектаМетаданныхМакета); + ДоступныеЯзыкиТабличногоДокумента = МодульУправлениеПечатьюМультиязычность.ЯзыкиМакета(ИдентификаторМакета); ТребуетсяПеревод = ДоступныеЯзыкиТабличногоДокумента.Найти(КодЯзыка) = Неопределено; КонецЕсли; ДоступенАвтоматическийПеревод = МодульУправлениеПечатьюМультиязычность.ДоступенАвтоматическийПеревод(ТекущийЯзык); Элементы.Перевести.Видимость = ДоступенАвтоматическийПеревод; + Элементы.КнопкаПоказатьСкрытьОригинал.Видимость = Элементы.Перевести.Видимость; КонецЕсли; КонецПроцедуры @@ -281,6 +495,11 @@ Элементы.ТабличныйДокументВыровнятьВправо.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; Элементы.ТабличныйДокументВыровнятьПоШирине.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.ПоШирине; + // Вертикальное положение + Элементы.ВыровнятьПоВерхнемуКраю.Пометка = Область.ВертикальноеПоложение = ВертикальноеПоложение.Верх; + Элементы.ВыровнятьПоСередине.Пометка = Область.ВертикальноеПоложение = ВертикальноеПоложение.Центр; + Элементы.ВыровнятьПоНижнемуКраю.Пометка = Область.ВертикальноеПоложение = ВертикальноеПоложение.Низ; + #КонецЕсли КонецПроцедуры @@ -400,7 +619,11 @@ &НаКлиенте Процедура ЗаписатьТабличныйДокумент(ОбработчикЗавершения = Неопределено) - Если ЭтоНовый() Или РедактированиеЗапрещено Тогда + ОчиститьПодсветку(); + + ЕстьВладелец = ЗначениеЗаполнено(ВладелецМакета); + ЕстьСсылка = ЗначениеЗаполнено(Параметры.Ссылка); + Если ЭтоНовый() И Не ЕстьВладелец И Не ЕстьСсылка Или РедактированиеЗапрещено Тогда НачатьДиалогСохраненияФайла(ОбработчикЗавершения); Возврат; КонецЕсли; @@ -411,13 +634,16 @@ &НаКлиенте Процедура ЗаписатьТабличныйДокументИмяФайлаВыбрано(Знач ОбработчикЗавершения) - Если Не ПустаяСтрока(Параметры.ПутьКФайлу) Тогда + + Если ПустаяСтрока(Параметры.ПутьКФайлу) Тогда + ЗаписатьМакет(); + ПослеЗаписиТабличногоДокумента(ОбработчикЗавершения); + Иначе ТабличныйДокумент.НачатьЗапись( Новый ОписаниеОповещения("ОбработатьРезультатЗаписиТабличногоДокумента", ЭтотОбъект, ОбработчикЗавершения), Параметры.ПутьКФайлу); - Иначе - ПослеЗаписиТабличногоДокумента(ОбработчикЗавершения); КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -530,8 +756,8 @@ Элементы.КомандыРедактирования.Доступность = ДокументРедактируется; Элементы.ЗаписатьИЗакрыть.Доступность = ДокументРедактируется Или Модифицированность; Элементы.Записать.Доступность = ДокументРедактируется Или Модифицированность; - - Если ДокументРедактируется И Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) Тогда + + Если ДокументРедактируется И Не ПустаяСтрока(ИдентификаторМакета) И Не ЗначениеЗаполнено(ВладелецМакета) Тогда Элементы.Предупреждение.Видимость = Истина; КонецЕсли; @@ -539,7 +765,7 @@ &НаКлиенте Функция ЭтоНовый() - Возврат ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) И ПустаяСтрока(Параметры.ПутьКФайлу); + Возврат Не ЗначениеЗаполнено(Параметры.Ссылка) И ПустаяСтрока(ИдентификаторМакета) И ПустаяСтрока(Параметры.ПутьКФайлу); КонецФункции &НаКлиенте @@ -569,7 +795,7 @@ УстановитьЗаголовок(); НастроитьПредставлениеКоманд(); НастроитьОтображениеТабличногоДокумента(); - + КонецПроцедуры &НаКлиенте @@ -600,13 +826,40 @@ &НаКлиенте Процедура Подключаемый_ПереключитьЯзык(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); МодульУправлениеПечатьюКлиент.ПереключитьЯзык(ЭтотОбъект, Команда); + Элементы.УдалитьЯзыкМакета.Видимость = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка(); + Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка() + И ПоставляемыйМакет.ВысотаТаблицы > 0; + Если ЭтоПечатнаяФорма Тогда + ТабличныйДокумент = ПрочитатьМакет(); + КонецЕсли; КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура УдалитьЯзыкМакета(Команда) + + Если ТекущийЯзык = ОбщегоНазначенияКлиент.КодОсновногоЯзыка() Тогда + Возврат; + КонецЕсли; + + УдалитьМакетНаТекущемЯзыке(); + + ЗаписьВыполнена = Истина; + ОповеститьОЗаписиТабличногоДокумента(); + + Элементы.УдалитьЯзыкМакета.Видимость = ТекущийЯзык <> ОбщегоНазначенияКлиент.КодОсновногоЯзыка(); + Элементы.КнопкаПоказатьСкрытьОригинал.Доступность = Ложь; + +КонецПроцедуры + &НаКлиенте Процедура Подключаемый_ПриПереключенииЯзыка(КодЯзыка, ДополнительныеПараметры) Экспорт @@ -641,95 +894,13 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.ПереводТекста") Тогда МодульПереводТекстаНаДругиеЯзыки = ОбщегоНазначения.ОбщийМодуль("ПереводТекстаНаДругиеЯзыки"); - Иначе - Возврат; + МодульПереводТекстаНаДругиеЯзыки.ПеревестиТекстыТабличногоДокумента(ТабличныйДокумент, ТекущийЯзык, ОбщегоНазначения.КодОсновногоЯзыка()); КонецЕсли; - ТекстыЯчеек = Новый Соответствие; - - Для НомерСтроки = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл - Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл - Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); - Если ЗначениеЗаполнено(Область.Текст) Тогда - Текст = УбратьПараметрыИзТекста(Область.Текст).Текст; - ТекстыЯчеек.Вставить(Текст, Истина); - КонецЕсли; - КонецЦикла; - КонецЦикла; - - ТекстыДляПеревода = Новый Массив; - Для Каждого Элемент Из ТекстыЯчеек Цикл - ТекстыДляПеревода.Добавить(Элемент.Ключ); - КонецЦикла; - - Переводы = МодульПереводТекстаНаДругиеЯзыки.ПеревестиТексты( - ТекстыДляПеревода, ТекущийЯзык, ОбщегоНазначения.КодОсновногоЯзыка()); - - Для НомерСтроки = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл - Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл - Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); - Если ЗначениеЗаполнено(Область.Текст) Тогда - РезультатОбработки = УбратьПараметрыИзТекста(Область.Текст); - Текст = РезультатОбработки.Текст; - Если ЗначениеЗаполнено(Переводы[Текст]) Тогда - Область.Текст = ВернутьПараметрыВТекст(Переводы[Текст], РезультатОбработки.Параметры); - КонецЕсли; - КонецЕсли; - КонецЦикла; - КонецЦикла; - Модифицированность = Истина; КонецПроцедуры -&НаСервере -Функция УбратьПараметрыИзТекста(Знач Текст) - - НайденныеПараметры = Новый Массив; - - ЧастиСтроки = СтрРазделить(Текст, "[]", Истина); - Для Индекс = 1 По ЧастиСтроки.ВГраница() Цикл - НайденныеПараметры.Добавить("[" + ЧастиСтроки[Индекс] + "]"); - Индекс = Индекс + 1; - КонецЦикла; - - ОбработанныеПараметры = Новый Массив; - Счетчик = 0; - Для Каждого Параметр Из НайденныеПараметры Цикл - Если СтрНайти(Текст, Параметр) Тогда - Счетчик = Счетчик + 1; - Текст = СтрЗаменить(Текст, Параметр, ИдентификаторПараметра(Счетчик)); - ОбработанныеПараметры.Добавить(Параметр); - КонецЕсли; - КонецЦикла; - - Результат = Новый Структура; - Результат.Вставить("Текст", Текст); - Результат.Вставить("Параметры", ОбработанныеПараметры); - - Возврат Результат; - -КонецФункции - -&НаСервере -Функция ВернутьПараметрыВТекст(Знач Текст, ОбработанныеПараметры) - - Для Счетчик = 1 По ОбработанныеПараметры.Количество() Цикл - Текст = СтрЗаменить(Текст, ИдентификаторПараметра(Счетчик), "%" + XMLСтрока(Счетчик)); - КонецЦикла; - - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива(Текст, ОбработанныеПараметры); - -КонецФункции - -// Последовательность символов, которая не должна меняться при переводе на любой язык. -&НаСервере -Функция ИдентификаторПараметра(Номер) - - Возврат "{<" + XMLСтрока(Номер) + ">}"; - -КонецФункции - &НаКлиенте Процедура ПоказатьСкрытьОригинал(Команда) @@ -750,9 +921,10 @@ Возврат; КонецЕсли; - УправляемыйЭлемент = Элементы.ПоставляемыйМакет; + УправляемыйЭлемент = Элементы.ПоставляемыйМакет; Если ТекущийЭлемент <> Элементы.ТабличныйДокумент Тогда УправляемыйЭлемент = Элементы.ТабличныйДокумент; + ТекущийЭлемент = Элементы.ПоставляемыйМакет; КонецЕсли; Область = ТекущийЭлемент.ТекущаяОбласть; @@ -770,17 +942,1423 @@ ПараметрыОповещения = Новый Структура; ПараметрыОповещения.Вставить("ПутьКФайлу", Параметры.ПутьКФайлу); - ПараметрыОповещения.Вставить("ИмяОбъектаМетаданныхМакета", Параметры.ИмяОбъектаМетаданныхМакета); + ПараметрыОповещения.Вставить("ИмяОбъектаМетаданныхМакета", ИдентификаторМакета); ПараметрыОповещения.Вставить("КодЯзыка", ТекущийЯзык); + ПараметрыОповещения.Вставить("Владелец", ВладелецМакета); + ПараметрыОповещения.Вставить("Представление", ИмяДокумента); Если ЗаписьВыполнена Тогда ИмяСобытия = "Запись_ТабличныйДокумент"; - ПараметрыОповещения.Вставить("ТабличныйДокумент", ТабличныйДокумент); Иначе ИмяСобытия = "ОтменаРедактированияТабличногоДокумента"; КонецЕсли; Оповестить(ИмяСобытия, ПараметрыОповещения, ЭтотОбъект); + + ЗаписьВыполнена = Ложь; + +КонецПроцедуры + +#Область КонструкторПечатныхФорм + +&НаСервере +Функция ВладелецМакета() + + Если ЗначениеЗаполнено(ВладелецМакета) Тогда + Возврат ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ВладелецМакета); + КонецЕсли; + + ПутьКМакету = ИдентификаторМакета; + + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда + Возврат Неопределено; + КонецЕсли; + + Если ЧастиПути.Количество() <> 3 Тогда + Возврат Неопределено; + КонецЕсли; + + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ИмяОбъекта = СтрСоединить(ЧастиПути, "."); + + Если ПустаяСтрока(ИмяОбъекта) Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат Метаданные.НайтиПоПолномуИмени(ИмяОбъекта); + +КонецФункции + +&НаКлиенте +Процедура ТабличныйДокументПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Область) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + + Если ТипЗнч(ПараметрыПеретаскивания.Значение) <> Тип("Строка") Тогда + Возврат; + КонецЕсли; + + ВыбранноеПоле = МодульКонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект, ИмяСпискаПолей()); + Если ВыбранноеПоле = Неопределено Тогда + Возврат; + КонецЕсли; + + РазместитьРисунокВТабличномДокументе(ВыбранноеПоле, СтандартнаяОбработка, Область.Лево, Область.Верх); + КонецЕсли; КонецПроцедуры +&НаСервере +Процедура РазместитьРисунокВТабличномДокументе(ВыбранноеПоле, СтандартнаяОбработка, Лево, Верх) + + Область = ТабличныйДокумент.Область(Верх, Лево, Верх, Лево); + + Если СтрНачинаетсяС(ВыбранноеПоле.Имя, "Печать") Тогда + СтандартнаяОбработка = Ложь; + + Рисунок = ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); + Рисунок.Имя = ПодобратьИмяОбласти(ВыбранноеПоле.Имя); + Рисунок.ПараметрРасшифровки = "[" + ВыбранноеПоле.ПутьКДанным + "]"; + Рисунок.Картинка = БиблиотекаКартинок["ПечатьОрганизации"]; + Рисунок.Расположить(Область); + Рисунок.Высота = 40; + Рисунок.Ширина = 40; + Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии); + Рисунок.ЦветФона = Новый Цвет; + Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально; + + Элементы.ТабличныйДокумент.ТекущаяОбласть = Область; + Возврат; + КонецЕсли; + + Если СтрНачинаетсяС(ВыбранноеПоле.Имя, "Подпись") Тогда + СтандартнаяОбработка = Ложь; + Рисунок = ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); + Рисунок.Имя = ПодобратьИмяОбласти(ВыбранноеПоле.Имя); + Рисунок.ПараметрРасшифровки = "[" + ВыбранноеПоле.ПутьКДанным + "]"; + Рисунок.Картинка = БиблиотекаКартинок["Подпись"]; + Рисунок.Расположить(Область); + Рисунок.Высота = 10; + Рисунок.Ширина = 30; + Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии); + Рисунок.ЦветФона = Новый Цвет; + Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально; + + Элементы.ТабличныйДокумент.ТекущаяОбласть = Область; + Возврат; + КонецЕсли; + + Если ВыбранноеПоле.Имя = "ШтампЭП" Тогда + СтандартнаяОбработка = Ложь; + + ОбластьСтрок = ТабличныйДокумент.Область(Область.Верх, , Область.Верх + 6); + ОбластьСтрок.СоздатьФорматСтрок(); + + ОбластьШтампа = ТабличныйДокумент.Область(Область.Верх, Область.Лево, Область.Верх + 6, Область.Лево + 1); + ОбластьШтампа.Имя = ПодобратьИмяОбласти("ШтампЭП"); + + ОбластьШтампа = ТабличныйДокумент.Область(Область.Верх, Область.Лево, Область.Верх + 6, Область.Лево); + ОбластьШтампа.ШиринаКолонки = 10; + ОбластьШтампа = ТабличныйДокумент.Область(Область.Верх, Область.Лево + 1, Область.Верх + 6, Область.Лево + 1); + ОбластьШтампа.ШиринаКолонки = 30; + + Элементы.ТабличныйДокумент.ТекущаяОбласть = Область; + Возврат; + КонецЕсли; + + ЭтоПрисоединенныйФайл = ВыбранноеПоле.Тип.Типы().Количество() = 1 + И ТипыПрисоединенныхФайлов.СодержитТип(ВыбранноеПоле.Тип.Типы()[0]); + + Если ЭтоПрисоединенныйФайл Тогда + СтандартнаяОбработка = Ложь; + + Рисунок = ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); + Рисунок.Имя = ПодобратьИмяОбласти("Рисунок"); + Рисунок.ПараметрРасшифровки = "[" + ВыбранноеПоле.ПутьКДанным + "]"; + Рисунок.Картинка = БиблиотекаКартинок["МестоДляКартинки"]; + Рисунок.Расположить(Область); + Рисунок.Высота = 20; + Рисунок.Ширина = 20; + Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии); + Рисунок.ЦветФона = Новый Цвет; + Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально; + + Элементы.ТабличныйДокумент.ТекущаяОбласть = Область; + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТабличныйДокументПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Область) + + Если ТипЗнч(ПараметрыПеретаскивания.Значение) <> Тип("Массив") + Или ПараметрыПеретаскивания.Значение.Количество() <> 1 + Или Не ПараметрыПеретаскивания.Значение[0].Таблица Тогда + Возврат; + КонецЕсли; + + КоличествоКолонок = ПараметрыПеретаскивания.Значение[0].Элементы.Количество(); + Если КоличествоКолонок = 0 Тогда + ШиринаОбласти = ?(Область.Лево > 1, 2, 1); + Область = ТабличныйДокумент.Область(Область.Верх, Область.Лево, Область.Верх, Область.Лево + ШиринаОбласти - 1); + Элемент.ТекущаяОбласть = Область; + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + Область = ТабличныйДокумент.Область(Область.Верх, Область.Лево, Область.Верх + 1, Область.Лево + КоличествоКолонок - 1); + Элемент.ТекущаяОбласть = Область; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПолеВводаЗначенияТекущейЯчейки() + + ТекущаяОбласть = ТабличныйДокумент.ТекущаяОбласть; + ДоступноРедактирование = ТекущаяОбласть <> Неопределено И ТипЗнч(ТекущаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента"); + Элементы.ТекущееЗначение.Доступность = ДоступноРедактирование; + Если ДоступноРедактирование Тогда + ТекущееЗначение = ТекущаяОбласть.Текст; + Иначе + ТекущееЗначение = ""; + КонецЕсли; + + Элементы.ПовторятьВНачалеСтраницы.Доступность = Ложь; + Элементы.ПовторятьВКонцеСтраницы.Доступность = Ложь; + + ПредставлениеОбласти = НСтр("ru = 'Текст выбранной ячейки'"); + Если ТипЗнч(ТекущаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда + Если ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки + И ЗначениеЗаполнено(ТекущаяОбласть.Верх) Тогда + Диапазон = ТекущаяОбласть.Верх; + Если ТекущаяОбласть.Верх <> ТекущаяОбласть.Низ Тогда + Диапазон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1-%2'"), ТекущаяОбласть.Верх, ТекущаяОбласть.Низ); + ПредставлениеОбласти = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Условия вывода строк %1'"), Диапазон); + Иначе + ПредставлениеОбласти = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Условия вывода строки %1'"), Диапазон); + КонецЕсли; + Элементы.ПовторятьВНачалеСтраницы.Доступность = Истина; + Элементы.ПовторятьВКонцеСтраницы.Доступность = Истина; + + Если ЗначениеЗаполнено(ТекущаяОбласть.Имя) Тогда + ТекущееЗначение = ТекущаяОбласть.ПараметрРасшифровки; + КонецЕсли; + КонецЕсли; + Если ЗначениеЗаполнено(ТекущаяОбласть.Лево) И Не ЗначениеЗаполнено(ТекущаяОбласть.Верх) Тогда + Диапазон = ТекущаяОбласть.Лево; + Если ТекущаяОбласть.Лево <> ТекущаяОбласть.Право Тогда + Диапазон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1-%2'"), ТекущаяОбласть.Лево, ТекущаяОбласть.Право); + ПредставлениеОбласти = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Условия вывода колонок %1'"), Диапазон); + Иначе + ПредставлениеОбласти = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Условия вывода колонки %1'"), Диапазон); + КонецЕсли; + КонецЕсли; + Если ЗначениеЗаполнено(ТекущаяОбласть.Лево) И ЗначениеЗаполнено(ТекущаяОбласть.Верх) Тогда + Если ТекущаяОбласть.Лево <> ТекущаяОбласть.Право Или ТекущаяОбласть.Верх <> ТекущаяОбласть.Низ Тогда + ПредставлениеОбласти = НСтр("ru = 'Текст в выбранной области'"); + Иначе + ПредставлениеОбласти = НСтр("ru = 'Текст выбранной ячейки'"); + КонецЕсли; + КонецЕсли; + ИмяОбласти = ПредставлениеОбласти; + КонецЕсли; + + Элементы.УдалитьШтампЭП.Доступность = СтрНачинаетсяС(ТекущаяОбласть.Имя, "ШтампЭП"); + + Если ТипЗнч(ТекущаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента") + И ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + Элементы.ПовторятьВНачалеСтраницы.Пометка = ТекущаяОбласть.НачалоСтраницы; + Элементы.ПовторятьВКонцеСтраницы.Пометка = ТекущаяОбласть.КонецСтраницы; + Иначе + Элементы.ПовторятьВНачалеСтраницы.Пометка = Ложь; + Элементы.ПовторятьВКонцеСтраницы.Пометка = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПодобратьОбразец() + + ОбъектМетаданных = ВладелецМакета(); + Если ОбъектМетаданных = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ПсевдонимЗаданнойТаблицы.Ссылка КАК Ссылка + |ИЗ + | &Таблица КАК ПсевдонимЗаданнойТаблицы + |УПОРЯДОЧИТЬ ПО + | Ссылка УБЫВ"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Таблица", ВладелецМакета().ПолноеИмя()); + Запрос = Новый Запрос(ТекстЗапроса);; + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Образец = Выборка.Ссылка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьКолонтитулы(Команда) + + Элементы.ПоказыватьКолонтитулы.Пометка = Не Элементы.ПоказыватьКолонтитулы.Пометка; + Элементы.ВерхнийКолонтитул.Видимость = Элементы.ПоказыватьКолонтитулы.Пометка; + Элементы.НижнийКолонтитул.Видимость = Элементы.ПоказыватьКолонтитулы.Пометка; + Элементы.КомандыРедактирования.Видимость = Не Элементы.КомандыРедактирования.Видимость; + Элементы.КоманднаяПанельКолонтитулов.Видимость = Не Элементы.КомандыРедактирования.Видимость; + Элементы.ТекущееЗначение.Видимость = Не Элементы.ПоказыватьКолонтитулы.Пометка; + Элементы.НастройкиТекущейОбласти.Видимость = Не Элементы.ПоказыватьКолонтитулы.Пометка; + Элементы.ТабличныйДокумент.ТолькоПросмотр = Элементы.ПоказыватьКолонтитулы.Пометка; + + ТекстСостояния = ?(Элементы.ПоказыватьКолонтитулы.Пометка, НСтр("ru = 'Редактирование колонтитулов'"), ""); + ОтобразитьСостояниеТекущейПечатнойФормы(ТекстСостояния); + + Если Элементы.ПоказыватьКолонтитулы.Пометка Тогда + ПереключитьВидимостьКомандКолонтитулов(); + Иначе + ОтключитьОбработчикОжидания("ПереключитьВидимостьКомандКолонтитулов"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПримерыЗначений(КоллекцияПолей = Неопределено, ДанныеПечати = Неопределено) + + Если КоллекцияПолей = Неопределено Тогда + КоллекцияПолей = ЭтотОбъект[ИмяСпискаПолей()]; + КонецЕсли; + + Если ДанныеПечати = Неопределено Тогда + Объекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Образец); + ОтображаемыеПоля = ЗаполнитьСписокОтображаемыхПолей(КоллекцияПолей); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ДанныеПечати = МодульУправлениеПечатью.ДанныеПечати(Объекты, ОтображаемыеПоля, ТекущийЯзык); + Иначе + Возврат; + КонецЕсли; + КонецЕсли; + + ПримерыЗначений = ДанныеПечати[Образец]; + НастройкиФорматаПолей = ДанныеПечати["НастройкиФорматаПолей"]; + + Для Каждого Элемент Из КоллекцияПолей.ПолучитьЭлементы() Цикл + Если Не ЗначениеЗаполнено(Элемент.ПутьКДанным) Тогда + Продолжить; + КонецЕсли; + + Если Не Элемент.Папка И Не Элемент.Таблица Тогда + Элемент.ФорматПоУмолчанию = НастройкиФорматаПолей[Элемент.ПутьКДанным]; + Элемент.Значение = ПримерыЗначений[Элемент.ПутьКДанным]; + Элемент.Образец = ПримерыЗначений[Элемент.ПутьКДанным]; + ИмяТаблицыПоля = ИмяТаблицыПоля(Элемент); + Если ЗначениеЗаполнено(ИмяТаблицыПоля) + И ПримерыЗначений[ИмяТаблицыПоля] <> Неопределено И ПримерыЗначений[ИмяТаблицыПоля].Количество() > 0 Тогда + Элемент.Значение = ПримерыЗначений[ИмяТаблицыПоля][1][Элемент.ПутьКДанным]; + Элемент.Образец = ПримерыЗначений[ИмяТаблицыПоля][1][Элемент.ПутьКДанным]; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(Элемент.Формат) Тогда + Элемент.Образец = Формат(Элемент.Образец, Элемент.Формат); + КонецЕсли; + + УстановитьПримерыЗначений(Элемент, ДанныеПечати); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьФорматЗначенийПоУмолчанию(КоллекцияПолей = Неопределено) + + Если КоллекцияПолей = Неопределено Тогда + КоллекцияПолей = ЭтотОбъект[ИмяСпискаПолей()]; + КонецЕсли; + + Для Каждого Элемент Из КоллекцияПолей.ПолучитьЭлементы() Цикл + Если Не ЗначениеЗаполнено(Элемент.ПутьКДанным) Тогда + Продолжить; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Элемент.ФорматПоУмолчанию) Тогда + Элемент.ФорматПоУмолчанию = ФорматПоУмолчанию(Элемент.Тип); + КонецЕсли; + + Элемент.Формат = Элемент.ФорматПоУмолчанию; + + Если ЗначениеЗаполнено(Элемент.Формат) Тогда + Элемент.Образец = Формат(Элемент.Образец, Элемент.Формат); + Иначе + Элемент.КнопкаНастройкиФормата = -1; + КонецЕсли; + + УстановитьФорматЗначенийПоУмолчанию(Элемент); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ФорматПоУмолчанию(ОписаниеТипов) + + Формат = ""; + Если ОписаниеТипов.Типы().Количество() <> 1 Тогда + Возврат Формат; + КонецЕсли; + + Тип = ОписаниеТипов.Типы()[0]; + + Если Тип = Тип("Число") Тогда + Формат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'ЧЦ=%1; ЧДЦ=%2'"), + ОписаниеТипов.КвалификаторыЧисла.Разрядность, + ОписаниеТипов.КвалификаторыЧисла.РазрядностьДробнойЧасти); + ИначеЕсли Тип = Тип("Дата") Тогда + Если ОписаниеТипов.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда + Формат = НСтр("ru = 'ДЛФ=D'"); + Иначе + Формат = НСтр("ru = 'ДЛФ=DT'"); + КонецЕсли; + ИначеЕсли Тип = Тип("Булево") Тогда + Формат = НСтр("ru = 'БЛ=Нет; БИ=Да'"); + КонецЕсли; + + Возврат Формат; + +КонецФункции + +&НаКлиенте +Процедура ПодсветитьЯчейкиСВыбраннымПолем() + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + Если ТекущиеДанные = Неопределено Или Не ЗначениеЗаполнено(ТекущиеДанные.ПредставлениеПутиКДанным) Тогда + Возврат; + КонецЕсли; + + ОчиститьПодсветку(); + ОбработанныеОбласти = Новый Соответствие(); + + МодульУправлениеПечатьюКлиент = Неопределено; + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + Иначе + Возврат; + КонецЕсли; + + Для НомерСтроки = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл + Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); + + ИдентификаторОбласти = МодульУправлениеПечатьюКлиент.ИдентификаторОбласти(Область); + Если ОбработанныеОбласти[ИдентификаторОбласти] <> Неопределено Тогда + Продолжить; + КонецЕсли; + ОбработанныеОбласти[ИдентификаторОбласти] = Истина; + + Если ТекущиеДанные.Таблица + И СтрНайти(Область.Текст, "[" + ТекущиеДанные.ПредставлениеПутиКДанным + ".") > 0 + Или СтрНайти(Область.Текст, "[" + ТекущиеДанные.ПредставлениеПутиКДанным + "]") > 0 Тогда + ПодсвеченныеОбласти.Добавить(Область.ЦветФона, Область.Имя); + Область.ЦветФона = ЦветФонаВыделенияПоля; + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьПодсветку() + + Для Каждого Элемент Из ПодсвеченныеОбласти Цикл + ЦветФона = Элемент.Значение; + ИмяОбласти = Элемент.Представление; + + Область = ТабличныйДокумент.Область(ИмяОбласти); + Область.ЦветФона = ЦветФона; + КонецЦикла; + + ПодсвеченныеОбласти.Очистить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДоступныеПоля(Команда) + + Элементы.КнопкаДоступныеПоля.Пометка = Не Элементы.КнопкаДоступныеПоля.Пометка; + Элементы.ГруппаПоляИОператоры.Видимость = Элементы.КнопкаДоступныеПоля.Пометка; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтобразитьСостояниеТекущейПечатнойФормы(ТекстСостояния = "") + + ОтображатьСостояние = Не ПустаяСтрока(ТекстСостояния); + + ПолеТабличногоДокумента = Элементы.ТабличныйДокумент; + + ОтображениеСостояния = ПолеТабличногоДокумента.ОтображениеСостояния; + ОтображениеСостояния.Текст = ТекстСостояния; + ОтображениеСостояния.Видимость = ОтображатьСостояние; + ОтображениеСостояния.ДополнительныйРежимОтображения = + ?(ОтображатьСостояние, ДополнительныйРежимОтображения.Неактуальность, ДополнительныйРежимОтображения.НеИспользовать); + + ПолеТабличногоДокумента.ТолькоПросмотр = ОтображатьСостояние Или ПолеТабличногоДокумента.Вывод = ИспользованиеВывода.Запретить; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьОбластьНастройкиВыбранныхЯчеек() + ОбновитьПолеВводаЗначенияТекущейЯчейки(); +КонецПроцедуры + +&НаКлиенте +Процедура ПовторятьНаКаждойСтранице(Команда) + + ТекущаяОбласть = ТабличныйДокумент.ТекущаяОбласть; + Если ТекущаяОбласть = Неопределено Или ТипЗнч(ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") + Или ТекущаяОбласть.ТипОбласти <> ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + Возврат; + КонецЕсли; + + Элементы.ПовторятьВНачалеСтраницы.Пометка = Не Элементы.ПовторятьВНачалеСтраницы.Пометка; + ТекущаяОбласть.НачалоСтраницы = Элементы.ПовторятьВНачалеСтраницы.Пометка; + +КонецПроцедуры + +&НаКлиенте +Процедура ПовторятьВКонцеСтраницы(Команда) + + ТекущаяОбласть = ТабличныйДокумент.ТекущаяОбласть; + Если ТекущаяОбласть = Неопределено Или ТипЗнч(ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") + Или ТекущаяОбласть.ТипОбласти <> ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + Возврат; + КонецЕсли; + + Элементы.ПовторятьВКонцеСтраницы.Пометка = Не Элементы.ПовторятьВКонцеСтраницы.Пометка; + ТекущаяОбласть.КонецСтраницы = Элементы.ПовторятьВКонцеСтраницы.Пометка; + +КонецПроцедуры + +&НаКлиенте +Процедура ТекущееЗначениеПриИзменении(Элемент) + + ОбновитьТекстВОбластиЯчеек(); + +КонецПроцедуры + +&НаСервере +Функция ДоступныеПоляОбъекта() + + ОбъектМетаданных = ВладелецМакета(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Возврат МодульУправлениеПечатью.ДоступныеПоляОбъекта(ОбъектМетаданных.ПолноеИмя()); + КонецЕсли; + + Возврат Новый Массив; + +КонецФункции + +&НаСервере +Функция СписокОператоров() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Возврат МодульУправлениеПечатью.СписокОператоров(); + КонецЕсли; + +КонецФункции + +#Область ПодключаемыйСписокПолей + +&НаКлиенте +Процедура Подключаемый_СписокПолейПередРазворачиванием(Элемент, Строка, Отказ) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + МодульКонструкторФормулКлиент.СписокПолейПередРазворачиванием(ЭтотОбъект, Элемент, Строка, Отказ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_РазвернутьТекущийЭлементСпискаПолей() + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + МодульКонструкторФормулКлиент.РазвернутьТекущийЭлементСпискаПолей(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения) Экспорт // АПК:78 - вызывается из КонструкторФормулКлиент + + ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + МодульКонструкторФормул.ЗаполнитьСписокДоступныхПолей(ЭтотОбъект, ПараметрыЗаполнения); + + ТекущиеДанные = ЭтотОбъект[ИмяСпискаПолей()].НайтиПоИдентификатору(ПараметрыЗаполнения.ИдентификаторСтроки); + УстановитьПримерыЗначений(ТекущиеДанные); + УстановитьФорматЗначенийПоУмолчанию(ТекущиеДанные); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СписокПолейНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение) + + Реквизит = ЭтотОбъект[ИмяСпискаПолей()].НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); + + Если Реквизит.Папка Или Реквизит.Таблица + Или Элементы.ПоказыватьКолонтитулы.Пометка + И Не СтрНачинаетсяС(Реквизит.ПутьКДанным, "ОбщиеРеквизиты.") Тогда + Выполнение = Ложь; + Возврат; + КонецЕсли; + + ПараметрыПеретаскивания.Значение = "[" + Реквизит.ПредставлениеПутиКДанным + "]"; + + Если Элемент = Элементы[ИмяСпискаПолей()] + И ЗначениеЗаполнено(Реквизит.Формат) И Реквизит.Формат <> Реквизит.ФорматПоУмолчанию Тогда + + ПараметрыПеретаскивания.Значение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "[Формат(%1, %2)]", ПараметрыПеретаскивания.Значение, """" + Реквизит.Формат + """"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + МодульКонструкторФормулКлиент.СтрокаПоискаИзменениеТекстаРедактирования(ЭтотОбъект, Элемент, Текст, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ВыполнитьПоискВСпискеПолей() + + ВыполнитьПоискВСпискеПолей(); + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьПоискВСпискеПолей() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормул = ОбщегоНазначения.ОбщийМодуль("КонструкторФормул"); + МодульКонструкторФормул.ВыполнитьПоискВСпискеПолей(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + МодульКонструкторФормулКлиент.СтрокаПоискаОчистка(ЭтотОбъект, Элемент, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСпискаПолей() + + Возврат "ДоступныеПоля"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ИмяСпискаОператоров() + + Возврат "СписокОператоров"; + +КонецФункции + #КонецОбласти + +#Область ДополнительныеОбработчикиПодключаемыхСписков + +// Параметры: +// Элемент - ТаблицаФормы +// ВыбраннаяСтрока - Число +// Поле - ПолеФормы +// СтандартнаяОбработка - Булево +// +&НаКлиенте +Процедура Подключаемый_СписокПолейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + МодульКонструкторФормулКлиент = Неопределено; + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + Иначе + Возврат; + КонецЕсли; + + Если Поле.Имя = Элемент.Имя + "Представление" Тогда + СтандартнаяОбработка = Ложь; + ВыбранноеПоле = МодульКонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект); + Если ЗначениеЗаполнено(ТекущееЗначение) Тогда + ТекущееЗначение = СокрП(ТекущееЗначение) + " "; + Иначе + ТекущееЗначение = ""; + КонецЕсли; + Если Элемент.Имя = ИмяСпискаПолей() Тогда + ТекущееЗначение = ТекущееЗначение + "[" + ВыбранноеПоле.ПредставлениеПутиКДанным + "]"; + Иначе + ТекущееЗначение = ТекущееЗначение + МодульКонструкторФормулКлиент.ВыражениеДляВставки(ВыбранноеПоле); + КонецЕсли; + + ОбновитьТекстВОбластиЯчеек(); + КонецЕсли; + + Если Поле = Элементы[ИмяСпискаПолей() + "КнопкаНастройкиФормата"] Тогда + СтандартнаяОбработка = Ложь; + Конструктор = Новый КонструкторФорматнойСтроки(Элементы[ИмяСпискаПолей()].ТекущиеДанные.Формат); + Конструктор.ДоступныеТипы = Элементы[ИмяСпискаПолей()].ТекущиеДанные.Тип; + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореФорматаПоля", ЭтотОбъект); + Конструктор.Показать(ОписаниеОповещения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОператорыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + + Оператор = МодульКонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект, ИмяСпискаОператоров()); + ПараметрыПеретаскивания.Значение = МодульКонструкторФормулКлиент.ВыражениеДляВставки(Оператор); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОператорыОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + + Если МодульКонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект, ИмяСпискаОператоров()).ПутьКДанным = "Формат" Тогда + ФорматСтроки = Новый КонструкторФорматнойСтроки; + ФорматСтроки.Показать(Новый ОписаниеОповещения("ОператорыОкончаниеПеретаскиванияЗавершение", ЭтотОбъект, Новый Структура("ФорматСтроки", ФорматСтроки))); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОператорыОкончаниеПеретаскиванияЗавершение(Текст, ДополнительныеПараметры) Экспорт + + ФорматСтроки = ДополнительныеПараметры.ФорматСтроки; + + Если ЗначениеЗаполнено(ФорматСтроки.Текст) Тогда + ТекстДляВставки = "Формат( , """ + ФорматСтроки.Текст + """)"; + Элементы.ТекущееЗначение.ВыделенныйТекст = ТекстДляВставки; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +&НаСервере +Функция ПодготовитьМакетДляЗаписи(УстановитьКодЯзыка = Истина) + + КодЯзыка = Неопределено; + Если УстановитьКодЯзыка Тогда + КодЯзыка = ТабличныйДокумент.КодЯзыка; + КонецЕсли; + + Макет = СкопироватьТабличныйДокумент(ТабличныйДокумент, КодЯзыка); + Если Не ЭтоПечатнаяФорма Тогда + Возврат Макет; + КонецЕсли; + + ОбработанныеОбласти = Новый Соответствие(); + + Для НомерСтроки = 1 По Макет.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По Макет.ШиринаТаблицы Цикл + Область = Макет.Область(НомерСтроки, НомерКолонки); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ИдентификаторОбласти = МодульУправлениеПечатью.ИдентификаторОбласти(Область); + Если ОбработанныеОбласти[ИдентификаторОбласти] <> Неопределено Тогда + Продолжить; + КонецЕсли; + ОбработанныеОбласти[ИдентификаторОбласти] = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(Область.Текст) Тогда + ЗаменитьПредставленияПараметров(Область.Текст); + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСлева); + ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстВЦентре); + ЗаменитьПредставленияПараметров(Макет.ВерхнийКолонтитул.ТекстСправа); + ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСлева); + ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстВЦентре); + ЗаменитьПредставленияПараметров(Макет.НижнийКолонтитул.ТекстСправа); + + Для Каждого Область Из Макет.Области Цикл + Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") + И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + ЗаменитьПредставленияПараметров(Область.ПараметрРасшифровки); + КонецЕсли; + КонецЦикла; + + Возврат Макет; + +КонецФункции + +&НаСервере +Процедура ЗаменитьПредставленияПараметров(Строка) + + ПараметрыЗамены = ФормулыИзТекста(Строка(Строка)); + + Если ТипЗнч(Строка) = Тип("ФорматированнаяСтрока") Тогда + Строка = ЗаменитьВФорматированнойСтроке(Строка, ПараметрыЗамены); + Иначе + Строка = ЗаменитьВСтроке(Строка, ПараметрыЗамены); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЗаменитьВСтроке(Знач Строка, ПараметрыЗамены) + + Для Каждого Элемент Из ПараметрыЗамены Цикл + ПодстрокаПоиска = Элемент.Ключ; + ПодстрокаЗамены = Элемент.Значение; + Строка = СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены); + КонецЦикла; + + Возврат Строка; + +КонецФункции + +&НаСервере +Функция ЗаменитьВФорматированнойСтроке(Строка, ПараметрыЗамены) + + ФорматированныйДокумент = Новый ФорматированныйДокумент; + ФорматированныйДокумент.УстановитьФорматированнуюСтроку(Строка); + + Для Каждого Элемент Из ПараметрыЗамены Цикл + ПодстрокаПоиска = Элемент.Ключ; + ПодстрокаЗамены = Элемент.Значение; + + НайденнаяОбласть = ФорматированныйДокумент.НайтиТекст(ПодстрокаПоиска); + Пока НайденнаяОбласть <> Неопределено Цикл + Фрагменты = ФорматированныйДокумент.СформироватьЭлементы(НайденнаяОбласть.ЗакладкаНачала, НайденнаяОбласть.ЗакладкаКонца); + Для Индекс = 1 По Фрагменты.ВГраница() Цикл + Фрагменты[0].Текст = Фрагменты[0].Текст + Фрагменты[Индекс].Текст; + Фрагменты[Индекс].Текст = ""; + КонецЦикла; + Фрагменты[0].Текст = СтрЗаменить(Фрагменты[0].Текст, ПодстрокаПоиска, ПодстрокаЗамены); + + НайденнаяОбласть = ФорматированныйДокумент.НайтиТекст(ПодстрокаПоиска, НайденнаяОбласть.ЗакладкаКонца); + КонецЦикла; + КонецЦикла; + + Возврат ФорматированныйДокумент.ПолучитьФорматированнуюСтроку(); + +КонецФункции + +&НаСервере +Функция ФормулыИзТекста(Знач Текст) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Возврат МодульУправлениеПечатью.ФормулыИзТекста(Текст, ЭтотОбъект); + КонецЕсли; + +КонецФункции + +&НаСервере +Функция ПредставленияПараметровТекста(Знач Текст) + + Результат = Новый Соответствие(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Возврат МодульУправлениеПечатью.ПредставленияПараметровТекста(Текст, ЭтотОбъект); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция ПрочитатьМакет(ДвоичныеДанные = Неопределено) + + КодЯзыка = ТабличныйДокумент.КодЯзыка; + + Если ДвоичныеДанные <> Неопределено Тогда + ТабличныйДокумент.КодЯзыка = Неопределено; + ТабличныйДокумент.Прочитать(ДвоичныеДанные.ОткрытьПотокДляЧтения()); + КонецЕсли; + + Макет = СкопироватьТабличныйДокумент(ТабличныйДокумент, КодЯзыка); + + ОбработанныеОбласти = Новый Соответствие(); + + Для НомерСтроки = 1 По Макет.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По Макет.ШиринаТаблицы Цикл + Область = Макет.Область(НомерСтроки, НомерКолонки); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ИдентификаторОбласти = МодульУправлениеПечатью.ИдентификаторОбласти(Область); + Если ОбработанныеОбласти[ИдентификаторОбласти] <> Неопределено Тогда + Продолжить; + КонецЕсли; + ОбработанныеОбласти[ИдентификаторОбласти] = Истина; + КонецЕсли; + + Если ЗначениеЗаполнено(Область.Текст) Тогда + ЗаменитьПараметрыПредставлениями(Область.Текст); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ЗаменитьПараметрыПредставлениями(Макет.ВерхнийКолонтитул.ТекстСлева); + ЗаменитьПараметрыПредставлениями(Макет.ВерхнийКолонтитул.ТекстВЦентре); + ЗаменитьПараметрыПредставлениями(Макет.ВерхнийКолонтитул.ТекстСправа); + ЗаменитьПараметрыПредставлениями(Макет.НижнийКолонтитул.ТекстСлева); + ЗаменитьПараметрыПредставлениями(Макет.НижнийКолонтитул.ТекстВЦентре); + ЗаменитьПараметрыПредставлениями(Макет.НижнийКолонтитул.ТекстСправа); + + Для Каждого Область Из Макет.Области Цикл + Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") + И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + ЗаменитьПараметрыПредставлениями(Область.ПараметрРасшифровки); + КонецЕсли; + КонецЦикла; + + Возврат Макет; + +КонецФункции + +&НаСервере +Процедура ЗаменитьПараметрыПредставлениями(Строка) + + ПараметрыЗамены = ПредставленияПараметровТекста(Строка(Строка)); + + Если ТипЗнч(Строка) = Тип("ФорматированнаяСтрока") Тогда + Строка = ЗаменитьВФорматированнойСтроке(Строка, ПараметрыЗамены); + Иначе + Строка = ЗаменитьВСтроке(Строка, ПараметрыЗамены); + КонецЕсли; + +КонецПроцедуры + +// Возвращаемое значение: +// ТабличныйДокумент +// +&НаСервереБезКонтекста +Функция СкопироватьТабличныйДокумент(ТабличныйДокумент, КодЯзыка) + + Результат = Новый ТабличныйДокумент; + Результат.Макет = ТабличныйДокумент.Макет; + Результат.КодЯзыка = КодЯзыка; + Результат.Вывести(ТабличныйДокумент); + + Результат.ВерхнийКолонтитул.ТекстСлева = ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева; + Результат.ВерхнийКолонтитул.ТекстВЦентре = ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре; + Результат.ВерхнийКолонтитул.ТекстСправа = ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа; + Результат.НижнийКолонтитул.ТекстСлева = ТабличныйДокумент.НижнийКолонтитул.ТекстСлева; + Результат.НижнийКолонтитул.ТекстВЦентре = ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре; + Результат.НижнийКолонтитул.ТекстСправа = ТабличныйДокумент.НижнийКолонтитул.ТекстСправа; + + Для Каждого Область Из Результат.Области Цикл + Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") + И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки + Или ТипЗнч(Область) = Тип("РисунокТабличногоДокумента") Тогда + КопируемаяОбласть = ТабличныйДокумент.Области.Найти(Область.Имя); + Если КопируемаяОбласть = Неопределено Тогда + Продолжить; + КонецЕсли; + Область.ПараметрРасшифровки = КопируемаяОбласть.ПараметрРасшифровки; + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ПрочитатьТекстВПолеКолонтитула(Знач Текст, Колонтитул) + + ФорматированнаяСтрока = Текст; + Если ТипЗнч(Текст) = Тип("Строка") Тогда + ФорматированнаяСтрока = Новый ФорматированнаяСтрока(Текст); + КонецЕсли; + + Колонтитул.УстановитьФорматированнуюСтроку(ФорматированнаяСтрока); + +КонецПроцедуры + +&НаКлиенте +Процедура ПереключитьВидимостьКомандКолонтитулов() + + Если ТекущийЭлемент = Элементы.ТекстСлеваСверху + Или ТекущийЭлемент = Элементы.ТекстВЦентреСверху + Или ТекущийЭлемент = Элементы.ТекстСправаСверху + Или ТекущийЭлемент = Элементы.ТекстСлеваСнизу + Или ТекущийЭлемент = Элементы.ТекстВЦентреСнизу + Или ТекущийЭлемент = Элементы.ТекстСправаСнизу Тогда + + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаСлеваВерхнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстСлеваСверху); + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаВЦентреВерхнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстВЦентреСверху); + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаСправаВерхнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстСправаСверху); + + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаСлеваНижнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстСлеваСнизу); + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаВЦентреНижнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстВЦентреСнизу); + ПереключитьВидимостьЭлемента(Элементы.КомандыТекстаСправаНижнегоКолонтитула, ТекущийЭлемент = Элементы.ТекстСправаСнизу); + + КонецЕсли; + + ПодключитьОбработчикОжидания("ПереключитьВидимостьКомандКолонтитулов", 0.5, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПереключитьВидимостьЭлемента(Элемент, Видимость) + + Если Элемент.Видимость <> Видимость Тогда + Элемент.Видимость = Видимость; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьМакет() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + + Если ЭтоПечатнаяФорма Тогда + Макет = ПодготовитьМакетДляЗаписи(); + Иначе + Макет = ТабличныйДокумент; + КонецЕсли; + + АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет); + + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ОписаниеМакета = МодульУправлениеПечатью.ОписаниеМакета(); + ОписаниеМакета.ИмяОбъектаМетаданныхМакета = ИдентификаторМакета; + ОписаниеМакета.АдресМакетаВоВременномХранилище = АдресМакетаВоВременномХранилище; + ОписаниеМакета.КодЯзыка = ТекущийЯзык; + ОписаниеМакета.Владелец = ВладелецМакета; + ОписаниеМакета.Наименование = ИмяДокумента; + ОписаниеМакета.Ссылка = СсылкаМакета; + ОписаниеМакета.ТипМакета = "MXL"; + + ИдентификаторМакета = МодульУправлениеПечатью.ЗаписатьМакет(ОписаниеМакета); + Если Не ЗначениеЗаполнено(СсылкаМакета) Тогда + СсылкаМакета = МодульУправлениеПечатью.СсылкаМакета(ИдентификаторМакета); + КонецЕсли; + Если Не Элементы.Язык.Доступность Тогда + Элементы.Язык.Доступность = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура РасширитьСписокПолей() + + ДобавляемыеРеквизиты = Новый Массив; + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Образец", Новый ОписаниеТипов, ИмяСпискаПолей())); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Формат", Новый ОписаниеТипов("Строка"), ИмяСпискаПолей())); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ФорматПоУмолчанию", Новый ОписаниеТипов("Строка"), ИмяСпискаПолей())); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("КнопкаНастройкиФормата", Новый ОписаниеТипов("Число"), ИмяСпискаПолей())); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Значение", Новый ОписаниеТипов, ИмяСпискаПолей())); + + ИзменитьРеквизиты(ДобавляемыеРеквизиты); + + СписокПолей = Элементы[ИмяСпискаПолей()]; + СписокПолей.Шапка = Истина; + СписокПолей.УстановитьДействие("ПриАктивизацииСтроки", "Подключаемый_ДоступныеПоляПриАктивизацииСтроки"); + + ИмяКолонкиПредставление = ИмяСпискаПолей() + "Представление"; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулСлужебный = ОбщегоНазначения.ОбщийМодуль("КонструкторФормулСлужебный"); + ИмяКолонкиПредставление = МодульКонструкторФормулСлужебный.ИмяКолонкиПредставление(ИмяСпискаПолей()); + КонецЕсли; + + КолонкаПредставление = Элементы[ИмяКолонкиПредставление]; + КолонкаПредставление.Заголовок = НСтр("ru = 'Поле'"); + + КолонкаОбразец = Элементы.Добавить(ИмяСпискаПолей() + "Образец", Тип("ПолеФормы"), СписокПолей); + КолонкаОбразец.ПутьКДанным = ИмяСпискаПолей() + "." + "Образец"; + КолонкаОбразец.Вид = ВидПоляФормы.ПолеВвода; + КолонкаОбразец.Заголовок = НСтр("ru = 'Образец'"); + КолонкаОбразец.УстановитьДействие("ПриИзменении", "Подключаемый_ОбразецПриИзменении"); + КолонкаОбразец.ОтображатьВПодвале = Ложь; + + КнопкаНастройкиФормата = Элементы.Добавить(ИмяСпискаПолей() + "КнопкаНастройкиФормата", Тип("ПолеФормы"), СписокПолей); + КнопкаНастройкиФормата.ПутьКДанным = ИмяСпискаПолей() + "." + "КнопкаНастройкиФормата"; + КнопкаНастройкиФормата.Вид = ВидПоляФормы.ПолеКартинки; + КнопкаНастройкиФормата.ОтображатьВШапке = Истина; + КнопкаНастройкиФормата.КартинкаШапки = БиблиотекаКартинок.ПараметрыВыводаКомпоновкиДанных; + КнопкаНастройкиФормата.КартинкаЗначений = БиблиотекаКартинок.ПараметрыВыводаКомпоновкиДанных; + КнопкаНастройкиФормата.Заголовок = НСтр("ru = 'Настройка формата'"); + КнопкаНастройкиФормата.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + КнопкаНастройкиФормата.ГиперссылкаЯчейки = Истина; + КнопкаНастройкиФормата.ОтображатьВПодвале = Ложь; + + УстановитьПримерыЗначений(); + УстановитьФорматЗначенийПоУмолчанию(); + + КоллекцияПолей = ЭтотОбъект[ИмяСпискаПолей()].ПолучитьЭлементы(); // ДанныеФормыКоллекцияЭлементовДерева + Смещение = 0; + Для Каждого ОписаниеПоля Из КоллекцияПолей Цикл + Если ОписаниеПоля.ПутьКДанным = "Ссылка" Тогда + ОписаниеПоля.Заголовок = НСтр("ru = 'Образец'"); + Если Смещение <> 0 Тогда + Индекс = КоллекцияПолей.Индекс(ОписаниеПоля); + КоллекцияПолей.Сдвинуть(Индекс, Смещение); + КонецЕсли; + Прервать; + КонецЕсли; + Смещение = Смещение - 1; + КонецЦикла; + + Для Каждого ЭлементОформления Из УсловноеОформление.Элементы Цикл + Для Каждого ОформляемоеПоле Из ЭлементОформления.Поля.Элементы Цикл + Если ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей() + "Представление") Тогда + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей() + "Образец"); + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей() + "КнопкаНастройкиФормата"); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ДоступныеПоляПриАктивизацииСтроки(Элемент) + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + + Если ТекущиеДанные.ПолучитьРодителя() = Неопределено Тогда + Элементы["СтрокаПоиска" + ИмяСпискаПолей()].ПодсказкаВвода = ПодсказкаВводаСтрокиПоискаСпискаПолей(); + Иначе + Элементы["СтрокаПоиска" + ИмяСпискаПолей()].ПодсказкаВвода = ТекущиеДанные.ПредставлениеПутиКДанным; + КонецЕсли; + +#Если Не ВебКлиент Тогда + ПодключитьОбработчикОжидания("ПодсветитьЯчейкиСВыбраннымПолем", 0.1, Истина); +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ДоступныеПоляПередНачаломИзменения(Элемент, Отказ) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонструкторФормул") Тогда + МодульКонструкторФормулКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонструкторФормулКлиент"); + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + ТекущиеДанные.Образец = ТекущиеДанные.Значение; + ПолеВвода = Элементы[ИмяСпискаПолей() + "Образец"]; + ВыбранноеПоле = МодульКонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект, ИмяСпискаПолей()); + ПолеВвода.ОграничениеТипа = ВыбранноеПоле.Тип; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ЗаполнитьСписокОтображаемыхПолей(КоллекцияПолей, Результат = Неопределено) + + Если Результат = Неопределено Тогда + Результат = Новый Массив; + КонецЕсли; + + Для Каждого Элемент Из КоллекцияПолей.ПолучитьЭлементы() Цикл + Если Не ЗначениеЗаполнено(Элемент.ПутьКДанным) Тогда + Продолжить; + КонецЕсли; + Результат.Добавить(Элемент.ПутьКДанным); + ЗаполнитьСписокОтображаемыхПолей(Элемент, Результат); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ПриВыбореФорматаПоля(Формат, ДополнительныеПараметры) Экспорт + + Если Формат = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные.Формат = Формат; + ТекущиеДанные.Образец = Формат(ТекущиеДанные.Значение, ТекущиеДанные.Формат); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ДоступныеПоляПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + Если ЗначениеЗаполнено(ТекущиеДанные.Формат) Тогда + ТекущиеДанные.Образец = Формат(ТекущиеДанные.Значение, ТекущиеДанные.Формат); + КонецЕсли; + + Если ТекущиеДанные.ПутьКДанным = "Ссылка" Тогда + Образец = ТекущиеДанные.Образец; + КонецЕсли; + ПодключитьОбработчикОжидания("ПриИзмененииОбразца", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбразецПриИзменении(Элемент) + + ТекущиеДанные = Элементы[ИмяСпискаПолей()].ТекущиеДанные; + ТекущиеДанные.Значение = ТекущиеДанные.Образец; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииОбразца() + + ПриИзмененииОбразцаНаСервере(); + +КонецПроцедуры + +&НаСервере +Процедура ПриИзмененииОбразцаНаСервере() + + УстановитьПримерыЗначений(); + + Если Элементы.СтраницыМакетов.ТекущаяСтраница = Элементы.СтраницаОбразец Тогда + СформироватьПечатнуюФорму(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПодобратьИмяОбласти(ИмяОбласти) + + ИспользованныеИмена = Новый Соответствие; + + Для Каждого Область Из ТабличныйДокумент.Области Цикл + ИспользованныеИмена.Вставить(Область.Имя, Истина); + КонецЦикла; + + Индекс = 1; + Пока ИспользованныеИмена[ИмяОбласти(ИмяОбласти, Индекс)] <> Неопределено Цикл + Индекс = Индекс + 1; + КонецЦикла; + + Возврат ИмяОбласти(ИмяОбласти, Индекс); + +КонецФункции + +&НаСервере +Функция ИмяОбласти(ИмяОбласти, Индекс) + + Возврат ИмяОбласти + Формат(Индекс, "ЧГ=0"); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПодсказкаВводаСтрокиПоискаСпискаПолей() + + Возврат НСтр("ru = 'Найти поле...'"); + +КонецФункции + +// Параметры: +// Поле - ДанныеФормыЭлементДерева +// +&НаСервере +Функция ИмяТаблицыПоля(Поле) + + Родитель = Поле.ПолучитьРодителя(); + Если Родитель = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если Родитель.Таблица Тогда + Возврат Родитель.Имя; + КонецЕсли; + + Возврат ИмяТаблицыПоля(Родитель); + +КонецФункции + +&НаКлиенте +Процедура ПосмотретьПечатнуюФорму(Команда) + + Если Элементы.ПосмотретьПечатнуюФорму.Пометка Тогда + Элементы.СтраницыМакетов.ТекущаяСтраница = Элементы.СтраницаМакет; + Иначе + СформироватьПечатнуюФорму(); + Элементы.СтраницыМакетов.ТекущаяСтраница = Элементы.СтраницаОбразец; + КонецЕсли; + + Элементы.ПосмотретьПечатнуюФорму.Пометка = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + Элементы.НастройкиТекущейОбласти.Видимость = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + Элементы.КоманднаяПанель2.Доступность = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + Элементы.ПоказыватьКолонтитулы.Доступность = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + Элементы.ДействияСДокументом.Доступность = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + Элементы.Язык.Доступность = Не Элементы.ПосмотретьПечатнуюФорму.Пометка; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьПечатнуюФорму() + + Ссылки = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Образец); + ОбъектыПечати = Новый СписокЗначений; + Макет = ПодготовитьМакетДляЗаписи(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + ПечатнаяФорма = МодульУправлениеПечатью.СформироватьТабличныйДокумент( + Макет, Ссылки, ОбъектыПечати, ТекущийЯзык); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьШтампЭП(Команда) + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Если СтрНачинаетсяС(Область.Имя, "ШтампЭП") Тогда + Область.Имя = ""; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьМакетНаТекущемЯзыке() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + МодульУправлениеПечатью.УдалитьМакет(ИдентификаторМакета, ТекущийЯзык); + КонецЕсли; + + ТекущийЯзык = ОбщегоНазначения.КодОсновногоЯзыка(); + ЗагрузитьТабличныйДокументИзМетаданных(ТекущийЯзык); + Если ЗначениеЗаполнено(ВладелецМакета) Тогда + ПрочитатьМакет(); + КонецЕсли; + + Элементы.Язык.Заголовок = Элементы["Язык_" + ТекущийЯзык].Заголовок; + Модифицированность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьСохранениеВФайл(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт + + Если ВыбранныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + ПолноеИмяФайла = ВыбранныеФайлы[0]; + + ОчиститьПодсветку(); + Макет = ПодготовитьМакетДляЗаписи(Ложь); + Макет.Записать(ПолноеИмяФайла); + +КонецПроцедуры + +&НаКлиенте +Процедура ПродолжитьЗагрузкуИзФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт + + Если ВыбранныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + ПолноеИмяФайла = ВыбранныеФайлы[0]; + + ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла); + ТабличныйДокумент = ПрочитатьМакет(ДвоичныеДанные); + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьТекстВОбластиЯчеек() + + ТекущаяОбласть = ТабличныйДокумент.ТекущаяОбласть; + Если ТекущаяОбласть = Неопределено Или ТипЗнч(ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда + Возврат; + КонецЕсли; + + Модифицированность = Истина; + + Если ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник Тогда + ТекущаяОбласть.Текст = ТекущееЗначение; + ИначеЕсли ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + ТекущаяОбласть.Имя = ""; + ТекущаяОбласть.ПараметрРасшифровки = ТекущееЗначение; + + Если ЗначениеЗаполнено(ТекущееЗначение) Тогда + ТекущаяОбласть.Имя = ПодобратьИмяОбласти("Условие_"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриВыбореИмениМакета(НовоеИмяМакета, ДополнительныеПараметры) Экспорт + + Если НовоеИмяМакета = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ИмяДокумента <> НовоеИмяМакета Тогда + Модифицированность = Истина; + КонецЕсли; + + ИмяДокумента = НовоеИмяМакета; + УстановитьЗаголовок(); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + diff --git a/SSL/src/CommonForms/Сертификат/Form.form b/SSL/src/CommonForms/Сертификат/Form.form index be6d80d2d..c81b7582e 100644 --- a/SSL/src/CommonForms/Сертификат/Form.form +++ b/SSL/src/CommonForms/Сертификат/Form.form @@ -359,6 +359,114 @@ Auto + + ГруппаЛицензияКриптоПро + 182 + + ДекорацияИнформация + 187 + + <key>ru</key> + <value>Декорация информация</value> + + true + true + + true + + + ДекорацияИнформацияРасширеннаяПодсказка + 189 + Label + true + true + + Left + + + + ДекорацияИнформацияКонтекстноеМеню + 188 + true + + true + true + + + CommonPicture.УдалитьИнформация + + AsFileRef + + + + ДекорацияЛицензияКриптоПро + 190 + + <key>ru</key> + <value>Содержит встроенную лицензию КриптоПро</value> + + true + true + + true + + + ДекорацияЛицензияКриптоПроРасширеннаяПодсказка + 192 + Label + true + true + + Left + + + + ДекорацияЛицензияКриптоПроКонтекстноеМеню + 191 + true + + Label + true + true + + Arial + 10.0 + true + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Лицензия крипто про</value> + + + ГруппаЛицензияКриптоПроРасширеннаяПодсказка + 183 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + true true diff --git a/SSL/src/CommonForms/Сертификат/Module.bsl b/SSL/src/CommonForms/Сертификат/Module.bsl index 7041912e4..d2b2aa186 100644 --- a/SSL/src/CommonForms/Сертификат/Module.bsl +++ b/SSL/src/CommonForms/Сертификат/Module.bsl @@ -59,6 +59,9 @@ Элементы.АлгоритмПодписи.Подсказка = Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования.Реквизиты.АлгоритмПодписи.Подсказка; + + Элементы.ГруппаЛицензияКриптоПро.Видимость = ЭлектроннаяПодписьСлужебный.СодержитВстроеннуюЛицензиюКриптоПро( + ДанныеСертификата); ЗаполнитьКодыНазначенияСертификата(СвойстваСертификата.Назначение, НазначениеКоды); diff --git a/SSL/src/CommonForms/Склонения/Form.form b/SSL/src/CommonForms/Склонения/Form.form index 4304848fa..283a03bd5 100644 --- a/SSL/src/CommonForms/Склонения/Form.form +++ b/SSL/src/CommonForms/Склонения/Form.form @@ -370,7 +370,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/CommonForms/УстановленныеИсправления/Form.form b/SSL/src/CommonForms/УстановленныеИсправления/Form.form index bba504194..9781869af 100644 --- a/SSL/src/CommonForms/УстановленныеИсправления/Form.form +++ b/SSL/src/CommonForms/УстановленныеИсправления/Form.form @@ -605,6 +605,58 @@ УстановленныеИсправленияКонтекстноеМеню 2 + + УстановленныеИсправленияКонтекстноеМенюДобавить + 106 + true + true + + true + + + УстановленныеИсправленияКонтекстноеМенюДобавитьРасширеннаяПодсказка + 107 + Label + true + true + + Left + + + Form.Item.УстановленныеИсправления.StandardCommand.Add + Normal + Auto + true + true + UserCmds + Auto + + + УстановленныеИсправленияКонтекстноеМенюУдалить + 108 + true + true + + true + + + УстановленныеИсправленияКонтекстноеМенюУдалитьРасширеннаяПодсказка + 109 + Label + true + true + + Left + + + Form.Item.УстановленныеИсправления.StandardCommand.Delete + Normal + Auto + true + true + UserCmds + Auto + true true diff --git a/SSL/src/CommonForms/УстановленныеИсправления/Module.bsl b/SSL/src/CommonForms/УстановленныеИсправления/Module.bsl index 15f6a18db..fda7cc916 100644 --- a/SSL/src/CommonForms/УстановленныеИсправления/Module.bsl +++ b/SSL/src/CommonForms/УстановленныеИсправления/Module.bsl @@ -18,17 +18,6 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда - ДоступнаУстановкаПатчей = СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии(); - Если Не ДоступнаУстановкаПатчей Тогда - ТекстСообщения = НСтр("ru = 'Для установки исправлений (патчей) рекомендуется обновить платформу 1С:Предприятие на версию: - | • 8.3.15.1958 или выше - | • 8.3.16.1476 или выше - | • 8.3.17.1480 или выше.'"); - ВызватьИсключение ТекстСообщения; - КонецЕсли; - КонецЕсли; - РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); ЭтоПодчиненныйУзелРИБ = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ(); @@ -37,24 +26,19 @@ ИначеЕсли ЭтоПодчиненныйУзелРИБ Тогда Элементы.ИнформацияОписание.Заголовок = НСтр("ru = 'Управление составом исправлений выполняется в центральном узле.'"); ИначеЕсли Не ОбщегоНазначения.ЭтоWindowsКлиент() Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаИнформация", "Видимость", Ложь); + Элементы.ГруппаИнформация.Видимость = Ложь; КонецЕсли; Если РазделениеВключено Или ЭтоПодчиненныйУзелРИБ Или Не ОбщегоНазначения.ЭтоWindowsКлиент() Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( - Элементы, "ФормаУстановитьИсправление", "Видимость", Ложь); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( - Элементы, "ФормаУдалитьИсправление", "Видимость", Ложь); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( - Элементы, "УстановленныеИсправленияКонтекстноеМенюДобавить", "Видимость", Ложь); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( - Элементы, "УстановленныеИсправленияКонтекстноеМенюУдалить", "Видимость", Ложь); + Элементы.ФормаУстановитьИсправление.Видимость = Ложь; + Элементы.ФормаУдалитьИсправление.Видимость = Ложь; + Элементы.УстановленныеИсправленияКонтекстноеМенюДобавить.Видимость = Ложь; + Элементы.УстановленныеИсправленияКонтекстноеМенюУдалить.Видимость = Ложь; КонецЕсли; ОбновитьСписокИсправлений(); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( - Элементы, "УстановленныеИсправленияПрименимоДля", "Видимость", Ложь); + Элементы.УстановленныеИсправленияПрименимоДля.Видимость = Ложь; КонецПроцедуры diff --git a/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl b/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl index 6a5f3a2a5..455c9302a 100644 --- a/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl @@ -22,16 +22,7 @@ КонецЕсли; - ФормаПараметры = Новый Структура( - "КлючНазначенияИспользования, КлючПользовательскихНастроек, - |Расшифровка, СформироватьПриОткрытии, ТолькоПросмотр, - |ФиксированныеНастройки, Раздел, Подсистема, ПодсистемаПредставление"); - ЗаполнитьЗначенияСвойств(ФормаПараметры, Параметры); - ФормаПараметры.Вставить("Отбор", Новый Структура); - Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда - ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ФормаПараметры.Отбор, Параметры.Отбор, Истина); - Параметры.Отбор.Очистить(); - КонецЕсли; + ФормаПараметры = ВариантыОтчетов.СохраняемыеПараметрыФормыОтчета(Параметры); Если Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда АвтоЗаголовок = Ложь; @@ -127,6 +118,7 @@ Закрыть(Истина); Иначе РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("ИмяСобытия", ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияФормыНастроек()); РезультатВыбора.Вставить("КомпоновщикНастроекКД", Отчет.КомпоновщикНастроек); РезультатВыбора.Вставить("ВариантМодифицирован", ВариантМодифицирован); РезультатВыбора.Вставить("ПользовательскиеНастройкиМодифицированы", ВариантМодифицирован Или ПользовательскиеНастройкиМодифицированы); diff --git a/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form b/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form index b9eb83b00..05c256e8c 100644 --- a/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form +++ b/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form @@ -1141,6 +1141,64 @@ true + + ОтборыПоле + 1408 + true + true + + true + + + Отборы.Поле + + None + + ОтборыПолеРасширеннаяПодсказка + 1410 + Label + true + true + + Left + + + + ОтборыПолеКонтекстноеМеню + 1409 + true + + InputField + Auto + true + Left + true + + + AutoComplete + ОтборыПолеАвтоПодбор + + + StartChoice + ОтборыПолеНачалоВыбора + + + ChoiceProcessing + ОтборыПолеОбработкаВыбора + + true + true + true + false + true + true + true + OnActivate + true + true + Normal + + ОтборыПараметр 1212 @@ -1226,49 +1284,6 @@ Normal - - ОтборыЛевоеЗначение - 1215 - true - true - - true - - - Отборы.ЛевоеЗначение - - None - - ОтборыЛевоеЗначениеРасширеннаяПодсказка - 1217 - Label - true - true - - Left - - - - ОтборыЛевоеЗначениеКонтекстноеМеню - 1216 - true - - InputField - Auto - true - Left - true - - 1 - true - true - true - true - true - true - Normal - - true true @@ -2748,7 +2763,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -2757,7 +2772,7 @@ 811 <key>ru</key> - <value><bgcolor #ffec9d><color #9d5600>В отчете установлены фильтры для группировок, которые можно настроить на странице </></><b><color #9d5600>Структура</></><bgcolor #ffec9d><color #9d5600>.</></></value> + <value><color #9D5600><bgcolor #FFEC9D>В отчете установлены фильтры для группировок, которые можно настроить на странице </></><b><color #9D5600>Структура</></><color #9D5600><bgcolor #FFEC9D>.</></></value> true true @@ -5038,7 +5053,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -5047,7 +5062,7 @@ 1007 <key>ru</key> - <value><bgcolor #ffec9d><color #9d5600>В отчете выбраны поля и сортировки для группировок, которые можно настроить на странице </></><b><color #9d5600>Структура</></><bgcolor #ffec9d><color #9d5600>.</></></value> + <value><color #9D5600><bgcolor #FFEC9D>В отчете выбраны поля и сортировки для группировок, которые можно настроить на странице </></><b><color #9D5600>Структура</></><color #9D5600><bgcolor #FFEC9D>.</></></value> true true @@ -5826,7 +5841,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -5835,7 +5850,7 @@ 931 <key>ru</key> - <value><bgcolor #ffec9d><color #9d5600>В отчете установлено оформление для группировок, которое можно настроить на странице </></><b><color #9d5600>Структура</></><bgcolor #ffec9d><color #9d5600>.</></></value> + <value><color #9D5600><bgcolor #FFEC9D>В отчете установлено оформление для группировок, которое можно настроить на странице </></><b><color #9D5600>Структура</></><color #9D5600><bgcolor #FFEC9D>.</></></value> true true @@ -7647,7 +7662,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -7776,7 +7791,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -8062,59 +8077,6 @@ КомандыФормы_Правая 80 - - Группа1 - 1033 - - ИзменитьФорму - 318 - - <key>ru</key> - <value>Изменить форму...</value> - - true - true - - true - - - ИзменитьФормуРасширеннаяПодсказка - 319 - Label - true - true - - Left - - - Form.StandardCommand.CustomizeForm - Normal - Picture - true - true - UserCmds - Auto - - true - - true - - - <key>ru</key> - <value>1</value> - - - Группа1РасширеннаяПодсказка - 1034 - Label - true - true - - Left - - - - ЗакрытьИСформировать 21 @@ -8164,18 +8126,73 @@ true UserCmds Auto + InAdditionalSubmenu - - ИзменитьУсловияОтборов - 1000 + + ГруппаНастройка + 1413 + + ИзменитьУсловияОтборов + 1000 + true + true + + true + + + ИзменитьУсловияОтборовРасширеннаяПодсказка + 1001 + Label + true + true + + Left + + + Form.Command.ИзменитьУсловияОтборов + Normal + Picture + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ПерейтиКНастройкамДляТехническогоСпециалиста + 1411 + true + true + + true + + + ПерейтиКНастройкамДляТехническогоСпециалистаРасширеннаяПодсказка + 1412 + Label + true + true + + Left + + + Form.Command.ПерейтиКНастройкамДляТехническогоСпециалиста + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + true true true - ИзменитьУсловияОтборовРасширеннаяПодсказка - 1001 + ГруппаНастройкаРасширеннаяПодсказка + 1414 Label true true @@ -8183,13 +8200,38 @@ Left - Form.Command.ИзменитьУсловияОтборов + + + + ИзменитьФорму + 318 + + <key>ru</key> + <value>Изменить форму...</value> + + true + true + + true + + + ИзменитьФормуРасширеннаяПодсказка + 319 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm Normal Picture true true UserCmds Auto + InAdditionalSubmenu Справка @@ -8216,6 +8258,7 @@ true UserCmds Auto + InAdditionalSubmenu true true @@ -8976,6 +9019,10 @@ Список1.Check + + OnChange + Подключаемый_ПометкаЭлементаСписка_ПриИзменении + Список1ПометкаРасширеннаяПодсказка 1278 @@ -8992,7 +9039,6 @@ true CheckBoxField - Auto true Left true @@ -9084,10 +9130,18 @@ Left true + + BeforeAddRow + Подключаемый_Список_ПередНачаломДобавления + ChoiceProcessing Подключаемый_Список_ОбработкаВыбора + + BeforeRowChange + Подключаемый_Список_ПередНачаломИзменения + OnChange Подключаемый_Список_ПриИзменении @@ -9239,6 +9293,10 @@ Список2.Check + + OnChange + Подключаемый_ПометкаЭлементаСписка_ПриИзменении + Список2ПометкаРасширеннаяПодсказка 1299 @@ -9255,7 +9313,6 @@ true CheckBoxField - Auto true Left true @@ -9347,10 +9404,18 @@ Left true + + BeforeAddRow + Подключаемый_Список_ПередНачаломДобавления + ChoiceProcessing Подключаемый_Список_ОбработкаВыбора + + BeforeRowChange + Подключаемый_Список_ПередНачаломИзменения + OnChange Подключаемый_Список_ПриИзменении @@ -9502,6 +9567,10 @@ Список3.Check + + OnChange + Подключаемый_ПометкаЭлементаСписка_ПриИзменении + Список3ПометкаРасширеннаяПодсказка 1320 @@ -9518,7 +9587,6 @@ true CheckBoxField - Auto true Left true @@ -9610,10 +9678,18 @@ Left true + + BeforeAddRow + Подключаемый_Список_ПередНачаломДобавления + ChoiceProcessing Подключаемый_Список_ОбработкаВыбора + + BeforeRowChange + Подключаемый_Список_ПередНачаломИзменения + OnChange Подключаемый_Список_ПриИзменении @@ -9765,6 +9841,10 @@ Список4.Check + + OnChange + Подключаемый_ПометкаЭлементаСписка_ПриИзменении + Список4ПометкаРасширеннаяПодсказка 1341 @@ -9781,7 +9861,6 @@ true CheckBoxField - Auto true Left true @@ -9873,10 +9952,18 @@ Left true + + BeforeAddRow + Подключаемый_Список_ПередНачаломДобавления + ChoiceProcessing Подключаемый_Список_ОбработкаВыбора + + BeforeRowChange + Подключаемый_Список_ПередНачаломИзменения + OnChange Подключаемый_Список_ПриИзменении @@ -11704,10 +11791,6 @@ ЛевоеЗначение - - <key>ru</key> - <value>Поле</value> - 25 DataCompositionField @@ -11776,6 +11859,24 @@ true + + Поле + + <key>ru</key> + <value>Поле</value> + + 28 + + String + + + + true + + + true + + ПомеченныеНаУдаление @@ -13681,6 +13782,46 @@ Auto Auto + + НастройкиОтчета + + + + ВариантНаименование + + String + + + + + Заголовок + + String + + + + + ТипЭлементаСтруктурыНастроек + + String + + + + + ИдентификаторЭлементаСтруктурыНастроек + + + + Вариант + + + + ИмяСтраницы + + String + + + diff --git a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl index 88c1467f3..2712e013a 100644 --- a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl @@ -12,6 +12,8 @@ Перем ИсточникПеретаскиванияНаКлиенте; &НаКлиенте Перем ПриемникПеретаскиванияНаКлиенте; +&НаКлиенте +Перем Список_ПередНачаломИзменения; #КонецОбласти @@ -23,24 +25,9 @@ ОпределитьПоведениеВМобильномКлиенте(); - ФормаПараметры = Новый Структура( - "КлючНазначенияИспользования, КлючПользовательскихНастроек, - |Расшифровка, СформироватьПриОткрытии, ТолькоПросмотр, - |ФиксированныеНастройки, Раздел, Подсистема, ПодсистемаПредставление"); - ЗаполнитьЗначенияСвойств(ФормаПараметры, Параметры); - ФормаПараметры.Вставить("Отбор", Новый Структура); - Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда - ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ФормаПараметры.Отбор, Параметры.Отбор, Истина); - Параметры.Отбор.Очистить(); - КонецЕсли; - - Если Не Параметры.Свойство("НастройкиОтчета", НастройкиОтчета) Тогда - ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""НастройкиОтчета"".'"); - КонецЕсли; - - Если Не Параметры.Свойство("ВариантНаименование", ВариантНаименование) Тогда - ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""ВариантНаименование"".'"); - КонецЕсли; + ФормаПараметры = ВариантыОтчетов.СохраняемыеПараметрыФормыОтчета(Параметры); + НастройкиОтчета = Параметры.НастройкиОтчета; + ВариантНаименование = Параметры.ВариантНаименование; ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета); @@ -49,32 +36,27 @@ КлючСохраненияПоложенияОкна = КлючСохраненияПоложенияОкна + "." + КлючТекущегоВарианта; КонецЕсли; - НастройкиКД = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Вариант"); + НастройкиКД = Параметры.Вариант; Если НастройкиКД = Неопределено Тогда НастройкиКД = Отчет.КомпоновщикНастроек.Настройки; КонецЕсли; - Параметры.Свойство("ИдентификаторЭлементаСтруктурыНастроек", ИдентификаторЭлементаСтруктурыНастроек); + ИдентификаторЭлементаСтруктурыНастроек = Параметры.ИдентификаторЭлементаСтруктурыНастроек; Если ТипЗнч(ИдентификаторЭлементаСтруктурыНастроек) = Тип("ИдентификаторКомпоновкиДанных") Тогда РежимИзмененияЭлементаСтруктурыНастроек = Истина; Высота = 0; КлючСохраненияПоложенияОкна = КлючСохраненияПоложенияОкна + ".Узел"; ПутьКЭлементуСтруктурыНастроек = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( - Параметры, "ПутьКЭлементуСтруктурыНастроек", ""); + Параметры, "ПутьКЭлементуСтруктурыНастроек"); ЭлементСтруктуры = ОтчетыСервер.ЭлементНастроекПоПолномуПути(НастройкиКД, ПутьКЭлементуСтруктурыНастроек); Если ЭлементСтруктуры <> Неопределено Тогда ИдентификаторЭлементаСтруктурыНастроек = НастройкиКД.ПолучитьИдентификаторПоОбъекту(ЭлементСтруктуры); КонецЕсли; - Если Не Параметры.Свойство("Заголовок", Заголовок) Тогда - ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""Заголовок"".'"); - КонецЕсли; - - Если Не Параметры.Свойство("ТипЭлементаСтруктурыНастроек", ТипЭлементаСтруктурыНастроек) Тогда - ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""ТипЭлементаСтруктурыНастроек"".'"); - КонецЕсли; + Заголовок = Параметры.Заголовок; + ТипЭлементаСтруктурыНастроек = Параметры.ТипЭлементаСтруктурыНастроек; Иначе Если Не ЗначениеЗаполнено(ВариантНаименование) Тогда ВариантНаименование = ОписаниеНастроекОтчета.Наименование; @@ -91,11 +73,11 @@ И (Не ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()); Если РежимИзмененияЭлементаСтруктурыНастроек Тогда - ИмяСтраницы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ИмяСтраницы", "СтраницаСоставГруппировки"); + ИмяСтраницы = ?(ПустаяСтрока(Параметры.ИмяСтраницы), "СтраницаСоставГруппировки", Параметры.ИмяСтраницы); РасширенныйРежим = 1; Иначе - РасширенныйРежим = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ОписаниеНастроекОтчета, "ФормаНастроекРасширенныйРежим", 0); - ИмяСтраницы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ОписаниеНастроекОтчета, "ФормаНастроекИмяСтраницы", "СтраницаОтборы"); + РасширенныйРежим = ОписаниеНастроекОтчета.ФормаНастроекРасширенныйРежим; + ИмяСтраницы = ОписаниеНастроекОтчета.ФормаНастроекИмяСтраницы; КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда @@ -137,7 +119,9 @@ &НаСервере Процедура ПередЗагрузкойВариантаНаСервере(НовыеНастройкиКД) - Если ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + Если ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта + И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + ОтчетыСервер.УстановитьФиксированныеОтборы(ФормаПараметры.Отбор, НовыеНастройкиКД, НастройкиОтчета); КонецЕсли; @@ -150,7 +134,7 @@ Исключение НовыеНастройкиXML = Неопределено; КонецПопытки; - НастройкиОтчета.Вставить("НовыеНастройкиXML", НовыеНастройкиXML); + НастройкиОтчета.НовыеНастройкиXML = НовыеНастройкиXML; КонецЕсли; КонецПроцедуры @@ -166,7 +150,7 @@ Исключение НовыеПользовательскиеНастройкиXML = Неопределено; КонецПопытки; - НастройкиОтчета.Вставить("НовыеПользовательскиеНастройкиXML", НовыеПользовательскиеНастройкиXML); + НастройкиОтчета.НовыеПользовательскиеНастройкиXML = НовыеПользовательскиеНастройкиXML; КонецЕсли; КонецПроцедуры @@ -323,16 +307,6 @@ КонецЕсли; КонецПроцедуры -&НаКлиенте -Процедура Подключаемый_ЭлементСписка_ПриИзменении(Элемент) - ПутьКСписку = СтрЗаменить(Элемент.Имя, "Значение", ""); - - Строка = Элементы[ПутьКСписку].ТекущиеДанные; - - ЭлементСписка = ЭтотОбъект[ПутьКСписку].НайтиПоЗначению(Строка.Значение); - ЭлементСписка.Пометка = Истина; -КонецПроцедуры - &НаКлиенте Процедура Подключаемый_Список_ПриИзменении(Элемент) КомпоновщикНастроек = Отчет.КомпоновщикНастроек; @@ -361,17 +335,33 @@ КонецПроцедуры &НаКлиенте -Процедура Подключаемый_ЭлементСписка_НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; +Процедура Подключаемый_Список_ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) - ПутьКСписку = СтрЗаменить(Элемент.Имя, "Значение", ""); + ПутьКСписку = Элемент.Имя; + ЭлементСписка = Элементы[Элемент.Имя + "Значение"]; - ПараметрыЗаполнения = ПараметрыЗаполненияСписка(Истина, Ложь, Ложь); + ПараметрыЗаполнения = ПараметрыЗаполненияСписка(Истина, Ложь); ПараметрыЗаполнения.ПутьКСписку = ПутьКСписку; ПараметрыЗаполнения.Индекс = ПутьКДаннымЭлементов.ПоИмени[ПутьКСписку]; - ПараметрыЗаполнения.Владелец = Элемент; - НачатьЗаполнениеСписка(Элемент, ПараметрыЗаполнения); + ВыборПереопределен = Ложь; + НачатьЗаполнениеСписка(ЭлементСписка, ПараметрыЗаполнения, ВыборПереопределен); + + Если ВыборПереопределен Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_Список_ПередНачаломИзменения(Элемент, Отказ) + + Список_ПередНачаломИзменения = Элемент; + + ЭлементСписка = Элементы[Элемент.Имя + "Значение"]; + ЭлементСписка.РедактированиеТекста = Ложь; + ПодключитьОбработчикОжидания("Список_ПриНачалеИзменения", 0.1, Истина); + КонецПроцедуры &НаКлиенте @@ -428,6 +418,38 @@ УстановитьМодифицированность(); КонецПроцедуры +&НаКлиенте +Процедура Подключаемый_ПометкаЭлементаСписка_ПриИзменении(Элемент) + + ОтключитьОбработчикОжидания("Список_ПриНачалеИзменения"); + Список_ПередНачаломИзменения.ЗакончитьРедактированиеСтроки(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ЭлементСписка_ПриИзменении(Элемент) + ПутьКСписку = СтрЗаменить(Элемент.Имя, "Значение", ""); + + Строка = Элементы[ПутьКСписку].ТекущиеДанные; + + ЭлементСписка = ЭтотОбъект[ПутьКСписку].НайтиПоЗначению(Строка.Значение); + ЭлементСписка.Пометка = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ЭлементСписка_НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка, Отказ = Ложь) + СтандартнаяОбработка = Ложь; + + ПутьКСписку = СтрЗаменить(Элемент.Имя, "Значение", ""); + + ПараметрыЗаполнения = ПараметрыЗаполненияСписка(Истина, Ложь, Ложь); + ПараметрыЗаполнения.ПутьКСписку = ПутьКСписку; + ПараметрыЗаполнения.Индекс = ПутьКДаннымЭлементов.ПоИмени[ПутьКСписку]; + ПараметрыЗаполнения.Владелец = Элемент; + + НачатьЗаполнениеСписка(Элемент, ПараметрыЗаполнения); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСортировка @@ -897,33 +919,30 @@ Возврат; КонецЕсли; - СтандартнаяОбработка = Ложь; - - Поля = СтрРазделить("ОтборыПараметр, ОтборыТипГруппы, ОтборыЛевоеЗначение", ", ", Ложь); + Поля = СтрРазделить("ОтборыПараметр, ОтборыТипГруппы", ", ", Ложь); Если Поля.Найти(Поле.Имя) <> Неопределено Тогда + СтандартнаяОбработка = Ложь; Если Строка.ЭтоПараметр Тогда Возврат; КонецЕсли; - Если Строка.ЭтоГруппа Тогда ОтборыВыбратьГруппу(ИдентификаторСтроки); - Иначе - ОтборыВыбратьПоле(ИдентификаторСтроки, Строка); КонецЕсли; + ИначеЕсли Поле = Элементы.ОтборыКартинкаРежимаОтображения Тогда // Изменение быстрого доступа к отбору. + СтандартнаяОбработка = Ложь; Если Строка.ЭтоПараметр Тогда СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(Отчет.КомпоновщикНастроек, "ПараметрыДанных"); Иначе СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек(Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек); КонецЕсли; ВыбратьРежимОтображенияДляСтроки(СвойствоЭлементаСтруктуры, "Отборы", ИдентификаторСтроки, Истина, Не Строка.ЭтоПараметр); - Иначе - СтандартнаяОбработка = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтборыПриАктивизацииСтроки(Элемент) + УстановитьПараметрыРедактированияЭлементаОтбора(); ПодключитьОбработчикОжидания("ОтборыПриИзмененииТекущейСтроки", 0.1, Истина); КонецПроцедуры @@ -947,18 +966,57 @@ &НаКлиенте Процедура ОтборыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) Отказ = Истина; - - Если Не РежимИзмененияЭлементаСтруктурыНастроек Тогда - Строка = Элементы.Отборы.ТекущиеДанные; - Если (Строка = Неопределено) - Или (Строка.ЭтоПараметр) - Или (Строка.ЭтоРаздел И Строка.Идентификатор = "ПараметрыДанных") Тогда - Строка = Отборы.ПолучитьЭлементы()[1]; - Элементы.Отборы.ТекущаяСтрока = Строка.ПолучитьИдентификатор(); - КонецЕсли; + ОтборыПередВыборомПоля(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборыПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОтборыПередВыборомПоля(Элементы.Отборы.ТекущаяСтрока); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборыПолеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; КонецЕсли; - ВыбратьПоле("Отборы", Новый ОписаниеОповещения("ОтборыПослеВыбораПоля", ЭтотОбъект)); + СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек( + Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек); + + ОписаниеНастройки = СвойствоЭлементаСтруктуры.ДоступныеПоляОтбора.НайтиПоле(ВыбранноеЗначение); + ИдентификаторСтроки = Элементы.Отборы.ТекущаяСтрока; + + ОтборыПослеВыбораПоля(ОписаниеНастройки, ИдентификаторСтроки); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборыПолеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) + + Запрос = СокрЛП(Текст); + + Если Не ЗначениеЗаполнено(Запрос) Тогда + Возврат; + КонецЕсли; + + Строка = Элементы.Отборы.ТекущиеДанные; + + Если Строка = Неопределено + Или Строка.ЭтоРаздел + Или Строка.ЭтоГруппа + Или Строка.ЭтоПараметр Тогда + + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек( + Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек); + + ДоступныеПоля = СвойствоЭлементаСтруктуры.ДоступныеПоляОтбора; + ОпределитьДанныеВыбораЭлементаОтбораПоЗапросу(Запрос, ДанныеВыбора, ДоступныеПоля); + КонецПроцедуры &НаКлиенте @@ -1031,11 +1089,14 @@ &НаКлиенте Процедура ОтборыЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Строка = Элементы.Отборы.ТекущиеДанные; + УстановитьПараметрыРедактирования(Строка); + + Если ВыборПереопределен(Строка, СтандартнаяОбработка) Тогда + Возврат; + КонецЕсли; Если Строка.ДоступенСписокЗначений Тогда - ПоказатьСписокВыбора(Строка, СтандартнаяОбработка); - Иначе - УстановитьПараметрыРедактирования(Строка); + ПоказатьСписокВыбора(Строка, СтандартнаяОбработка, Элемент); КонецЕсли; КонецПроцедуры @@ -1061,11 +1122,14 @@ &НаКлиенте Процедура ОтборыПравоеЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Строка = Элементы.Отборы.ТекущиеДанные; + УстановитьПараметрыРедактирования(Строка); + + Если ВыборПереопределен(Строка, СтандартнаяОбработка) Тогда + Возврат; + КонецЕсли; Если ОтчетыКлиентСервер.ЭтоВидСравненияСписка(Строка.ВидСравнения) Тогда - ПоказатьСписокВыбора(Строка, СтандартнаяОбработка); - Иначе - УстановитьПараметрыРедактирования(Строка); + ПоказатьСписокВыбора(Строка, СтандартнаяОбработка, Элемент); КонецЕсли; КонецПроцедуры @@ -1167,19 +1231,21 @@ &НаКлиенте Процедура СтруктураВариантаВыбор(Элемент, СтрокаИдентификатор, Поле, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; Если РасширенныйРежим = 0 Тогда + СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; Строка = Элемент.ТекущиеДанные; Если Строка = Неопределено Тогда + СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; Если Строка.Тип = "НастройкиКомпоновкиДанных" Или Строка.Тип = "КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных" Или Строка.Тип = "КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных" Тогда + СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; @@ -1188,6 +1254,7 @@ Или Поле = Элементы.СтруктураВариантаСодержитПоляИлиСортировки Или Поле = Элементы.СтруктураВариантаСодержитУсловноеОформление Тогда + СтандартнаяОбработка = Ложь; ИмяСтраницы = Неопределено; Если Поле = Элементы.СтруктураВариантаСодержитОтборы Тогда ИмяСтраницы = "СтраницаОтборы"; @@ -1197,9 +1264,8 @@ ИмяСтраницы = "СтраницаОформление"; КонецЕсли; ИзменитьЭлементСтруктуры(Строка, ИмяСтраницы); - Иначе - СтандартнаяОбработка = Истина; КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -1582,20 +1648,21 @@ &НаКлиенте Процедура СоставГруппировкиВыбор(Элемент, ИдентификаторСтроки, Поле, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; Строка = Элементы.СоставГруппировки.ТекущиеДанные; Если Строка = Неопределено Тогда + СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; Если Поле = Элементы.СоставГруппировкиПоле Тогда + СтандартнаяОбработка = Ложь; Если ТипЗнч(Строка.Поле) = Тип("ПолеКомпоновкиДанных") Тогда СоставГруппировкиВыбратьПоле(ИдентификаторСтроки, Строка); КонецЕсли; - ИначеЕсли Поле = Элементы.СоставГруппировкиТипГруппировки - Или Поле = Элементы.СоставГруппировкиТипДополнения Тогда - СтандартнаяОбработка = Истина; + ИначеЕсли Поле <> Элементы.СоставГруппировкиТипГруппировки + И Поле <> Элементы.СоставГруппировкиТипДополнения Тогда + СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры @@ -1797,8 +1864,7 @@ ПараметрыФормы.Вставить("ИмяСтраницы", Элементы.СтраницыНастроек.ТекущаяСтраница.Имя); ПараметрыФормы.Вставить("ПредставлениеВарианта", ВариантНаименование); ПараметрыФормы.Вставить("ВариантМодифицирован", ВариантИзменен); - ПараметрыФормы.Вставить( - "ПользовательскиеНастройкиМодифицированы", + ПараметрыФормы.Вставить("ПользовательскиеНастройкиМодифицированы", ВариантИзменен Или ПользовательскиеНастройкиМодифицированы); ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".ФормаВарианта", ПараметрыФормы, ВладелецФормы); @@ -2116,9 +2182,6 @@ Строки = Раздел.ПолучитьЭлементы(); КонецЕсли; - СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек( - Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек); - Если ЭлементыНастроек = Неопределено Тогда ЭлементыНастроек = СвойствоЭлементаСтруктуры.Элементы; КонецЕсли; @@ -2165,6 +2228,7 @@ ЗаполнитьЗначенияСвойств(Строка, ЭлементНастройки); Строка.Идентификатор = СвойствоЭлементаСтруктуры.ПолучитьИдентификаторПоОбъекту(ЭлементНастройки); + Строка.Поле = Строка.Заголовок; Строка.ОтображатьИспользование = Истина; Строка.ЭтоПериод = (ТипЗнч(Строка.ПравоеЗначение) = Тип("СтандартныйПериод")); Строка.ЭтоУникальныйИдентификатор = (ТипЗнч(Строка.ПравоеЗначение) = Тип("УникальныйИдентификатор")); @@ -2229,14 +2293,21 @@ КонецПроцедуры &НаКлиенте -Процедура ОтборыВыбратьПоле(ИдентификаторСтроки, Строка) - СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек( - Отчет.КомпоновщикНастроек, "Отбор", ИдентификаторЭлементаСтруктурыНастроек); - - ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка); +Процедура ОтборыПередВыборомПоля(ИдентификаторСтроки = Неопределено) + Если Не РежимИзмененияЭлементаСтруктурыНастроек Тогда + Строка = Элементы.Отборы.ТекущиеДанные; + + Если (Строка = Неопределено) + Или (Строка.ЭтоПараметр) + Или (Строка.ЭтоРаздел И Строка.Идентификатор = "ПараметрыДанных") Тогда + + Строка = Отборы.ПолучитьЭлементы()[1]; + Элементы.Отборы.ТекущаяСтрока = Строка.ПолучитьИдентификатор(); + КонецЕсли; + КонецЕсли; Обработчик = Новый ОписаниеОповещения("ОтборыПослеВыбораПоля", ЭтотОбъект, ИдентификаторСтроки); - ВыбратьПоле("Отборы", Обработчик, ЭлементНастройки.ЛевоеЗначение); + ВыбратьПоле("Отборы", Обработчик); КонецПроцедуры &НаКлиенте @@ -2291,48 +2362,75 @@ КонецПроцедуры &НаКлиенте -Процедура ОтборыПриИзмененииТекущейСтроки() +Процедура УстановитьПараметрыРедактированияЭлементаОтбора() + Строка = Элементы.Отборы.ТекущиеДанные; - Если Строка = Неопределено Тогда - УстановитьДоступностьКомандОтборов(); + + Если Строка = Неопределено + Или Строка.ЭтоРаздел + Или Строка.ЭтоГруппа Тогда + Возврат; КонецЕсли; - УстановитьДоступностьКомандОтборов(Не Строка.ЭтоПараметр И Не Строка.ЭтоРаздел, Строка.ЭтоРаздел); + #Область ПараметрыРедактированияУсловия - Если Строка.ЭтоРаздел Или Строка.ЭтоГруппа Тогда - Возврат; - КонецЕсли; + ПолеУсловия = Элементы.ОтборыВидСравнения; + ПолеУсловия.РежимВыбораИзСписка = (Строка.ДоступныеВидыСравнения <> Неопределено); - Элементы.ОтборыВидСравнения.РежимВыбораИзСписка = (Строка.ДоступныеВидыСравнения <> Неопределено); Если Строка.ДоступныеВидыСравнения <> Неопределено Тогда - Список = Элементы.ОтборыВидСравнения.СписокВыбора; + + Список = ПолеУсловия.СписокВыбора; Список.Очистить(); Для Каждого ВидыСравнения Из Строка.ДоступныеВидыСравнения Цикл ЗаполнитьЗначенияСвойств(Список.Добавить(), ВидыСравнения); КонецЦикла; + КонецЕсли; Если Строка.ЭтоПараметр Тогда + Условие = ВидСравненияКомпоновкиДанных.Равно; Если Строка.ДоступенСписокЗначений Тогда Условие = ВидСравненияКомпоновкиДанных.ВСписке; КонецЕсли; + Иначе Условие = Строка.ВидСравнения; КонецЕсли; + #КонецОбласти + + #Область ПараметрыРедактированияЗначения + ПолеЗначения = ?(Строка.ЭтоПараметр, Элементы.ОтборыЗначение, Элементы.ОтборыПравоеЗначение); ПолеЗначения.ДоступныеТипы = Строка.ТипЗначения; ПолеЗначения.ВыборГруппИЭлементов = ОтчетыКлиентСервер.ЗначениеТипаГруппыИЭлементы(Строка.ВыборГруппИЭлементов, Условие); Список = ПолеЗначения.СписокВыбора; Список.Очистить(); + Если Строка.ДоступныеЗначения <> Неопределено Тогда + Для Каждого ДоступноеЗначение Из Строка.ДоступныеЗначения Цикл ЗаполнитьЗначенияСвойств(Список.Добавить(), ДоступноеЗначение); КонецЦикла; + + КонецЕсли; + + #КонецОбласти + +КонецПроцедуры + +&НаКлиенте +Процедура ОтборыПриИзмененииТекущейСтроки() + Строка = Элементы.Отборы.ТекущиеДанные; + + Если Строка = Неопределено Тогда + УстановитьДоступностьКомандОтборов(); + Иначе + УстановитьДоступностьКомандОтборов(Не Строка.ЭтоПараметр И Не Строка.ЭтоРаздел, Строка.ЭтоРаздел); КонецЕсли; КонецПроцедуры @@ -2400,6 +2498,28 @@ КонецПроцедуры +&НаКлиенте +Процедура Список_ПриНачалеИзменения() + + ПутьКСписку = Список_ПередНачаломИзменения.Имя; + ЭлементСписка = Элементы[Список_ПередНачаломИзменения.Имя + "Значение"]; + + ПараметрыЗаполнения = ПараметрыЗаполненияСписка(Истина, Ложь, Ложь); + ПараметрыЗаполнения.ПутьКСписку = ПутьКСписку; + ПараметрыЗаполнения.Индекс = ПутьКДаннымЭлементов.ПоИмени[ПутьКСписку]; + + ВыборПереопределен = Ложь; + НачатьЗаполнениеСписка(ЭлементСписка, ПараметрыЗаполнения, ВыборПереопределен); + + Если ВыборПереопределен Тогда + Список_ПередНачаломИзменения.ЗакончитьРедактированиеСтроки(Ложь); + Возврат; + КонецЕсли; + + ЭлементСписка.РедактированиеТекста = Истина; + +КонецПроцедуры + // Изменение группировки элементов. // Возвращаемое значение: @@ -3232,10 +3352,40 @@ КонецПроцедуры &НаКлиенте -Процедура ПоказатьСписокВыбора(Строка, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; +Функция ВыборПереопределен(Строка, СтандартнаяОбработка) - УстановитьПараметрыРедактирования(Строка); + Если Строка.ЭтоПараметр Тогда + ПолеЗначения = Элементы.ОтборыЗначение; + ТекущееЗначение = Строка.Значение; + Иначе + ПолеЗначения = Элементы.ОтборыПравоеЗначение; + ТекущееЗначение = Строка.ПравоеЗначение; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ЗавершитьВыборИзСписка", ЭтотОбъект, Строка.ПолучитьИдентификатор()); + + КлючСвойства = КлючСвойстваЭлементаСтруктурыНастроек("Отборы", Строка); + + СвойствоЭлементаСтруктуры = СвойствоЭлементаСтруктурыНастроек( + Отчет.КомпоновщикНастроек, КлючСвойства, ИдентификаторЭлементаСтруктурыНастроек); + + ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка); + Описание = ОтчетыКлиентСервер.НайтиДоступнуюНастройку(Отчет.КомпоновщикНастроек.Настройки, ЭлементНастройки); + + Если ОтчетыКлиент.ВыборПереопределен(ЭтотОбъект, Обработчик, Описание, Строка.ТипЗначения, + ОтчетыКлиентСервер.ЗначенияСписком(ТекущееЗначение), ПолеЗначения.ПараметрыВыбора) Тогда + + СтандартнаяОбработка = Ложь; + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +&НаКлиенте +Процедура ПоказатьСписокВыбора(Строка, СтандартнаяОбработка, Элемент) + СтандартнаяОбработка = Ложь; Если Строка.ЭтоПараметр Тогда ПолеЗначения = Элементы.ОтборыЗначение; @@ -3248,7 +3398,7 @@ Обработчик = Новый ОписаниеОповещения("ЗавершитьВыборИзСписка", ЭтотОбъект, Строка.ПолучитьИдентификатор()); Если ОтчетыКлиент.ЭтоВыборОбъектовМетаданных(Строка.ТипЗначения, ТекущееЗначение, Обработчик) - Или ОтчетыКлиент.ЭтоВыборПользователей(Строка.ТипЗначения, ТекущееЗначение, ПолеЗначения.ПараметрыВыбора, Обработчик) Тогда + Или ОтчетыКлиент.ЭтоВыборПользователей(ЭтотОбъект, Элемент, Строка.ТипЗначения, ТекущееЗначение, ПолеЗначения.ПараметрыВыбора, Обработчик) Тогда Возврат; КонецЕсли; @@ -3290,7 +3440,7 @@ ОтчетыКлиентСервер.ДополнитьСписок(ЗначенияДляВыбора, ЗначениеОтбора); КонецЕсли; - ОтчетыКлиентСервер.ОбновитьПредставленияСписка(ЗначенияДляВыбора, Строка.ДоступныеЗначения); + ОтчетыКлиент.ОбновитьПредставленияСписка(ЗначенияДляВыбора, Строка.ДоступныеЗначения); Возврат ЗначенияДляВыбора; КонецФункции @@ -4720,7 +4870,7 @@ КонецФункции &НаКлиенте -Процедура НачатьЗаполнениеСписка(Элемент, ПараметрыЗаполнения) +Процедура НачатьЗаполнениеСписка(Элемент, ПараметрыЗаполнения, ВыборПереопределен = Неопределено) Список = ЭтотОбъект[ПараметрыЗаполнения.ПутьКСписку]; ПолеСписка = Элементы[ПараметрыЗаполнения.ПутьКСписку]; // ТаблицаФормы ПолеЗначения = Элементы[ПараметрыЗаполнения.ПутьКСписку + "Значение"]; @@ -4771,9 +4921,19 @@ Обработчик = Новый ОписаниеОповещения("ЗавершитьЗаполнениеСписка", ЭтотОбъект, ПараметрыЗаполнения); + Если ОтчетыКлиент.ВыборПереопределен(ЭтотОбъект, Обработчик, Сведения.Описание, + Список.ТипЗначения, ОтмеченныеЗначения, ПараметрыВыбора) Тогда + ВыборПереопределен = Истина; + Возврат; + КонецЕсли; + + Если ВыборПереопределен <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыЗаполнения, "ЭтоПодбор", Ложь) И (ОтчетыКлиент.ЭтоВыборОбъектовМетаданных(Список.ТипЗначения, ОтмеченныеЗначения, Обработчик) - Или ОтчетыКлиент.ЭтоВыборПользователей(Список.ТипЗначения, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик)) Тогда + Или ОтчетыКлиент.ЭтоВыборПользователей(ЭтотОбъект, Элемент, Список.ТипЗначения, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик)) Тогда Возврат; КонецЕсли; @@ -5185,7 +5345,7 @@ КонецЕсли; РезультатВыбора = Новый Структура; - РезультатВыбора.Вставить("ИмяСобытия", "ФормаНастроек"); + РезультатВыбора.Вставить("ИмяСобытия", ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияФормыНастроек()); РезультатВыбора.Вставить("Переформировать", Переформировать); РезультатВыбора.Вставить("СброситьПользовательскиеНастройки", РасширенныйРежим = 1); РезультатВыбора.Вставить("ФормаНастроекРасширенныйРежим", РасширенныйРежим); @@ -6313,7 +6473,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыТипГруппы.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПравоеЗначение.Имя); @@ -6332,7 +6492,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыТипГруппы.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыВидСравнения.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); @@ -6373,7 +6533,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыТипГруппы.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПравоеЗначение.Имя); @@ -6392,7 +6552,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыВидСравнения.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); // ЭтоПериод = Истина. // @@ -6446,8 +6606,6 @@ Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); - ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыКартинкаРежимаОтображения.Имя); @@ -6534,7 +6692,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПараметр.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЗначение.Имя); @@ -6551,7 +6709,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПараметр.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыВидСравнения.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); @@ -6605,7 +6763,7 @@ ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыТипГруппы.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); - ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыЛевоеЗначение.Имя); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПоле.Имя); // ПредставлениеЗначения - Заполнено. // @@ -6822,7 +6980,7 @@ Процедура ЗагрузитьНастройкиВКомпоновщик(ПараметрыЗагрузки) ПроверитьПараметрыЗагрузки(ПараметрыЗагрузки); - ОтчетОбъект = ОтчетыСервер.ОтчетОбъект(ПараметрыЗагрузки.ОтчетОбъектИлиПолноеИмя); + ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Если НастройкиОтчета.События.ПередЗаполнениемПанелиБыстрыхНастроек Тогда ОтчетОбъект.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗагрузки); КонецЕсли; @@ -6838,6 +6996,11 @@ ОтчетыСервер.СброситьПользовательскиеНастройки(ДоступныеНастройки, ПараметрыЗагрузки); + ОтчетыСервер.ЗаполнитьДополнительныеСвойства(ОтчетОбъект, + ДоступныеНастройки.Настройки, + КлючТекущегоВарианта, + НастройкиОтчета.КлючПредопределенногоВарианта); + Если НастройкиОтчета.События.ПередЗагрузкойНастроекВКомпоновщик Тогда ОтчетОбъект.ПередЗагрузкойНастроекВКомпоновщик( ЭтотОбъект, @@ -6855,14 +7018,22 @@ // Установка фиксированных отборов выполняется через компоновщик, т.к. в нем наиболее полная коллекция настроек. // В ПередЗагрузкой в параметрах могут отсутствовать те параметры, настройки которые не переопределялись. - Если НастройкиЗагружены И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда - ОтчетыСервер.УстановитьФиксированныеОтборы(ФормаПараметры.Отбор, ДоступныеНастройки.Настройки, НастройкиОтчета); + Если НастройкиЗагружены + И ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта + И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + + ОтчетыСервер.УстановитьФиксированныеОтборы(ФормаПараметры.Отбор, Отчет.КомпоновщикНастроек.Настройки, НастройкиОтчета); КонецЕсли; Если ФормаПараметры.Свойство("ФиксированныеНастройки") Тогда ФормаПараметры.ФиксированныеНастройки = Отчет.КомпоновщикНастроек.ФиксированныеНастройки; КонецЕсли; + ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); + Если НастройкиОтчета.События.ПослеЗагрузкиНастроекВКомпоновщик Тогда + ОтчетОбъект.ПослеЗагрузкиНастроекВКомпоновщик(Новый Структура); + КонецЕсли; + ОтчетыСервер.УстановитьДоступныеЗначения(ОтчетОбъект, ЭтотОбъект); ОтчетыСервер.ИнициализироватьПредопределенныеПараметрыВывода(НастройкиОтчета, ДоступныеНастройки.Настройки); @@ -7369,4 +7540,135 @@ // АПК:568-вкл +#Область ОпределениеДанныхВыбораЭлементаОтбора + +&НаКлиенте +Процедура ОпределитьДанныеВыбораЭлементаОтбораПоЗапросу(ИсходныйЗапрос, ДанныеВыбора, ДоступныеПоля, Запрос = Неопределено, Родитель = Неопределено, Индекс = 0) + + Если ДанныеВыбора = Неопределено Тогда + ДанныеВыбора = Новый СписокЗначений; + КонецЕсли; + + Если Запрос = Неопределено Тогда + Запрос = ИсходныйЗапрос; + КонецЕсли; + + ОписаниеЗапроса = СтрРазделить(Запрос, ".", Ложь); + + Если СтрЗаканчиваетсяНа(Запрос, ".") Тогда + ОписаниеЗапроса.Добавить(". "); + КонецЕсли; + + Пока Индекс <= ОписаниеЗапроса.ВГраница() Цикл + + ФрагментЗапроса = СокрЛП(ОписаниеЗапроса[Индекс]); + ДочерниеЭлементы = ?(Родитель = Неопределено, ДоступныеПоля.Элементы, Родитель.Элементы); + + Если Индекс = ОписаниеЗапроса.ВГраница() Тогда + + ЗаполнитьДанныеВыбораЭлементаОтбора(ИсходныйЗапрос, ДочерниеЭлементы, ДанныеВыбора); + + ИначеЕсли ДанныеВыбора.Количество() = 0 Тогда + + ПутьКДанным = ФрагментЗапроса; + + Если Родитель <> Неопределено Тогда + ПутьКДанным = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1.%2", Родитель.Поле, ФрагментЗапроса); + КонецЕсли; + + Поле = Новый ПолеКомпоновкиДанных(ПутьКДанным); + НайденноеПоле = ДоступныеПоля.НайтиПоле(Поле); + + Если НайденноеПоле = Неопределено Тогда + НайденноеПоле = ДоступноеПолеОтбораПоЗаголовку(ФрагментЗапроса, ДочерниеЭлементы); + КонецЕсли; + + ОписаниеЗапроса.Удалить(Индекс); + НовыйЗапрос = СтрСоединить(ОписаниеЗапроса, "."); + ОпределитьДанныеВыбораЭлементаОтбораПоЗапросу( + ИсходныйЗапрос, ДанныеВыбора, ДоступныеПоля, НовыйЗапрос, НайденноеПоле, Индекс); + + КонецЕсли; + + Индекс = Индекс + 1; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьДанныеВыбораЭлементаОтбора(ИсходныйЗапрос, ДочерниеЭлементы, ДанныеВыбора) + + Для Каждого Элемент Из ДочерниеЭлементы Цикл + + Если Не Элемент.Папка + И Не Элемент.Таблица + И СтрНачинаетсяС(ВРег(Элемент.Заголовок), ВРег(ИсходныйЗапрос)) Тогда + + ПредставлениеЭлемента = ПредставлениеЭлементаОтбора(Элемент, ИсходныйЗапрос); + ДанныеВыбора.Добавить(Элемент.Поле, ПредставлениеЭлемента); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Функция ПредставлениеЭлементаОтбора(ЭлементОтбора, ИсходныйЗапрос) + + НачалоЗапроса = СтрНайти(ВРег(ЭлементОтбора.Заголовок), ВРег(ИсходныйЗапрос)); + КонецЗапроса = НачалоЗапроса + СтрДлина(ИсходныйЗапрос); + ДлинаНайденногоФрагмента = ?(НачалоЗапроса = 0, 0, СтрДлина(ИсходныйЗапрос)); + + ФрагментДоЗапроса = Лев(ЭлементОтбора.Заголовок, НачалоЗапроса - 1); + ФрагментЗапроса = ФрагментЗапросаЭлементаОтбора(Сред(ЭлементОтбора.Заголовок, НачалоЗапроса, ДлинаНайденногоФрагмента)); + ФрагментПослеЗапроса = Сред(ЭлементОтбора.Заголовок, КонецЗапроса); + + Возврат Новый ФорматированнаяСтрока( + ФрагментДоЗапроса, + ФрагментЗапроса, + ФрагментПослеЗапроса); + +КонецФункции + +&НаКлиенте +Функция ФрагментЗапросаЭлементаОтбора(Запрос) + + ШаблонФрагментаЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%3", + "МоиВариантыОтчетовЦвет", + "ВажнаяНадписьШрифт", + Запрос); + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + ФрагментЗапроса = СтроковыеФункции.ФорматированнаяСтрока(ШаблонФрагментаЗапроса); +#Иначе + ФрагментЗапроса = СтроковыеФункцииКлиент.ФорматированнаяСтрока(ШаблонФрагментаЗапроса); +#КонецЕсли + + Возврат ФрагментЗапроса; + +КонецФункции + +&НаКлиенте +Функция ДоступноеПолеОтбораПоЗаголовку(ЗаголовокПоля, ДочерниеЭлементы) + + Для Каждого Элемент Из ДочерниеЭлементы Цикл + + Если Не Элемент.Папка + И Не Элемент.Таблица + И ВРег(Элемент.Заголовок) = ВРег(ЗаголовокПоля) Тогда + + Возврат Элемент; + КонецЕсли; + + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +#КонецОбласти + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonForms/ФормаОтчета/Form.form b/SSL/src/CommonForms/ФормаОтчета/Form.form index a1c9efb51..98bdb5dc7 100644 --- a/SSL/src/CommonForms/ФормаОтчета/Form.form +++ b/SSL/src/CommonForms/ФормаОтчета/Form.form @@ -160,7 +160,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar true true @@ -186,158 +186,20 @@ ГруппаНастройкиОтчета 104 - - ВсеНастройки - 458 - true - true - - true - - - ВсеНастройкиРасширеннаяПодсказка - 459 - Label - true - true - - Left - - - Form.Command.ВсеНастройки - Normal - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - ГруппаСохранениеВыборВариантаОтчета - 358 - - ГруппаСохранениеВариантаОтчета - 996 - - СохранитьВариант - 994 - true - true - - true - - - СохранитьВариантРасширеннаяПодсказка - 995 - Label - true - true - - Left - - - Form.Command.СохранитьВариант - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - - СохранитьВариантКак - 506 - - <key>ru</key> - <value>Сохранить как...</value> - - true - true - - true - - - СохранитьВариантКакРасширеннаяПодсказка - 507 - Label - true - true - - Left - - - Form.StandardCommand.SaveVariant - Normal - Picture - true - true - UserCmds - - CommonPicture.СохранитьКак - - Auto - InCommandBarAndInAdditionalSubmenu - - true - true - - true - - - <key>ru</key> - <value>Сохранение варианта отчета</value> - - - ГруппаСохранениеВариантаОтчетаРасширеннаяПодсказка - 997 - Label - true - true - - Left - - - - Compact - - - - ГруппаВариантыОтчета - 360 - true - true - - true - - - <key>ru</key> - <value>Варианты отчета</value> - - true - - ГруппаВариантыОтчетаРасширеннаяПодсказка - 361 - Label - true - true - - Left - - - - + ГруппаНастройкиИСохраненияВарианта + 1121 - ДругиеОтчеты - 508 + ВсеНастройки + 458 true true true - ДругиеОтчетыРасширеннаяПодсказка - 509 + ВсеНастройкиРасширеннаяПодсказка + 459 Label true true @@ -345,14 +207,187 @@ Left - Form.Command.ДругиеОтчеты + Form.Command.ВсеНастройки Normal - PictureAndText true true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar + + + ГруппаСохранениеВыборВариантаОтчета + 358 + + ГруппаСохранениеВариантаОтчета + 996 + + СохранитьВариант + 994 + true + true + + true + + + СохранитьВариантРасширеннаяПодсказка + 995 + Label + true + true + + Left + + + Form.Command.СохранитьВариант + Normal + Auto + true + true + UserCmds + Auto + InCommandBar + + + СохранитьВариантКак + 506 + + <key>ru</key> + <value>Сохранить как...</value> + + true + true + + true + + + СохранитьВариантКакРасширеннаяПодсказка + 507 + Label + true + true + + Left + + + Form.StandardCommand.SaveVariant + Normal + Picture + true + true + UserCmds + + CommonPicture.СохранитьКак + + Auto + InCommandBar + + true + true + + true + + + <key>ru</key> + <value>Сохранение варианта отчета</value> + + + ГруппаСохранениеВариантаОтчетаРасширеннаяПодсказка + 997 + Label + true + true + + Left + + + + Compact + + + + ГруппаВариантыОтчета + 360 + true + true + + true + + + <key>ru</key> + <value>Варианты отчета</value> + + true + + ГруппаВариантыОтчетаРасширеннаяПодсказка + 361 + Label + true + true + + Left + + + + + + ДругиеОтчеты + 508 + true + true + + true + + + ДругиеОтчетыРасширеннаяПодсказка + 509 + Label + true + true + + Left + + + Form.Command.ДругиеОтчеты + Normal + PictureAndText + true + true + UserCmds + Auto + InCommandBar + + true + true + + true + + + <key>ru</key> + <value>Сохранение (выбор) варианта отчета</value> + + + ru + Выбрать другой вариант отчета или сохранить новый + + + ГруппаСохранениеВыборВариантаОтчетаРасширеннаяПодсказка + 359 + Label + true + true + + Left + + + Popup + + + CommonPicture.ВыбратьВариантОтчета + + Picture + Normal + true true @@ -361,15 +396,11 @@ <key>ru</key> - <value>Сохранение (выбор) варианта отчета</value> + <value>Настройки и сохранения варианта</value> - - ru - Выбрать другой вариант отчета или сохранить новый - - ГруппаСохранениеВыборВариантаОтчетаРасширеннаяПодсказка - 359 + ГруппаНастройкиИСохраненияВариантаРасширеннаяПодсказка + 1122 Label true true @@ -377,13 +408,8 @@ Left - Popup - - - CommonPicture.ВыбратьВариантОтчета - - Picture - Normal + + Compact true @@ -438,7 +464,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar НайтиСледующий @@ -465,7 +491,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar true true @@ -518,7 +544,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar СвернутьВсеГруппы @@ -545,7 +571,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar ГруппаУровниГруппировок @@ -575,7 +601,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar true true @@ -681,7 +707,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar ПредварительныйПросмотр @@ -708,7 +734,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar true true @@ -733,47 +759,20 @@ Compact - - СохранитьОтчет - 1101 - true - true - - true - - - СохранитьОтчетРасширеннаяПодсказка - 1102 - Label - true - true - - Left - - - Form.Command.СохранитьОтчет - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - ГруппаОтправить - 63 + ГруппаСохранениеИРассылкаВарианта + 1123 - ОтправитьПоПочте - 97 + СохранитьОтчет + 1101 true true true - ОтправитьПоПочтеРасширеннаяПодсказка - 128 + СохранитьОтчетРасширеннаяПодсказка + 1102 Label true true @@ -781,14 +780,76 @@ Left - Form.Command.ОтправитьПоПочте + Form.Command.СохранитьОтчет Normal - Picture + Auto true true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar + + + ГруппаОтправить + 63 + + ОтправитьПоПочте + 97 + true + true + + true + + + ОтправитьПоПочтеРасширеннаяПодсказка + 128 + Label + true + true + + Left + + + Form.Command.ОтправитьПоПочте + Normal + Picture + true + true + UserCmds + Auto + InCommandBar + + true + true + + true + + + <key>ru</key> + <value>Отправить</value> + + + ru + Отправить отчет по электронной почте + + + ГруппаОтправитьРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + Popup + + + CommonPicture.ЭлектронноеПисьмо + + Picture + Normal + true true @@ -797,15 +858,11 @@ <key>ru</key> - <value>Отправить</value> + <value>Сохранение и рассылка варианта</value> - - ru - Отправить отчет по электронной почте - - ГруппаОтправитьРасширеннаяПодсказка - 127 + ГруппаСохранениеИРассылкаВариантаРасширеннаяПодсказка + 1124 Label true true @@ -813,13 +870,8 @@ Left - Popup - - - CommonPicture.ЭлектронноеПисьмо - - Picture - Normal + + Compact true @@ -843,6 +895,121 @@ + + ГруппаПереходМеждуИзменениямиНастроек + 1107 + + ГруппаОтменитьИзменениеНастроек + 1109 + + УстановитьСтандартныеНастройки + 1113 + true + true + + true + + + УстановитьСтандартныеНастройкиРасширеннаяПодсказка + 1114 + Label + true + true + + Left + + + Form.Command.НастройкиПоУмолчанию + Normal + Auto + true + true + UserCmds + Auto + InCommandBar + + true + true + + true + + + <key>ru</key> + <value>Отменить изменение настроек</value> + + + ГруппаОтменитьИзменениеНастроекРасширеннаяПодсказка + 1110 + Label + true + true + + Left + + + Popup + + + CommonPicture.ОтменитьДействие + + Picture + Normal + + + + ГруппаПовторитьИзменениеНастроек + 1111 + true + true + + true + + + <key>ru</key> + <value>Повторить изменение настроек</value> + + + ГруппаПовторитьИзменениеНастроекРасширеннаяПодсказка + 1112 + Label + true + true + + Left + + + Popup + + + CommonPicture.ПовторитьДействие + + Picture + Normal + + + true + true + + true + + + <key>ru</key> + <value>Переход между изменениями настроек</value> + + + ГруппаПереходМеждуИзменениямиНастроекРасширеннаяПодсказка + 1108 + Label + true + true + + Left + + + + Compact + + true true @@ -1023,7 +1190,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar РассчитатьКоличество @@ -1054,7 +1221,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar РассчитатьСреднее @@ -1085,7 +1252,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar РассчитатьМинимум @@ -1116,7 +1283,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar РассчитатьМаксимум @@ -1147,7 +1314,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar ВсеПоказатели @@ -1181,7 +1348,7 @@ true UserCmds Auto - InCommandBarAndInAdditionalSubmenu + InCommandBar true true @@ -2964,6 +3131,32 @@ КонтекстноеМенюОбластиЗаголовкаВставить 838 + + КонтекстноеМенюОбластиЗаголовкаВставитьПолеСлева + 1117 + true + + true + + + КонтекстноеМенюОбластиЗаголовкаВставитьПолеСлеваРасширеннаяПодсказка + 1118 + Label + true + true + + Left + + + Form.Command.ВставитьПолеСлева + Supplementary + Auto + true + true + UserCmds + Auto + None + КонтекстноеМенюОбластиЗаголовкаВставитьПолеСправа 840 @@ -2990,6 +3183,32 @@ UserCmds Auto + + КонтекстноеМенюОбластиЗаголовкаВставитьГруппировкуВыше + 1119 + true + + true + + + КонтекстноеМенюОбластиЗаголовкаВставитьГруппировкуВышеРасширеннаяПодсказка + 1120 + Label + true + true + + Left + + + Form.Command.ВставитьГруппировкуВыше + Supplementary + Auto + true + true + UserCmds + Auto + None + КонтекстноеМенюОбластиЗаголовкаВставитьГруппировкуНиже 842 @@ -4900,6 +5119,31 @@ Normal + + КонтекстноеМенюОбластиДанныхРасшифроватьПоДетальнымЗаписям + 1105 + true + + true + + + КонтекстноеМенюОбластиДанныхРасшифроватьПоДетальнымЗаписямРасширеннаяПодсказка + 1106 + Label + true + true + + Left + + + Form.Command.РасшифроватьПоДетальнымЗаписям + Normal + Auto + true + true + UserCmds + Auto + КонтекстноеМенюОбластиДанныхРасшифровать 978 @@ -5743,6 +5987,10 @@ DetailProcessing ОтчетТабличныйДокументОбработкаРасшифровки + + BeforeWrite + ОтчетТабличныйДокументПередЗаписью + 59 true 15 @@ -7498,6 +7746,101 @@ true + + СтекНастроек + 19 + + ValueTable + + + true + + + true + + + Порядок + 1 + + Number + + 2 + true + + + + true + + + true + + + + Пометка + 2 + + Boolean + + + true + + + true + + + + Настройки + 3 + + + true + + + true + + + + Действие + 4 + + String + + + + true + + + true + + + + ПредставлениеДействия + 5 + + String + + + + true + + + true + + + + + ОтчетСформирован + 48 + + Boolean + + + true + + + true + + ВсеНастройки @@ -8480,7 +8823,7 @@ <common>true</common> </use> <picture xsi:type="core:PictureRef"> - <picture>CommonPicture.Закрепить</picture> + <picture>CommonPicture.Отборы</picture> </picture> <action xsi:type="form:FormCommandHandlerContainer"> <handler> @@ -8669,9 +9012,9 @@ <name>СохранитьОтчет</name> <title> <key>ru</key> - <value>Сохранить...</value> + <value>Сохранить</value> - 56 + 3 ru Сохранить результат отчета в файл @@ -8692,6 +9035,63 @@ Auto Auto + + РасшифроватьПоДетальнымЗаписям + + <key>ru</key> + <value>Расшифровать по детальным записям</value> + + 56 + + true + + Auto + Auto + + + ВставитьПолеСлева + + <key>ru</key> + <value>Вставить поле слева</value> + + 57 + + true + + + CommonPicture.ВставитьКолонкуСлева + + + + ВставитьПолеСлева + + + TextPicture + Auto + Auto + + + ВставитьГруппировкуВыше + + <key>ru</key> + <value>Вставить группировку выше</value> + + 59 + + true + + + CommonPicture.ВставитьГруппировкуВыше + + + + ВставитьГруппировкуВыше + + + TextPicture + Auto + Auto + Ссылка diff --git a/SSL/src/CommonForms/ФормаОтчета/Module.bsl b/SSL/src/CommonForms/ФормаОтчета/Module.bsl index 28473480c..c9b2a3782 100644 --- a/SSL/src/CommonForms/ФормаОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаОтчета/Module.bsl @@ -20,6 +20,8 @@ Перем ФормированиеПриОткрытии; &НаКлиенте Перем ИнтервалОжидания; +&НаКлиенте +Перем РезультатНастройки; #КонецОбласти @@ -39,17 +41,9 @@ ОтчетМетаданные = ОтчетОбъект.Метаданные(); ОтчетПолноеИмя = ОтчетМетаданные.ПолноеИмя(); - ПредопределенныеВарианты = Новый СписокЗначений; - Если ОтчетОбъект.СхемаКомпоновкиДанных <> Неопределено Тогда - Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл - ПредопределенныеВарианты.Добавить(Вариант.Имя, Вариант.Представление); - КонецЦикла; - КонецЕсли; - КонтекстВарианта = КонтекстВариантаОтчета(); УстановитьКлючНазначенияИспользования(); СохранитьПараметрыФормы(); - УстановитьКлючТекущегоВарианта(ОтчетПолноеИмя, ОтчетОбъект); // Определение настроек отчета. ТипОтчетаСтрокой = ВариантыОтчетов.ТипОтчетаСтрокой(Параметры.Отчет); @@ -58,12 +52,13 @@ Параметры.Отчет = Информация.Отчет; КонецЕсли; - НастройкиОтчета = НастройкиОтчета(ОтчетОбъект, ОтчетМетаданные, ОтчетПолноеИмя, ПредопределенныеВарианты); + УстановитьКлючТекущегоВарианта(ОтчетПолноеИмя, ОтчетОбъект); + ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта; + + НастройкиОтчета = НастройкиОтчета(ОтчетОбъект); ОбновитьИнформациюОВариантеОтчета(); - ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(НастройкиОтчета, ВариантыОтчетов.ПараметрыКлиента()); - НастройкиОтчета.Вставить("ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек", Истина); Если Параметры.Свойство("СформироватьПриОткрытии") И Параметры.СформироватьПриОткрытии = Истина Тогда Параметры.СформироватьПриОткрытии = Ложь; Элементы.ФормироватьСразу.Пометка = Истина; @@ -75,7 +70,7 @@ КонецЕсли; // Параметры по умолчанию. - Если Не ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ВыводитьСуммуВыделенныхЯчеек", Истина) Тогда + Если Не НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда Элементы.ГруппаПоказатель.Видимость = Ложь; Элементы.ОбластьПоказателей.Видимость = Ложь; Элементы.КомандыВидовПоказателейЕще.Видимость = Ложь; @@ -153,7 +148,6 @@ Элементы.ПраваПользователей.Видимость = Пользователи.ЭтоПолноправныйПользователь() И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом"); - КонецПроцедуры &НаКлиенте @@ -274,8 +268,21 @@ Возврат; КонецЕсли; + ДополнительныеСвойства = НовыеНастройкиКД.ДополнительныеСвойства; + + Если ВариантыПанелиКлючТекущегоВарианта <> КлючТекущегоВарианта Тогда + ДополнительныеСвойства.Удалить("КлючВарианта"); + ДополнительныеСвойства.Удалить("КлючПредопределенногоВарианта"); + ДополнительныеСвойства.Удалить("КонтекстВарианта"); + ДополнительныеСвойства.Удалить("ФормаПараметрыОтбор"); + ДополнительныеСвойства.Удалить("ВариантНаименование"); + КонецЕсли; + Если РежимРасшифровки Тогда - ДополнительныеСвойства = НовыеНастройкиКД.ДополнительныеСвойства; + Если ТипЗнч(Параметры.Расшифровка) = Тип("ОписаниеОбработкиРасшифровкиКомпоновкиДанных") Тогда + ВариантыОтчетовСлужебный.ПодготовитьНастройкиОтчетаКРасшифровкеПоДетальнымЗаписям( + ЭтотОбъект, НовыеНастройкиКД, Параметры.Расшифровка.ПрименяемыеНастройки); + КонецЕсли; Если ЗначениеЗаполнено(КлючТекущегоВарианта) Тогда ДополнительныеСвойства.Вставить("КлючВарианта", КлючТекущегоВарианта); @@ -296,7 +303,7 @@ Исключение НовыеНастройкиXML = Неопределено; КонецПопытки; - НастройкиОтчета.Вставить("НовыеНастройкиXML", НовыеНастройкиXML); + НастройкиОтчета.НовыеНастройкиXML = НовыеНастройкиXML; КонецЕсли; КонецПроцедуры @@ -328,7 +335,9 @@ // Установка фиксированных отборов выполняется через компоновщик, т.к. в нем наиболее полная коллекция настроек. // В ПередЗагрузкой в параметрах могут отсутствовать те параметры, настройки которых не переопределялись. - Если ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + Если ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта + И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + ОтчетыСервер.УстановитьФиксированныеОтборы(ФормаПараметры.Отбор, Отчет.КомпоновщикНастроек.Настройки, НастройкиОтчета); КонецЕсли; @@ -352,7 +361,7 @@ Исключение НовыеПользовательскиеНастройкиXML = Неопределено; КонецПопытки; - НастройкиОтчета.Вставить("НовыеПользовательскиеНастройкиXML", НовыеПользовательскиеНастройкиXML); + НастройкиОтчета.НовыеПользовательскиеНастройкиXML = НовыеПользовательскиеНастройкиXML; КонецЕсли; КонецПроцедуры @@ -379,7 +388,9 @@ СтандартнаяОбработка = Ложь; - ВосстановитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки); + Если Не ВариантМодифицирован Тогда + ВосстановитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки); + КонецЕсли; ПараметрыОбновления = Новый Структура("ИмяСобытия", "ПриОбновленииСоставаПользовательскихНастроекНаСервере"); ОбновитьЭлементыФормыНастроекНаСервере(ПараметрыОбновления); @@ -445,6 +456,7 @@ Если Не ВариантыОтчетовСлужебныйКлиентСервер.РежимВариантаОтчета(КлючТекущегоВарианта) Тогда Возврат; КонецЕсли; + НовыеНастройкиКД = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); ОтчетыКлиентСервер.ЗагрузитьНастройки(Отчет.КомпоновщикНастроек, НовыеНастройкиКД); НастройкиКД.ДополнительныеСвойства.Вставить("Адрес", ПоместитьВоВременноеХранилище(НовыеНастройкиКД)); @@ -452,6 +464,11 @@ ВариантыПанелиКлючТекущегоВарианта = ПустойКлючВарианта(); ОбновитьИнформациюОВариантеОтчета(); УстановитьВидимостьДоступность(Истина); + + Если ОбщегоНазначения.ЭтоВебКлиент() Тогда + КлючХраненияЗначения = КлючХраненияЗначенияВРамкахВариантаОтчета(НастройкиОтчета.ПолноеИмя, КлючТекущегоВарианта); + СохранитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки); + КонецЕсли; КонецПроцедуры &НаСервере @@ -679,6 +696,14 @@ КонецПроцедуры +&НаКлиенте +Процедура ОтчетТабличныйДокументПередЗаписью(Элемент, Копирование, Отказ) + + Отказ = Истина; + СохранитьОтчет(Команды.Найти(Элементы.СохранитьОтчет.ИмяКоманды)); + +КонецПроцедуры + #КонецОбласти #КонецОбласти @@ -698,8 +723,17 @@ Возврат; КонецЕсли; - НастройкиОтчета.Вставить("РезультатНастройки", Результат); - НастройкиОтчета.Вставить("ОтчетСформирован", Результат.Переформировать); + Если Результат.Свойство("ИмяСобытия") + И Результат.ИмяСобытия = ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияФормыНастроек() + И Результат.ВариантМодифицирован Тогда + + ВариантыОтчетовСлужебныйКлиент.ДобавитьНастройкиВСтек( + ЭтотОбъект, Результат.КомпоновщикНастроекКД.Настройки, Результат.ИмяСобытия); + + КонецЕсли; + + РезультатНастройки = Результат; + ОтчетСформирован = Результат.Переформировать; ПодключитьОбработчикОжидания("ОбновитьЭлементыФормыНастроекОтложенно", 0.1, Истина); КонецПроцедуры @@ -717,10 +751,12 @@ ПараметрыЗаполнения.Вставить("СброситьПользовательскиеНастройки", Истина); ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина); - НастройкиОтчета.Вставить("ОтчетСформирован", Ложь); + УточнитьПризнакАвтоформированияОтчета(ПараметрыЗаполнения); + + ОтчетСформирован = Ложь; СброситьВыбранныйУровеньГруппировок(); - + ВариантыОтчетовСлужебныйКлиент.СброситьПометкиСтекаНастроек(СтекНастроек); ОбновитьЭлементыФормыНастроек(ПараметрыЗаполнения); КонецПроцедуры @@ -917,6 +953,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ВставитьПолеСлева(Команда) + + ВариантыОтчетовСлужебныйКлиент.ВставитьПолеСлева(ЭтотОбъект, Команда); + +КонецПроцедуры + &НаКлиенте Процедура ВставитьПолеСправа(Команда) @@ -924,6 +967,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ВставитьГруппировкуВыше(Команда) + + ВариантыОтчетовСлужебныйКлиент.ВставитьГруппировкуВыше(ЭтотОбъект, Команда); + +КонецПроцедуры + &НаКлиенте Процедура ВставитьГруппировкуНиже(Команда) @@ -1124,7 +1174,7 @@ КонецЕсли; ВариантФормы = Найденные[0]; - НастройкиОтчета.Удалить("ФормаНастроекРасширенныйРежим"); + НастройкиОтчета.ФормаНастроекРасширенныйРежим = 0; ЗагрузитьВариант(ВариантФормы.КлючВарианта); @@ -1147,6 +1197,34 @@ КонецПроцедуры +// Параметры: +// Команда - КомандаФормы +// +&НаКлиенте +Процедура Подключаемый_ПерейтиМеждуИзменениямиНастроек(Команда) + + ПредставлениеПорядка = СтрЗаменить(Команда.Имя, ПрефиксИмениКомандыПереходаМеждуИзменениямиНастроек(), ""); + ОписаниеЧисла = Новый ОписаниеТипов("Число"); + Порядок = ОписаниеЧисла.ПривестиЗначение(ПредставлениеПорядка); + + НайденныеЗаписи = СтекНастроек.НайтиСтроки(Новый Структура("Порядок", Порядок)); + ТекущиеНастройкиСтека = НайденныеЗаписи[0]; + + Результат = ВариантыОтчетовСлужебныйКлиент.СтандартныйРезультатНастройкиИзКонтекстногоМеню( + Отчет.КомпоновщикНастроек, ТекущиеНастройкиСтека.Действие, УникальныйИдентификатор); + + Результат.Вставить("НастройкиКД", ТекущиеНастройкиСтека.Настройки); + Результат.Удалить("КомпоновщикНастроекКД"); + + УточнитьПризнакАвтоформированияОтчета(Результат); + + ВариантыОтчетовСлужебныйКлиент.СброситьПометкиСтекаНастроек(СтекНастроек); + ТекущиеНастройкиСтека.Пометка = Истина; + + ВсеНастройкиЗавершение(Результат, Неопределено); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -1213,8 +1291,7 @@ &НаКлиенте Процедура ОбновитьЭлементыФормыНастроекОтложенно() - ОбновитьЭлементыФормыНастроек(НастройкиОтчета.РезультатНастройки); - НастройкиОтчета.Удалить("РезультатНастройки"); + ОбновитьЭлементыФормыНастроек(РезультатНастройки); КонецПроцедуры @@ -1241,20 +1318,89 @@ &НаКлиенте Процедура Сформировать() - ВыполнятьЗамеры = НастройкиОтчета.ВыполнятьЗамеры И ЗначениеЗаполнено(НастройкиОтчета.КлючЗамеров); - Если ВыполнятьЗамеры Тогда - Комментарий = НастройкиОтчета.ПрефиксЗамеров + "; " + НСтр("ru = 'Непосредственно:'") + " " + Строка(Непосредственно); - МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент"); - ИдентификаторЗамера = МодульОценкаПроизводительностиКлиент.ЗамерВремени( - НастройкиОтчета.КлючЗамеров + ".Формирование", - Ложь, Ложь); - МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(ИдентификаторЗамера, Комментарий); - КонецЕсли; + НачатьЗамер(); ПараметрыФормирования = Новый Структура("ВремяНачалаФормирования", ТекущаяУниверсальнаяДатаВМиллисекундах()); - Результат = РезультатФормированияОтчета(ФормированиеПриОткрытии, НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный); - Если Результат = Неопределено Тогда + Результат = РезультатФормированияОтчета(ФормированиеПриОткрытии, + НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный, Ложь); + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("Результат", Результат); + Контекст.Вставить("ПараметрыФормирования", ПараметрыФормирования); + Контекст.Вставить("НастройкаОтказаОтПредупреждения", Неопределено); + + Если Результат.Свойство("ИмяПараметраХраненияОтказаОтПредупреждения") Тогда + Предупредить = Истина; + ПредлагатьБольшеНеПредупреждать = Истина; + + Если ЗначениеЗаполнено(Результат.ИмяПараметраХраненияОтказаОтПредупреждения) Тогда + ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных( + Результат.ИмяПараметраХраненияОтказаОтПредупреждения); + Для Каждого Настройка Из Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл + Если Настройка.Параметр = ПараметрКомпоновки Тогда + Контекст.НастройкаОтказаОтПредупреждения = Настройка; + Прервать; + КонецЕсли; + КонецЦикла; + Если Контекст.НастройкаОтказаОтПредупреждения = Неопределено Тогда + ПредлагатьБольшеНеПредупреждать = Ложь; + ИначеЕсли Контекст.НастройкаОтказаОтПредупреждения.Значение = Истина Тогда + Предупредить = Ложь; + КонецЕсли; + Иначе + ПредлагатьБольшеНеПредупреждать = Ложь; + КонецЕсли; + + Если Предупредить Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("Продолжить", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'")); + ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю(); + ПараметрыВопроса.КнопкаПоУмолчанию = "Отмена"; + ПараметрыВопроса.Заголовок = Заголовок; + ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = ПредлагатьБольшеНеПредупреждать; + СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю( + Новый ОписаниеОповещения("СформироватьПослеПредупреждения", ЭтотОбъект, Контекст), + Результат.ТекстПредупреждения, Кнопки, ПараметрыВопроса); + Возврат; + КонецЕсли; + КонецЕсли; + + СформироватьПослеПредупреждения(Null, Контекст); + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьПослеПредупреждения(Ответ, Контекст) Экспорт + + ПараметрыФормирования = Контекст.ПараметрыФормирования; + + Если Ответ = Null Тогда + Результат = Контекст.Результат; + + ИначеЕсли ТипЗнч(Ответ) = Тип("Структура") Тогда + Если Ответ.БольшеНеЗадаватьЭтотВопрос + И Контекст.НастройкаОтказаОтПредупреждения <> Неопределено Тогда + Контекст.НастройкаОтказаОтПредупреждения.Значение = Истина; + КонецЕсли; + Если Ответ.Значение = "Продолжить" Тогда + НачатьЗамер(); + ПараметрыФормирования.ВремяНачалаФормирования = ТекущаяУниверсальнаяДатаВМиллисекундах(); + Результат = РезультатФормированияОтчета(ФормированиеПриОткрытии, + НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный, Истина); + Иначе + Возврат; + КонецЕсли; + Иначе + Возврат; + КонецЕсли; + + Если Результат = Неопределено Тогда Возврат; КонецЕсли; @@ -1275,6 +1421,21 @@ ДлительныеОперацииКлиент.ОжидатьЗавершение(Результат, Обработчик, ПараметрыОжидания); КонецПроцедуры +&НаКлиенте +Процедура НачатьЗамер() + + ВыполнятьЗамеры = НастройкиОтчета.ВыполнятьЗамеры И ЗначениеЗаполнено(НастройкиОтчета.КлючЗамеров); + Если ВыполнятьЗамеры Тогда + Комментарий = НастройкиОтчета.ПрефиксЗамеров + "; " + НСтр("ru = 'Непосредственно:'") + " " + Строка(Непосредственно); + МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент"); + ИдентификаторЗамера = МодульОценкаПроизводительностиКлиент.ЗамерВремени( + НастройкиОтчета.КлючЗамеров + ".Формирование", + Ложь, Ложь); + МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(ИдентификаторЗамера, Комментарий); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПослеФормирования(Результат, ПараметрыФормирования) Экспорт Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда @@ -1330,8 +1491,6 @@ ИнтеграцияПодсистемБСПКлиент.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован); - НастройкиОтчета.Вставить("ОтчетСформирован", ОтчетСформирован); - КонецПроцедуры &НаКлиенте @@ -1342,7 +1501,7 @@ КонецФункции &НаСервере -Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно) +Функция РезультатФормированияОтчета(Знач ФормированиеПриОткрытии, Непосредственно, ПослеПредупреждения) Если ЗначениеЗаполнено(ФоновоеЗаданиеИдентификатор) Тогда ДлительныеОперации.ОтменитьВыполнениеЗадания(ФоновоеЗаданиеИдентификатор); @@ -1361,6 +1520,17 @@ Возврат Неопределено; КонецЕсли; + Если НастройкиОтчета.События.ПередФормированиемОтчета И Не ПослеПредупреждения Тогда + ПараметрыВопроса = Новый Структура; + ПараметрыВопроса.Вставить("ТекстПредупреждения", ""); + ПараметрыВопроса.Вставить("ИмяПараметраХраненияОтказаОтПредупреждения", ""); + ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); + ОтчетОбъект.ПередФормированиемОтчета(ЭтотОбъект, ПараметрыВопроса); + Если ЗначениеЗаполнено(ПараметрыВопроса.ТекстПредупреждения) Тогда + Возврат ПараметрыВопроса; + КонецЕсли; + КонецЕсли; + ИмяОтчета = СтрРазделить(НастройкиОтчета.ПолноеИмя, ".")[1]; ПараметрыФормирования = ПараметрыФормированияОтчета(ИмяОтчета, Непосредственно); ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); @@ -1434,7 +1604,7 @@ КомментарийКлючевойОперации = Новый Соответствие; КомментарийКлючевойОперации.Вставить("ИмяОтчета", ИмяОтчета); - КомментарийКлючевойОперации.Вставить("ИмяИсходногоВарианта", НастройкиОтчета.ИмяИсходногоВарианта); + КомментарийКлючевойОперации.Вставить("КлючПредопределенногоВарианта", НастройкиОтчета.КлючПредопределенногоВарианта); КомментарийКлючевойОперации.Вставить("Внешний", Число(НастройкиОтчета.Внешний)); КомментарийКлючевойОперации.Вставить("Пользовательский", Число(НастройкиОтчета.Пользовательский)); КомментарийКлючевойОперации.Вставить("Расшифровка", Число(РежимРасшифровки)); @@ -1579,8 +1749,13 @@ Обработчик = Новый ОписаниеОповещения("ЗавершитьВыборИзСписка", ЭтотОбъект, ПараметрыОбработчика); + Если ОтчетыКлиент.ВыборПереопределен(ЭтотОбъект, Обработчик, Сведения.Описание, + Элемент.ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора) Тогда + Возврат; + КонецЕсли; + Если ОтчетыКлиент.ЭтоВыборОбъектовМетаданных(Элемент.ДоступныеТипы, ОтмеченныеЗначения, Обработчик) - Или ОтчетыКлиент.ЭтоВыборПользователей(Элемент.ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик) Тогда + Или ОтчетыКлиент.ЭтоВыборПользователей(ЭтотОбъект, Элемент, Элемент.ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик) Тогда Возврат; КонецЕсли; @@ -1612,7 +1787,7 @@ ОтчетыКлиентСервер.ДополнитьСписок(ЗначенияДляВыбора, ЗначениеОтбора); КонецЕсли; - ОтчетыКлиентСервер.ОбновитьПредставленияСписка(ЗначенияДляВыбора, ДоступныеЗначения); + ОтчетыКлиент.ОбновитьПредставленияСписка(ЗначенияДляВыбора, ДоступныеЗначения); Возврат ЗначенияДляВыбора; КонецФункции @@ -1742,12 +1917,12 @@ ЭлементыМеню = Родитель.ПодчиненныеЭлементы; // ЭлементыФормы - Для Каждого Элемент Из ЭлементыМеню Цикл + Для Каждого Элемент Из ЭлементыМеню Цикл - Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Тогда - МенюВидовПоказателей(Элемент, Меню); - Иначе + Если ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда Меню.Добавить(Элемент.Имя, Элемент.Заголовок, ОсновнойПоказатель = Элемент.Имя); + Иначе + МенюВидовПоказателей(Элемент, Меню); КонецЕсли; КонецЦикла; @@ -1793,8 +1968,11 @@ &НаКлиенте Процедура РассчитатьПоказатели(ТекущаяКоманда = "") - Если Не ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ВыводитьСуммуВыделенныхЯчеек", Истина) Тогда + Если Не НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда + + СохраняемыеВНастройкахДанныеМодифицированы = Истина; Возврат; + КонецЕсли; Показатель = ""; @@ -1823,7 +2001,7 @@ Если РасширенныйРежим = Истина Тогда - НастройкиОтчета.Вставить("ФормаНастроекРасширенныйРежим", 1); + НастройкиОтчета.ФормаНастроекРасширенныйРежим = 1; ПараметрыФормы.Вставить("ИмяСтраницы", "СтраницаОтборы"); ПараметрыФормы.Вставить("СброситьПользовательскиеНастройки", Истина); @@ -2276,7 +2454,7 @@ Условие = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "ВЫРАЗИТЬ(%1 КАК СТРОКА(150)) ПОДОБНО %2", Поле.Имя, - """%" + ПараметрыПоиска.СтрокаПоискаНормализованная + "%"""); + """%" + ПараметрыПоиска.СтрокаПоискаНормализованная + "%""");//@query-part ИначеЕсли ТипРеквизита.СодержитТип(Тип("Число")) И ПараметрыПоиска.ЧислоПоиска <> Неопределено Тогда @@ -3320,6 +3498,198 @@ КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Функция НеопределенныйУровеньГруппировок() + Возврат 999; +КонецФункции + +#КонецОбласти + +#Область ВыводЗаголовковНастроек + +&НаСервереБезКонтекста +Процедура СохранитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки) + + Если РежимРасшифровки Тогда + Возврат; + КонецЕсли; + + ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить( + КлючХраненияЗначения, "ВыводитьЗаголовкиНастроек", ВыводитьЗаголовкиНастроек); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ВосстановитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки) + + Если РежимРасшифровки Тогда + Возврат; + КонецЕсли; + + СохраненноеЗначение = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить( + КлючХраненияЗначения, "ВыводитьЗаголовкиНастроек"); + + ВыводитьЗаголовкиНастроек = СохраненноеЗначение = Неопределено Или СохраненноеЗначение = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область СохранениеРезультатаОтчета + +&НаКлиенте +Процедура ПослеУстановкиРасширенияРаботыСФайлами(РасширениеПодключено, ДополнительныеПараметры) Экспорт + + Контекст = Новый Структура; + Контекст.Вставить("ИндексФорматовСохраненияОтчета", Новый Соответствие); + + Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + Диалог.Фильтр = ДоступныеФорматыСохраненияОтчета(Контекст.ИндексФорматовСохраненияОтчета); + Диалог.МножественныйВыбор = Ложь; + Диалог.Заголовок = НСтр("ru = 'Сохранение результата отчета'"); + + Обработчик = Новый ОписаниеОповещения("ПослеВыбораИмениФайла", ЭтотОбъект, Контекст); + ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(Обработчик, Диалог); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыбораИмениФайла(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) = Тип("Массив") + И Результат.Количество() > 0 Тогда + + ПолноеИмяФайлаОтчета = Результат[0]; + + ИначеЕсли ТипЗнч(Результат) = Тип("Строка") Тогда + + ПолноеИмяФайлаОтчета = Результат; + Иначе + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПослеСохраненияРезультатаОтчета", ЭтотОбъект, ПолноеИмяФайлаОтчета); + ФорматыСохранения = ФорматыСохраненияОтчета(ПолноеИмяФайлаОтчета, + Контекст.ИндексФорматовСохраненияОтчета); + + СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета + + РезультатОтчета = РезультатОтчетаДляСохранения(ОтчетТабличныйДокумент, СвойстваРезультата.Заголовки); + РезультатОтчета.НачатьЗапись(Обработчик, ПолноеИмяФайлаОтчета, ФорматыСохранения); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеСохраненияРезультатаОтчета(Результат, ПолноеИмяФайлаОтчета) Экспорт + + Если Результат <> Истина Тогда + Возврат; + КонецЕсли; + + Обработчик = Новый ОписаниеОповещения("ПриВыбореИмениФайлаОтчета", ЭтотОбъект, ПолноеИмяФайлаОтчета); + ПоказатьОповещениеПользователя(НСтр("ru = 'Отчет сохранен в файл'"), Обработчик, ПолноеИмяФайлаОтчета); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриВыбореИмениФайлаОтчета(ПолноеИмяФайлаОтчета) Экспорт + + ФайловаяСистемаКлиент.ОткрытьФайл(ПолноеИмяФайлаОтчета); + +КонецПроцедуры + +&НаКлиенте +Функция ФорматыСохраненияОтчета(Знач ПолноеИмяФайлаОтчета, ИндексФорматовСохраненияОтчета) + + ОписаниеПолногоИмениФайла = СтрРазделить(ПолноеИмяФайлаОтчета, ПолучитьРазделительПути()); + ИмяФайлаОтчета = ОписаниеПолногоИмениФайла[ОписаниеПолногоИмениФайла.ВГраница()]; + + ОписаниеИмениФайла = СтрРазделить(ИмяФайлаОтчета, "."); + РасширениеФайлаОтчета = ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()]; + + Возврат ИндексФорматовСохраненияОтчета[РасширениеФайлаОтчета]; + +КонецФункции + +&НаСервереБезКонтекста +Функция ДоступныеФорматыСохраненияОтчета(ИндексФорматовСохраненияОтчета) + + ДоступныеФорматы = Новый Массив; + + ФорматыСохранения = СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента(); + + ФорматСохраненияTXT = ФорматыСохранения.Найти(ТипФайлаТабличногоДокумента.TXT, "ТипФайлаТабличногоДокумента"); + ФорматСохраненияANSITXT = ФорматыСохранения.Найти(ТипФайлаТабличногоДокумента.ANSITXT, "ТипФайлаТабличногоДокумента"); + + Если ФорматСохраненияTXT <> Неопределено + И ФорматСохраненияANSITXT <> Неопределено Тогда + + ФорматыСохранения.Удалить(ФорматСохраненияANSITXT); + КонецЕсли; + + ТекущийФорматСохранения = Новый Массив; + + Для Каждого ФорматСохранения Из ФорматыСохранения Цикл + + РасширениеФорматаСохранения = "*." + ФорматСохранения.Расширение; + + ПредставлениеФорматаСохранения = СтрЗаменить( + ФорматСохранения.Представление, + "." + ФорматСохранения.Расширение, + РасширениеФорматаСохранения); + + ТекущийФорматСохранения.Добавить(ПредставлениеФорматаСохранения); + ТекущийФорматСохранения.Добавить(РасширениеФорматаСохранения); + + ДоступныеФорматы.Добавить(СтрСоединить(ТекущийФорматСохранения, "|")); + + ТекущийФорматСохранения.Очистить(); + + ИндексФорматовСохраненияОтчета.Вставить(ФорматСохранения.Расширение, + ФорматСохранения.ТипФайлаТабличногоДокумента); + + КонецЦикла; + + Возврат СтрСоединить(ДоступныеФорматы, "|"); + +КонецФункции + +&НаСервереБезКонтекста +Функция РезультатОтчетаДляСохранения(ОтчетТабличныйДокумент, Заголовки) + + РезультатОтчета = СкопироватьТабличныйДокумент(ОтчетТабличныйДокумент); + + Для Каждого ИндексЗаголовка Из Заголовки Цикл + + СвойстваЗаголовка = ИндексЗаголовка.Значение; + + Если Не СвойстваЗаголовка.ПолеСортируется Тогда + Продолжить; + КонецЕсли; + + Область = РезультатОтчета.Область(ИндексЗаголовка.Ключ); + Область.Картинка = Неопределено; + + КонецЦикла; + + Возврат РезультатОтчета; + +КонецФункции + +&НаСервереБезКонтекста +Функция СкопироватьТабличныйДокумент(ТабличныйДокумент) + + ПотокВПамяти = Новый ПотокВПамяти; + ТабличныйДокумент.Записать(ПотокВПамяти); + ПотокВПамяти.Перейти(0, ПозицияВПотоке.Начало); + + Результат = Новый ТабличныйДокумент; + Результат.Прочитать(ПотокВПамяти, СпособЧтенияЗначенийТабличногоДокумента.Значение); + + Возврат Результат; + +КонецФункции + #КонецОбласти //////////////////////////////////////////////////////////////////////////////// @@ -3333,8 +3703,6 @@ Если Не ПриСохраненииВарианта Тогда ПоказыватьКомандыИзмененияВарианта = ПоказыватьКомандыВыбораВариантов И НастройкиОтчета.РазрешеноИзменятьВарианты; - РазрешеноВыбиратьИНастраиватьВариантыБезСохранения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( - НастройкиОтчета, "РазрешеноВыбиратьИНастраиватьВариантыБезСохранения", Ложь); КоличествоДоступныхНастроек = ОтчетыСервер.КоличествоДоступныхНастроек(Отчет.КомпоновщикНастроек); Элементы.ВсеНастройки.Видимость = ПоказыватьКомандыИзмененияВарианта Или КоличествоДоступныхНастроек.Обычных > 0; @@ -3349,7 +3717,7 @@ И ЗначениеЗаполнено(НастройкиОтчета.ПредопределенныйСсылка); РазрешеноСохранятьВариант = ПоказыватьКомандыИзмененияВарианта - И Не РазрешеноВыбиратьИНастраиватьВариантыБезСохранения; + И Не НастройкиОтчета.РазрешеноВыбиратьИНастраиватьВариантыБезСохранения; ДоступноСохранятьТекущийВариант = ЗначениеЗаполнено(НастройкиОтчета.ВариантСсылка) И Не ЭтоПредопределенныйВариант; @@ -3384,7 +3752,7 @@ ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПоделитьсяНастройками", "Видимость", РазрешеноИспользоватьНастройки); - Если РазрешеноВыбиратьИНастраиватьВариантыБезСохранения Тогда + Если НастройкиОтчета.РазрешеноВыбиратьИНастраиватьВариантыБезСохранения Тогда ВариантМодифицирован = Ложь; КонецЕсли; @@ -3451,7 +3819,7 @@ КонецПроцедуры &НаСервере -Процедура ЗагрузитьВариант(КлючВарианта) +Процедура ЗагрузитьВариант(КлючВарианта, ОчиститьСтекНастроек = Истина) Если Не РежимРасшифровки И Не ВариантМодифицирован Тогда КлючОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1/%2/%3'"), @@ -3474,6 +3842,10 @@ ПоместитьВоВременноеХранилище(Неопределено, НастройкиОтчета.СвойстваРезультата.АдресИндексаСтруктурыОтчета); + Если ОчиститьСтекНастроек Тогда + СтекНастроек.Очистить(); + КонецЕсли; + УстановитьТекущийВариант(КлючВарианта); ОтчетыКлиентСервер.ОтобразитьСостояниеОтчета( ЭтотОбъект, @@ -3583,19 +3955,10 @@ &НаСервере Процедура СохранитьПараметрыФормы() - ФормаПараметры = Новый Структура( - "КлючНазначенияИспользования, КлючПользовательскихНастроек, - |СформироватьПриОткрытии, ТолькоПросмотр, - |ФиксированныеНастройки, Раздел, Подсистема, ПодсистемаПредставление"); - ЗаполнитьЗначенияСвойств(ФормаПараметры, Параметры); - - ФормаПараметры.Вставить("Отбор", Новый Структура); - Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда - ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ФормаПараметры.Отбор, Параметры.Отбор, Истина); - Параметры.Отбор.Очистить(); - КонецЕсли; + ФормаПараметры = ВариантыОтчетов.СохраняемыеПараметрыФормыОтчета(Параметры); ФормаПараметры.КлючНазначенияИспользования = КлючНазначенияИспользования; + КонецПроцедуры &НаСервере @@ -3656,36 +4019,19 @@ // Параметры: // ОтчетОбъект - ОтчетОбъект -// ОтчетМетаданные - ОбъектМетаданныхОтчет -// ОтчетПолноеИмя - Строка -// ПредопределенныеВарианты - СписокЗначений: -// * Значение - СправочникСсылка.ПредопределенныеВариантыОтчетов -// - СправочникСсылка.ПредопределенныеВариантыОтчетовРасширений // // Возвращаемое значение: // см. ВариантыОтчетов.НастройкиФормыОтчета // &НаСервере -Функция НастройкиОтчета(ОтчетОбъект, ОтчетМетаданные, ОтчетПолноеИмя, ПредопределенныеВарианты) +Функция НастройкиОтчета(ОтчетОбъект) + Настройки = ВариантыОтчетов.НастройкиФормыОтчета(Параметры.Отчет, КлючТекущегоВарианта, ОтчетОбъект); - Настройки.Вставить("РазрешеноВыбиратьВарианты", Истина); - Настройки.Вставить("СхемаМодифицирована", Ложь); - Настройки.Вставить("ПредопределенныеВарианты", ПредопределенныеВарианты); - Настройки.Вставить("АдресСхемы", АдресСхемыОтчета(ОтчетОбъект)); - Настройки.Вставить("КлючСхемы", ""); - Настройки.Вставить("Контекстный", ЗначениеЗаполнено(КонтекстВарианта)); - Настройки.Вставить("ПолноеИмя", ОтчетПолноеИмя); - Настройки.Вставить("Наименование", СокрЛП(ОтчетМетаданные.Представление())); - Настройки.Вставить("ОтчетСсылка", Параметры.Отчет); - Настройки.Вставить("Подсистема", ФормаПараметры.Подсистема); - Настройки.Вставить("Внешний", ТипЗнч(Настройки.ОтчетСсылка) = Тип("Строка")); - Настройки.Вставить("Безопасный", БезопасныйРежим() <> Ложь); - Настройки.Вставить("ИспользуемыеТаблицы", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ИспользуемыеТаблицы")); - - // Свойства для контекстной настройки отчета. - Настройки.Вставить("СвойстваРезультата", ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета()); - - Настройки.Вставить("ИспользуемыеПоляУниверсальногоПоискаПоТипам", Новый Соответствие); + Настройки.АдресСхемы = АдресСхемыОтчета(ОтчетОбъект); + Настройки.Контекстный = ЗначениеЗаполнено(КонтекстВарианта); + Настройки.Подсистема = ФормаПараметры.Подсистема; + Настройки.ИспользуемыеТаблицы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ИспользуемыеТаблицы"); + Настройки.СобытияНастроек = СобытияНастроек(); Возврат Настройки; КонецФункции @@ -3732,15 +4078,102 @@ Возврат АдресСхемы; КонецФункции +#Область СобытияНастроек + +&НаСервере +Функция СобытияНастроек() + + СобытияНастроек = Новый Соответствие; + + НайтиСобытияНастроек( + Элементы.ОтчетТабличныйДокумент.КонтекстноеМеню, + УточненияСобытийНастроек(), + СобытияНастроекИсключения(), + СобытияНастроек); + + СобытияНастроек.Вставить("ФильтроватьИСформировать", НСтр("ru = 'Фильтровать...'")); + + СобытияНастроек.Вставить( + ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияФормыНастроек(), + НСтр("ru = 'Расширенная настройка'")); + + СобытияНастроек.Вставить( + ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияИзмененияСоставаБыстрыхНастроек(), + НСтр("ru = 'Изменение состава быстрых настроек'")); + + Возврат СобытияНастроек; + +КонецФункции + +&НаСервере +Функция УточненияСобытийНастроек() + + Префиксы = Новый Соответствие; + Префиксы.Вставить("ОформитьЖелтым", НСтр("ru = 'Оформить желтым'")); + Префиксы.Вставить("ОформитьКрасным", НСтр("ru = 'Оформить красным'")); + Префиксы.Вставить("ОформитьЗеленым", НСтр("ru = 'Оформить зеленым'")); + Префиксы.Вставить("ОформитьЕще", НСтр("ru = 'Оформить (еще)'")); + + Возврат Префиксы; + +КонецФункции + +&НаСервере +Функция СобытияНастроекИсключения() + + Исключения = Новый Массив; + Исключения.Добавить("Открыть"); + Исключения.Добавить("РасшифроватьПоДетальнымЗаписям"); + Исключения.Добавить("Расшифровать"); + Исключения.Добавить("Подключаемый_ПоказатьУровеньГруппировок"); + Исключения.Добавить("ОтчетСкомпоноватьРезультат"); + + Возврат Исключения; + +КонецФункции + +&НаСервере +Процедура НайтиСобытияНастроек(Меню, Уточнения, Исключения, СобытияНастроек) + + Для Каждого Элемент Из Меню.ПодчиненныеЭлементы Цикл + + Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Тогда + + НайтиСобытияНастроек(Элемент, Уточнения, Исключения, СобытияНастроек); + + ИначеЕсли СобытияНастроек[Элемент.ИмяКоманды] = Неопределено + И Исключения.Найти(Элемент.ИмяКоманды) = Неопределено Тогда + + НайденнаяКоманда = Команды.Найти(Элемент.ИмяКоманды); + + Если НайденнаяКоманда = Неопределено Тогда + Продолжить; + КонецЕсли; + + ДействиеКоманды = ?(ЗначениеЗаполнено(НайденнаяКоманда.Действие), НайденнаяКоманда.Действие, НайденнаяКоманда.Имя); + ПредставлениеДействия = Уточнения[ДействиеКоманды]; + + Если ПредставлениеДействия = Неопределено Тогда + ПредставлениеДействия = НайденнаяКоманда.Заголовок; + КонецЕсли; + + СобытияНастроек.Вставить(ДействиеКоманды, ПредставлениеДействия); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + &НаСервере Процедура УстановитьРазрешенияПользователя() - РазрешеноВыбиратьИНастраиватьВариантыБезСохранения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( - НастройкиОтчета, "РазрешеноВыбиратьИНастраиватьВариантыБезСохранения", Ложь); ВидимостьКомандВариантовОтчетов = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( Параметры, "ВидимостьКомандВариантовОтчетов", Истина); - Если РазрешеноВыбиратьИНастраиватьВариантыБезСохранения Тогда + Если НастройкиОтчета.РазрешеноВыбиратьИНастраиватьВариантыБезСохранения Тогда НастройкиОтчета.РазрешеноИзменятьВарианты = Истина; НастройкиОтчета.РазрешеноВыбиратьВарианты = Истина; @@ -3773,8 +4206,6 @@ ОтчетыСервер.ОбновитьЭлементыФормыНастроек( ЭтотОбъект, Элементы.КомпоновщикНастроекПользовательскиеНастройки, ПараметрыОбновления); - ОтчетСформирован = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ОтчетСформирован", Ложь); - Если ПараметрыОбновления.ИмяСобытия <> "ПослеФормирования" Тогда Переформировать = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОбновления, "Переформировать", Ложь); @@ -3802,7 +4233,7 @@ КонецЕсли; ОтчетыСервер.ВосстановитьЗначенияОтборов(ЭтотОбъект); - + ОбновитьМенюПереходаМеждуИзменениямиНастроек(); УстановитьВидимостьДоступность(); КонецПроцедуры @@ -3820,11 +4251,18 @@ СброситьНастройкиВарианта = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( ПараметрыЗагрузки, "СброситьНастройкиВарианта", Ложь); Если СброситьНастройкиВарианта Тогда - ЗагрузитьВариант(КлючТекущегоВарианта); + ЗагрузитьВариант(КлючТекущегоВарианта, Ложь); КонецЕсли; ОтчетыСервер.СброситьПользовательскиеНастройки(ДоступныеНастройки, ПараметрыЗагрузки); + ОтчетыСервер.ЗаполнитьДополнительныеСвойства(ОтчетОбъект, + ДоступныеНастройки.Настройки, + КлючТекущегоВарианта, + НастройкиОтчета.КлючПредопределенногоВарианта, + ?(ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта, КонтекстВарианта, ""), + ?(ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта, ФормаПараметры.Отбор, Неопределено)); + Если НастройкиОтчета.События.ПередЗагрузкойНастроекВКомпоновщик Тогда ОтчетОбъект.ПередЗагрузкойНастроекВКомпоновщик( ЭтотОбъект, @@ -3842,12 +4280,25 @@ // Установка фиксированных отборов выполняется через компоновщик, т.к. в нем наиболее полная коллекция настроек. // В ПередЗагрузкой в параметрах могут отсутствовать те параметры, настройки которые не переопределялись. - Если НастройкиЗагружены И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + Если НастройкиЗагружены + И ФормаПараметры.НачальныйКлючВарианта = КлючТекущегоВарианта + И ТипЗнч(ФормаПараметры.Отбор) = Тип("Структура") Тогда + ОтчетыСервер.УстановитьФиксированныеОтборы(ФормаПараметры.Отбор, Отчет.КомпоновщикНастроек.Настройки, НастройкиОтчета); КонецЕсли; - Если ФормаПараметры.Свойство("ФиксированныеНастройки") Тогда - ФормаПараметры.ФиксированныеНастройки = Отчет.КомпоновщикНастроек.ФиксированныеНастройки; + ФормаПараметры.ФиксированныеНастройки = Отчет.КомпоновщикНастроек.ФиксированныеНастройки; + + ДополнительныеСвойства = Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства; + ДополнительныеСвойства.Вставить("ВариантНаименование", ОтчетНаименованиеТекущегоВарианта); + + ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); + Если НастройкиОтчета.События.ПослеЗагрузкиНастроекВКомпоновщик Тогда + ОтчетОбъект.ПослеЗагрузкиНастроекВКомпоновщик(Новый Структура); + КонецЕсли; + Если Не НастройкиОтчета.Пользовательский Тогда + ОтчетОбъект.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Свойство( + "ВариантНаименование", ОтчетНаименованиеТекущегоВарианта); КонецЕсли; ОтчетыСервер.УстановитьДоступныеЗначения(ОтчетОбъект, ЭтотОбъект); @@ -3875,11 +4326,11 @@ КонецЕсли; Если ПараметрыЗагрузки.Свойство("ФормаНастроекРасширенныйРежим") Тогда - НастройкиОтчета.Вставить("ФормаНастроекРасширенныйРежим", ПараметрыЗагрузки.ФормаНастроекРасширенныйРежим); + НастройкиОтчета.ФормаНастроекРасширенныйРежим = ПараметрыЗагрузки.ФормаНастроекРасширенныйРежим; КонецЕсли; Если ПараметрыЗагрузки.Свойство("ФормаНастроекИмяСтраницы") Тогда - НастройкиОтчета.Вставить("ФормаНастроекИмяСтраницы", ПараметрыЗагрузки.ФормаНастроекИмяСтраницы); + НастройкиОтчета.ФормаНастроекИмяСтраницы = ПараметрыЗагрузки.ФормаНастроекИмяСтраницы; КонецЕсли; ОтчетыСервер.УстановитьУсловияОтборов(ПараметрыЗагрузки, Отчет.КомпоновщикНастроек); @@ -4058,12 +4509,12 @@ ДополнительныеСвойства.Вставить("КлючВарианта", КлючТекущегоВарианта); ДополнительныеСвойства.Вставить("ВариантНаименование", ОтчетНаименованиеТекущегоВарианта); - НастройкиОтчета.Вставить("ВариантСсылка", Неопределено); - НастройкиОтчета.Вставить("КлючЗамеров", Неопределено); - НастройкиОтчета.Вставить("ПредопределенныйСсылка", Неопределено); - НастройкиОтчета.Вставить("ИмяИсходногоВарианта", Неопределено); - НастройкиОтчета.Вставить("Пользовательский", Ложь); - НастройкиОтчета.Вставить("ТипОтчета", Неопределено); + НастройкиОтчета.ВариантСсылка = Неопределено; + НастройкиОтчета.КлючЗамеров = Неопределено; + НастройкиОтчета.ПредопределенныйСсылка = Неопределено; + НастройкиОтчета.КлючПредопределенногоВарианта = Неопределено; + НастройкиОтчета.Пользовательский = Ложь; + НастройкиОтчета.ТипОтчета = Неопределено; Если ОбщегоНазначения.РазделениеВключено() И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда @@ -4078,10 +4529,9 @@ | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйСсылка, | ВЫБОР | КОГДА ВариантыОтчетов.Пользовательский - | ИЛИ ВариантыОтчетов.Родитель.КлючВарианта ЕСТЬ NULL - | ТОГДА ВариантыОтчетов.КлючВарианта - | ИНАЧЕ ВариантыОтчетов.Родитель.КлючВарианта - | КОНЕЦ КАК ИмяИсходногоВарианта, + | ТОГДА ЕСТЬNULL(ВариантыОтчетов.Родитель.КлючВарианта, НЕОПРЕДЕЛЕНО) + | ИНАЧЕ ВариантыОтчетов.КлючВарианта + | КОНЕЦ КАК КлючПредопределенногоВарианта, | ВариантыОтчетов.Пользовательский КАК Пользовательский, | ВариантыОтчетов.ТипОтчета |ИЗ @@ -4105,14 +4555,17 @@ КонецЕсли; ЗаполнитьЗначенияСвойств(НастройкиОтчета, Выборка); - НастройкиОтчета.КлючЗамеров = КлючЗамеров; - НастройкиОтчета.ИмяИсходногоВарианта = ?(Выборка.Пользовательский, Выборка.ИмяИсходногоВарианта, КлючТекущегоВарианта); + ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета); Если РежимРасшифровки Тогда - ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета); ОтчетНаименованиеТекущегоВарианта = ОписаниеНастроекОтчета.Наименование; КонецЕсли; + + ДополнительныеСвойства.Вставить("ВариантНаименование", ОтчетНаименованиеТекущегоВарианта); + ДополнительныеСвойства.Вставить("КлючПредопределенногоВарианта", + ОписаниеНастроекОтчета.КлючПредопределенногоВарианта); + КонецПроцедуры &НаКлиентеНаСервереБезКонтекста @@ -4180,9 +4633,7 @@ Возврат; КонецЕсли; - Если Не Результат.Переформировать Тогда - Результат.Переформировать = (НастройкиОтчета.СвойстваРезультата.ВремяФормирования <= 5); - КонецЕсли; + УточнитьПризнакАвтоформированияОтчета(Результат); ВсеНастройкиЗавершение(Результат, Неопределено); @@ -4263,16 +4714,19 @@ Или Результат.ВыводитьЗаголовкиНастроек <> ВыводитьЗаголовкиНастроек Тогда ВыводитьЗаголовкиНастроек = Результат.ВыводитьЗаголовкиНастроек; + + Если Результат.ВариантМодифицирован Тогда + + ВариантыОтчетовСлужебныйКлиент.ДобавитьНастройкиВСтек( + ЭтотОбъект, Результат.КомпоновщикНастроекКД.Настройки, Результат.ИмяСобытия); + + КонецЕсли; + ОбновитьЭлементыФормыНастроек(Результат); КонецЕсли; КонецПроцедуры -&НаКлиентеНаСервереБезКонтекста -Функция НеопределенныйУровеньГруппировок() - Возврат 999; -КонецФункции - &НаКлиентеНаСервереБезКонтекста Функция КлючХраненияЗначенияВРамкахВариантаОтчета(ПолноеИмяОтчета, КлючВарианта) @@ -4281,192 +4735,205 @@ КонецФункции -#Область ВыводЗаголовковНастроек +#Область ПереходМеждуНастройкамиСтека -&НаСервереБезКонтекста -Процедура СохранитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки) +&НаСервере +Процедура ОбновитьМенюПереходаМеждуИзменениямиНастроек() - Если РежимРасшифровки Тогда - Возврат; - КонецЕсли; + УдалитьКомандыМенюПереходаМеждуИзменениямиНастроек(); + ОпределитьДоступностьКомандПереходаМеждуИзменениямиНастроек(); - ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить( - КлючХраненияЗначения, "ВыводитьЗаголовкиНастроек", ВыводитьЗаголовкиНастроек); + СтекНастроек.Сортировать("Порядок Убыв"); -КонецПроцедуры - -&НаСервереБезКонтекста -Процедура ВосстановитьСостояниеОпцииВыводитьЗаголовкиНастроек(КлючХраненияЗначения, ВыводитьЗаголовкиНастроек, РежимРасшифровки) + ПройденаТекущаяНастройкаСтека = Ложь; + СледующаяКоманда = Неопределено; - Если РежимРасшифровки Тогда - Возврат; - КонецЕсли; - - СохраненноеЗначение = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить( - КлючХраненияЗначения, "ВыводитьЗаголовкиНастроек"); - - ВыводитьЗаголовкиНастроек = СохраненноеЗначение = Неопределено Или СохраненноеЗначение = Истина; - -КонецПроцедуры - -#КонецОбласти - -#Область СохранениеРезультатаОтчета - -&НаКлиенте -Процедура ПослеУстановкиРасширенияРаботыСФайлами(РасширениеПодключено, ДополнительныеПараметры) Экспорт - - Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); - Диалог.Фильтр = ДоступныеФорматыСохраненияОтчета(НастройкиОтчета); - Диалог.МножественныйВыбор = Ложь; - Диалог.Заголовок = НСтр("ru = 'Сохранение результата отчета'"); - - Обработчик = Новый ОписаниеОповещения("ПослеВыбораИмениФайла", ЭтотОбъект); - ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(Обработчик, Диалог); - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеВыбораИмениФайла(Результат, ДополнительныеПараметры) Экспорт - - Если ТипЗнч(Результат) = Тип("Массив") - И Результат.Количество() > 0 Тогда + Для Каждого Запись Из СтекНастроек Цикл - ПолноеИмяФайлаОтчета = Результат[0]; - - ИначеЕсли ТипЗнч(Результат) = Тип("Строка") Тогда - - ПолноеИмяФайлаОтчета = Результат; - Иначе - Возврат; - КонецЕсли; - - Обработчик = Новый ОписаниеОповещения("ПослеСохраненияРезультатаОтчета", ЭтотОбъект, ПолноеИмяФайлаОтчета); - ФорматыСохранения = ФорматыСохраненияОтчета(ПолноеИмяФайлаОтчета); - - СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета - - РезультатОтчета = РезультатОтчетаДляСохранения(ОтчетТабличныйДокумент, СвойстваРезультата.Заголовки); - РезультатОтчета.НачатьЗапись(Обработчик, ПолноеИмяФайлаОтчета, ФорматыСохранения); - -КонецПроцедуры - -&НаКлиенте -Процедура ПослеСохраненияРезультатаОтчета(Результат, ПолноеИмяФайлаОтчета) Экспорт - - Если Результат <> Истина Тогда - Возврат; - КонецЕсли; - - Обработчик = Новый ОписаниеОповещения("ПриВыбореИмениФайлаОтчета", ЭтотОбъект, ПолноеИмяФайлаОтчета); - ПоказатьОповещениеПользователя(НСтр("ru = 'Отчет сохранен в файл'"), Обработчик, ПолноеИмяФайлаОтчета); - -КонецПроцедуры - -&НаКлиенте -Процедура ПриВыбореИмениФайлаОтчета(ПолноеИмяФайлаОтчета) Экспорт - - ФайловаяСистемаКлиент.ОткрытьФайл(ПолноеИмяФайлаОтчета); - -КонецПроцедуры - -&НаКлиенте -Функция ФорматыСохраненияОтчета(Знач ПолноеИмяФайлаОтчета) - - ОписаниеПолногоИмениФайла = СтрРазделить(ПолноеИмяФайлаОтчета, ПолучитьРазделительПути()); - ИмяФайлаОтчета = ОписаниеПолногоИмениФайла[ОписаниеПолногоИмениФайла.ВГраница()]; - - ОписаниеИмениФайла = СтрРазделить(ИмяФайлаОтчета, "."); - РасширениеФайлаОтчета = ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()]; - - ИндексФорматовСохраненияОтчета = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( - НастройкиОтчета, "ИндексФорматовСохраненияОтчета", Новый Соответствие); - - Возврат ИндексФорматовСохраненияОтчета[РасширениеФайлаОтчета]; - -КонецФункции - -&НаСервереБезКонтекста -Функция ДоступныеФорматыСохраненияОтчета(НастройкиОтчета) - - ДоступныеФорматы = Новый Массив; - - ФорматыСохранения = СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента(); - - ФорматСохраненияTXT = ФорматыСохранения.Найти(ТипФайлаТабличногоДокумента.TXT, "ТипФайлаТабличногоДокумента"); - ФорматСохраненияANSITXT = ФорматыСохранения.Найти(ТипФайлаТабличногоДокумента.ANSITXT, "ТипФайлаТабличногоДокумента"); - - Если ФорматСохраненияTXT <> Неопределено - И ФорматСохраненияANSITXT <> Неопределено Тогда - - ФорматыСохранения.Удалить(ФорматСохраненияANSITXT); - КонецЕсли; - - ИндексФорматовСохраненияОтчета = Новый Соответствие; - ТекущийФорматСохранения = Новый Массив; - - Для Каждого ФорматСохранения Из ФорматыСохранения Цикл - - РасширениеФорматаСохранения = "*." + ФорматСохранения.Расширение; - - ПредставлениеФорматаСохранения = СтрЗаменить( - ФорматСохранения.Представление, - "." + ФорматСохранения.Расширение, - РасширениеФорматаСохранения); - - ТекущийФорматСохранения.Добавить(ПредставлениеФорматаСохранения); - ТекущийФорматСохранения.Добавить(РасширениеФорматаСохранения); - - ДоступныеФорматы.Добавить(СтрСоединить(ТекущийФорматСохранения, "|")); - - ТекущийФорматСохранения.Очистить(); - - ИндексФорматовСохраненияОтчета.Вставить(ФорматСохранения.Расширение, ФорматСохранения.ТипФайлаТабличногоДокумента); - - КонецЦикла; - - НастройкиОтчета.Вставить("ИндексФорматовСохраненияОтчета", ИндексФорматовСохраненияОтчета); - - Возврат СтрСоединить(ДоступныеФорматы, "|"); - -КонецФункции - -&НаСервереБезКонтекста -Функция РезультатОтчетаДляСохранения(ОтчетТабличныйДокумент, Заголовки) - - РезультатОтчета = СкопироватьТабличныйДокумент(ОтчетТабличныйДокумент); - - Для Каждого ИндексЗаголовка Из Заголовки Цикл - - СвойстваЗаголовка = ИндексЗаголовка.Значение; - - Если Не СвойстваЗаголовка.ПолеСортируется Тогда - Продолжить; + Если Запись.Пометка Тогда + ПройденаТекущаяНастройкаСтека = Истина; КонецЕсли; - Область = РезультатОтчета.Область(ИндексЗаголовка.Ключ); - Область.Картинка = Неопределено; + Если ПройденаТекущаяНастройкаСтека Тогда + + ГруппаДействий = Элементы.ГруппаОтменитьИзменениеНастроек; + СледующаяКоманда = Элементы.УстановитьСтандартныеНастройки; + + Иначе + + ГруппаДействий = Элементы.ГруппаПовторитьИзменениеНастроек; + + Если ГруппаДействий.ПодчиненныеЭлементы.Количество() > 0 Тогда + СледующаяКоманда = ГруппаДействий.ПодчиненныеЭлементы[0]; + КонецЕсли; + + КонецЕсли; + + ДобавитьКомандуПереходаМеждуИзменениямиНастроек(Запись, ГруппаДействий, СледующаяКоманда); КонецЦикла; - Возврат РезультатОтчета; + ОбновитьСочетаниеКлавишКомандПереходаМеждуИзменениямиНастроек(); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьКомандыМенюПереходаМеждуИзменениямиНастроек() + + МаксимальныйРазмерСтекаНастроек = ВариантыОтчетовСлужебныйКлиентСервер.МаксимальныйРазмерСтекаНастроек(); + + Для Порядок = 1 По МаксимальныйРазмерСтекаНастроек Цикл + + ИмяКоманды = ИмяКомандыПереходаМеждуИзменениямиНастроек(Порядок); + + Кнопка = Элементы.Найти(ИмяКоманды); + + Если Кнопка <> Неопределено Тогда + Элементы.Удалить(Кнопка); + КонецЕсли; + + Команда = Команды.Найти(ИмяКоманды); + + Если Команда <> Неопределено Тогда + Команды.Удалить(Команда); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОпределитьДоступностьКомандПереходаМеждуИзменениямиНастроек() + + ТекущиеНастройкиСтека = ТекущиеНастройкиСтека(); + ТекущиеНастройкиСтекаОпределены = (ТекущиеНастройкиСтека.Количество() > 0); + + КнопкаУстановкиСтандартныхНастроек = Элементы.УстановитьСтандартныеНастройки; + КнопкаУстановкиСтандартныхНастроек.Видимость = СтекНастроек.Количество() > 0; + + КнопкаУстановкиСтандартныхНастроек.Доступность = КнопкаУстановкиСтандартныхНастроек.Видимость + И ТекущиеНастройкиСтекаОпределены; + + КнопкаУстановкиСтандартныхНастроек.Пометка = Не КнопкаУстановкиСтандартныхНастроек.Доступность; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьКомандуПереходаМеждуИзменениямиНастроек(ЗаписьСтекаНастроек, ГруппаДействий, СледующаяКоманда) + + ИмяКоманды = ИмяКомандыПереходаМеждуИзменениямиНастроек(ЗаписьСтекаНастроек.Порядок); + ЗаголовокКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1. %2", ЗаписьСтекаНастроек.Порядок, ЗаписьСтекаНастроек.ПредставлениеДействия); + + Команда = Команды.Найти(ИмяКоманды); + + Если Команда = Неопределено Тогда + Команда = Команды.Добавить(ИмяКоманды); + КонецЕсли; + + Команда.Действие = "Подключаемый_ПерейтиМеждуИзменениямиНастроек"; + Команда.Заголовок = ЗаголовокКоманды; + + Кнопка = Элементы.Найти(ИмяКоманды); + + Если Кнопка = Неопределено Тогда + Кнопка = Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"), ГруппаДействий, СледующаяКоманда); + КонецЕсли; + + Кнопка.ИмяКоманды = ИмяКоманды; + Кнопка.Заголовок = ЗаголовокКоманды; + Кнопка.Доступность = Не ЗаписьСтекаНастроек.Пометка; + Кнопка.Пометка = ЗаписьСтекаНастроек.Пометка; + Кнопка.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет); + +КонецПроцедуры + +&НаСервере +Функция ИмяКомандыПереходаМеждуИзменениямиНастроек(Порядок) + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1%2", ПрефиксИмениКомандыПереходаМеждуИзменениямиНастроек(), Порядок); КонецФункции -&НаСервереБезКонтекста -Функция СкопироватьТабличныйДокумент(ТабличныйДокумент) +&НаКлиентеНаСервереБезКонтекста +Функция ПрефиксИмениКомандыПереходаМеждуИзменениямиНастроек() - ПотокВПамяти = Новый ПотокВПамяти; - ТабличныйДокумент.Записать(ПотокВПамяти); - ПотокВПамяти.Перейти(0, ПозицияВПотоке.Начало); + Возврат "ПерейтиМеждуИзменениямиНастроек"; - Результат = Новый ТабличныйДокумент; - Результат.Прочитать(ПотокВПамяти, СпособЧтенияЗначенийТабличногоДокумента.Значение); +КонецФункции + +&НаСервере +Процедура ОбновитьСочетаниеКлавишКомандПереходаМеждуИзменениямиНастроек() - Возврат Результат; + КнопкаУстановкиСтандартныхНастроек = Элементы.УстановитьСтандартныеНастройки; + КнопкаУстановкиСтандартныхНастроек.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет); + + СочетаниеКлавишОтменыДействия = Новый СочетаниеКлавиш(Клавиша.Z, Ложь, Истина, Ложь); + СочетаниеКлавишПовтораДействия = Новый СочетаниеКлавиш(Клавиша.Y, Ложь, Истина, Ложь); + + ТекущиеНастройкиСтека = ТекущиеНастройкиСтека(); + + Если ТекущиеНастройкиСтека.Количество() > 0 Тогда + + ПорядокКомандыТекущихНастроекСтека = ТекущиеНастройкиСтека[0].Порядок; + + СочетаниеКлавишУстановлено = УстановитьСочетаниеКлавишКомандыПереходаМеждуИзменениямиНастроек( + ПорядокКомандыТекущихНастроекСтека - 1, СочетаниеКлавишОтменыДействия); + + Если Не СочетаниеКлавишУстановлено + И ПорядокКомандыТекущихНастроекСтека = 1 + И Не КнопкаУстановкиСтандартныхНастроек.Пометка Тогда + + КнопкаУстановкиСтандартныхНастроек.СочетаниеКлавиш = СочетаниеКлавишОтменыДействия; + + КонецЕсли; + + УстановитьСочетаниеКлавишКомандыПереходаМеждуИзменениямиНастроек( + ПорядокКомандыТекущихНастроекСтека + 1, СочетаниеКлавишПовтораДействия); + + ИначеЕсли СтекНастроек.Количество() > 0 + И КнопкаУстановкиСтандартныхНастроек.Пометка Тогда + + УстановитьСочетаниеКлавишКомандыПереходаМеждуИзменениямиНастроек(1, СочетаниеКлавишПовтораДействия); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция УстановитьСочетаниеКлавишКомандыПереходаМеждуИзменениямиНастроек(ПорядокКоманды, СочетаниеКлавиш) + + ИмяКоманды = ИмяКомандыПереходаМеждуИзменениямиНастроек(ПорядокКоманды); + Кнопка = Элементы.Найти(ИмяКоманды); + + Если Кнопка = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Кнопка.СочетаниеКлавиш = СочетаниеКлавиш; + Возврат Истина; + +КонецФункции + +&НаСервере +Функция ТекущиеНастройкиСтека() + + Возврат СтекНастроек.НайтиСтроки(Новый Структура("Пометка", Истина)); КонецФункции #КонецОбласти -#КонецОбласти \ No newline at end of file +&НаКлиенте +Процедура УточнитьПризнакАвтоформированияОтчета(ПараметрыОбновления) + + ДопустимоеВремяДляАвтоформированияОтчетаВСек = 5; + ВремяФормированияОтчетаВСек = НастройкиОтчета.СвойстваРезультата.ВремяФормирования; + Переформировать = (ВремяФормированияОтчетаВСек <= ДопустимоеВремяДляАвтоформированияОтчетаВСек); + + ПараметрыОбновления.Вставить("Переформировать", Переформировать); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/CommonForms/ФормаПоиска/Module.bsl b/SSL/src/CommonForms/ФормаПоиска/Module.bsl index 964a0dcdc..39670a5c8 100644 --- a/SSL/src/CommonForms/ФормаПоиска/Module.bsl +++ b/SSL/src/CommonForms/ФормаПоиска/Module.bsl @@ -449,8 +449,8 @@ РекомендацииHTML = НСтр("ru = '

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

    |
      - | %РекомендацияОбластиПоиска% - | %РекомендацияТекстЗапроса% + | %1 + | %2 |
    • | Воспользуйтесь поиском по началу слова.
      | Используйте звездочку (*) в качестве окончания.
      @@ -464,7 +464,7 @@ | Ромашка на одну или две буквы. |
    • |
    - |'"); + |'"); УказаныОбластиПоиска = ОбластиПоиска.Количество() > 0; @@ -494,8 +494,9 @@ КонецЕсли; - РекомендацииHTML = СтрЗаменить(РекомендацииHTML, "%РекомендацияОбластиПоиска%", РекомендацияОбластиПоискаHTML); - РекомендацииHTML = СтрЗаменить(РекомендацииHTML, "%РекомендацияТекстЗапроса%", РекомендацияТекстЗапросаHTML); + РекомендацииHTML = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(РекомендацииHTML, + РекомендацияОбластиПоискаHTML, РекомендацияТекстЗапросаHTML, + "v8help://1cv8/QueryLanguageFullTextSearchInData"); Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтраницы, ОписаниеОшибки, РекомендацииHTML); diff --git a/SSL/src/CommonModules/АвтономнаяРабота/Module.bsl b/SSL/src/CommonModules/АвтономнаяРабота/Module.bsl index 190908d97..ce4ed2271 100644 --- a/SSL/src/CommonModules/АвтономнаяРабота/Module.bsl +++ b/SSL/src/CommonModules/АвтономнаяРабота/Module.bsl @@ -110,3 +110,48 @@ КонецФункции #КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ВыключитьСвойствоИБ() Экспорт + + ЭтоАвтономноеРабочееМесто = Константы.ЭтоАвтономноеРабочееМесто.СоздатьМенеджерЗначения(); + ЭтоАвтономноеРабочееМесто.Прочитать(); + Если ЭтоАвтономноеРабочееМесто.Значение Тогда + + ЭтоАвтономноеРабочееМесто.Значение = Ложь; + МодульОбновлениеИнформационнойБазы = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазы"); + МодульОбновлениеИнформационнойБазы.ЗаписатьДанные(ЭтоАвтономноеРабочееМесто); + + КонецЕсли; + +КонецПроцедуры + +// Для вызова из формы восстановления связи с главным узлом +// см. общую форму ВосстановлениеСвязиСГлавнымУзлом +// +Процедура ПриПодтвержденииОтключенияСвязиСГлавнымУзлом() Экспорт + + Если НЕ Константы.ЭтоАвтономноеРабочееМесто.Получить() Тогда + + Возврат; + + КонецЕсли; + + ВыключитьСвойствоИБ(); + + НеИспользоватьРазделениеПоОбластямДанных = Константы.НеИспользоватьРазделениеПоОбластямДанных.СоздатьМенеджерЗначения(); + НеИспользоватьРазделениеПоОбластямДанных.Прочитать(); + Если Не Константы.ИспользоватьРазделениеПоОбластямДанных.Получить() + И Не НеИспользоватьРазделениеПоОбластямДанных.Значение Тогда + + НеИспользоватьРазделениеПоОбластямДанных.Значение = Истина; + + МодульОбновлениеИнформационнойБазы = ОбщегоНазначения.ОбщийМодуль("ОбновлениеИнформационнойБазы"); + МодульОбновлениеИнформационнойБазы.ЗаписатьДанные(НеИспользоватьРазделениеПоОбластямДанных); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl index 41b081c6a..373858c93 100644 --- a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl +++ b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl @@ -671,6 +671,208 @@ КонецФункции +Процедура УдалитьНеактуальныеСообщенияОбмена(АвтономноеРабочееМесто) Экспорт + + КодУзлаАвтономногоРабочегоМеста = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(АвтономноеРабочееМесто, "Код"); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("КодУзла", "%" + КодУзлаАвтономногоРабочегоМеста + "%"); + + Запрос.Текст = + "ВЫБРАТЬ + | СообщенияОбменаДаннымиОбластейДанных.ИдентификаторСообщения КАК ИдентификаторСообщения, + | СообщенияОбменаДаннымиОбластейДанных.ИмяФайлаСообщения КАК ИмяФайла, + | СообщенияОбменаДаннымиОбластейДанных.ДатаЗакладкиСообщения КАК ДатаЗакладкиСообщения + |ИЗ + | РегистрСведений.СообщенияОбменаДаннымиОбластейДанных КАК СообщенияОбменаДаннымиОбластейДанных + |ГДЕ + | СообщенияОбменаДаннымиОбластейДанных.ИмяФайлаСообщения ПОДОБНО &КодУзла"; + + Результат = Запрос.Выполнить(); + Если Результат.Пустой() Тогда + Возврат; + КонецЕсли; + + КаталогВременногоХранилищаФайлов = ОбменДаннымиСервер.КаталогВременногоХранилищаФайлов(); + СобытиеЖурналаРегистрации = НСтр("ru = 'Обмен данными'", ОбщегоНазначения.КодОсновногоЯзыка()); + + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + + ПолноеИмяФайлаСообщения = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( + КаталогВременногоХранилищаФайлов, Выборка.ИмяФайла); + + ФайлСообщения = Новый Файл(ПолноеИмяФайлаСообщения); + ФайлУдален = Истина; + + Если ФайлСообщения.Существует() Тогда + + Попытка + УдалитьФайлы(ФайлСообщения.ПолноеИмя); + Исключение + + ФайлУдален = Ложь; + + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации, + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + КонецПопытки; + + КонецЕсли; + + СтруктураЗаписи = Новый Структура(); + СтруктураЗаписи.Вставить("ИдентификаторСообщения", Выборка.ИдентификаторСообщения); + + Если ФайлУдален Тогда + РегистрыСведений.СообщенияОбменаДаннымиОбластейДанных.УдалитьЗапись(СтруктураЗаписи); + Иначе + + СтруктураЗаписи.Вставить("ИмяФайлаСообщения", Выборка.ИмяФайла); + СтруктураЗаписи.Вставить("ДатаЗакладкиСообщения", Выборка.ДатаЗакладкиСообщения - 60 * 60 * 24); + + РегистрыСведений.СообщенияОбменаДаннымиОбластейДанных.ДобавитьЗапись(СтруктураЗаписи); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Функция ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста() Экспорт + + Возврат ПолучитьФункциональнуюОпцию("ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста"); + +КонецФункции + +Процедура ОткрытьЗаписьДанныхНачальногоОбраза(Получатель) Экспорт + + ПараметрыВыгрузки = Получатель.ДополнительныеСвойства.ПараметрыВыгрузки; + + Если ПараметрыВыгрузки.ВыгруженныеДанные <> Неопределено Тогда + Возврат; + КонецЕсли; + + Если ПараметрыВыгрузки.ИспользоватьОптимизированнуюЗапись Тогда + ПараметрыВыгрузки.НомерФайла = ПараметрыВыгрузки.НомерФайла + 1; + ИмяФайлаДанных = СтрШаблон("data_%1.xml", Формат(ПараметрыВыгрузки.НомерФайла, "ЧГ=0")); + Иначе + ИмяФайлаДанных = "data.xml"; + КонецЕсли; + + ПолноеИмяФайлаДанных = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( + ПараметрыВыгрузки.КаталогАрхива, ИмяФайлаДанных); + + ПотокПриемник = ФайловыеПотоки.Создать(ПолноеИмяФайлаДанных); + + ВыгруженныеДанные = Новый ЗаписьXML; + ВыгруженныеДанные.ОткрытьПоток(ПотокПриемник); + + ВыгруженныеДанные.ЗаписатьОбъявлениеXML(); + ВыгруженныеДанные.ЗаписатьНачалоЭлемента("Data"); + ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema"); + ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); + ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); + + ПараметрыВыгрузки.ВыгруженныеДанные = ВыгруженныеДанные; + ПараметрыВыгрузки.ПотокПриемник = ПотокПриемник; + ПараметрыВыгрузки.ИмяФайлаДанных = ПолноеИмяФайлаДанных; + +КонецПроцедуры + +Процедура ЗаписатьЭлементДанныхНачальногоОбраза(ЭлементДанных, СвойстваМетаданных, Получатель) Экспорт + + ПараметрыВыгрузки = Получатель.ДополнительныеСвойства.ПараметрыВыгрузки; + + ЗаписатьXML(ПараметрыВыгрузки.ВыгруженныеДанные, ЭлементДанных); + + Если ПараметрыВыгрузки.ИспользоватьОптимизированнуюЗапись Тогда + + ЗаписаноЭлементов = ?(СвойстваМетаданных.ЭтоНаборЗаписей, ЭлементДанных.Количество(), 1); + ПараметрыВыгрузки.ЗаписаноЭлементов = ПараметрыВыгрузки.ЗаписаноЭлементов + ЗаписаноЭлементов; + ПараметрыВыгрузки.ЗаписаноЭлементовПослеПроверкиРазмераФайла + = ПараметрыВыгрузки.ЗаписаноЭлементовПослеПроверкиРазмераФайла + ЗаписаноЭлементов; + + КонецЕсли; + +КонецПроцедуры + +Процедура ЗакрытьЗаписьДанныхНачальногоОбраза(Получатель, НачальныйОбразСформирован = Ложь) Экспорт + + ПараметрыВыгрузки = Получатель.ДополнительныеСвойства.ПараметрыВыгрузки; + ЗакрытьЗапись = Ложь; + + Если НачальныйОбразСформирован Тогда + ЗакрытьЗапись = Истина; + ИначеЕсли ПараметрыВыгрузки.ИспользоватьОптимизированнуюЗапись Тогда + + Если ПараметрыВыгрузки.ЗаписаноЭлементов >= ПараметрыВыгрузки.МаксимальноеКоличествоЭлементов Тогда + ЗакрытьЗапись = Истина; + ИначеЕсли ПараметрыВыгрузки.ЗаписаноЭлементовПослеПроверкиРазмераФайла >= ПараметрыВыгрузки.КоличествоЭлементовПроверкиРазмераФайла Тогда + + ФайлДанных = Новый Файл(ПараметрыВыгрузки.ИмяФайлаДанных); + Если ФайлДанных.Существует() И ФайлДанных.Размер() >= ПараметрыВыгрузки.МаксимальныйРазмерФайла Тогда + ЗакрытьЗапись = Истина; + КонецЕсли; + + ПараметрыВыгрузки.ЗаписаноЭлементовПослеПроверкиРазмераФайла = 0; + + КонецЕсли; + + КонецЕсли; + + Если Не ЗакрытьЗапись Тогда + Возврат; + КонецЕсли; + + Если ПараметрыВыгрузки.ВыгруженныеДанные <> Неопределено Тогда + + ПараметрыВыгрузки.ВыгруженныеДанные.ЗаписатьКонецЭлемента(); // Data + ПараметрыВыгрузки.ВыгруженныеДанные.Закрыть(); + + ПараметрыВыгрузки.ВыгруженныеДанные = Неопределено; + + КонецЕсли; + + Если ПараметрыВыгрузки.ПотокПриемник <> Неопределено Тогда + + ПараметрыВыгрузки.ПотокПриемник.Закрыть(); + + ПараметрыВыгрузки.ПотокПриемник = Неопределено; + + КонецЕсли; + + Если ПараметрыВыгрузки.ИспользоватьОптимизированнуюЗапись И ПараметрыВыгрузки.ЗаписаноЭлементов > 0 Тогда + + ПараметрыВыгрузки.ЗаписаноЭлементов = 0; + ПараметрыВыгрузки.ЗаписаноЭлементовПослеПроверкиРазмераФайла = 0; + + ИмяФайлаАрхива = СтрШаблон("data_%1.zip", Формат(ПараметрыВыгрузки.НомерФайла, "ЧГ=0")); + ПолноеИмяФайлаАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( + ПараметрыВыгрузки.КаталогАрхива, ИмяФайлаАрхива); + + Архиватор = Новый ЗаписьZipФайла(ПолноеИмяФайлаАрхива,,,, УровеньСжатияZIP.Максимальный); + Архиватор.Добавить(ПараметрыВыгрузки.ИмяФайлаДанных); + Архиватор.Записать(); + + Попытка + УдалитьФайлы(ПараметрыВыгрузки.ИмяФайлаДанных); + Исключение + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -921,63 +1123,133 @@ Процедура ЗагрузитьДанныеНачальногоОбраза() КаталогИнформационнойБазы = ОбщегоНазначенияКлиентСервер.КаталогФайловойИнформационнойБазы(); + СписокФайловДанных = ПолучитьУпорядоченныйСписокФайловДанных(КаталогИнформационнойБазы); - ИмяФайлаДанныхНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогИнформационнойБазы, - "data.xml"); + Если СписокФайловДанных = Неопределено Тогда - ФайлДанныхНачальногоОбраза = Новый Файл(ИмяФайлаДанныхНачальногоОбраза); - Если Не ФайлДанныхНачальногоОбраза.Существует() Тогда - Возврат; // Данные начального образа были успешно загружены ранее + ИмяФайлаДанныхНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( + КаталогИнформационнойБазы, + "data.xml"); + + ФайлДанныхНачальногоОбраза = Новый Файл(ИмяФайлаДанныхНачальногоОбраза); + Если Не ФайлДанныхНачальногоОбраза.Существует() Тогда + Возврат; // Данные начального образа были успешно загружены ранее + КонецЕсли; + + СписокФайловДанных = Новый Массив(); + СписокФайловДанных.Добавить(ФайлДанныхНачальногоОбраза.ПолноеИмя); + КонецЕсли; - ДанныеНачальногоОбраза = Новый ЧтениеXML; - ДанныеНачальногоОбраза.ОткрытьФайл(ИмяФайлаДанныхНачальногоОбраза); - ДанныеНачальногоОбраза.Прочитать(); - ДанныеНачальногоОбраза.Прочитать(); - ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Истина, Ложь); + УстановитьИспользованиеИтоговРегистров(Ложь); - Попытка - УстановитьИспользованиеИтоговРегистров(Ложь); + Для Каждого ИмяФайлаДанных Из СписокФайловДанных Цикл - Пока ВозможностьЧтенияXML(ДанныеНачальногоОбраза) Цикл + ДанныеНачальногоОбраза = Новый ЧтениеXML; + ДанныеНачальногоОбраза.ОткрытьФайл(ИмяФайлаДанных); + ДанныеНачальногоОбраза.Прочитать(); + ДанныеНачальногоОбраза.Прочитать(); + + Попытка - ЭлементДанных = ПрочитатьXML(ДанныеНачальногоОбраза); - ЭлементДанных.ДополнительныеСвойства.Вставить("СозданиеНачальногоОбраза"); + Пока ВозможностьЧтенияXML(ДанныеНачальногоОбраза) Цикл + + ЭлементДанных = ПрочитатьXML(ДанныеНачальногоОбраза); + ЭлементДанных.ДополнительныеСвойства.Вставить("СозданиеНачальногоОбраза"); + + ЭлементДанных.ОбменДанными.Загрузка = Истина; + ЭлементДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + ЭлементДанных.Записать(); + + КонецЦикла; - ЭлементДанных.ОбменДанными.Загрузка = Истина; - ЭлементДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); - ЭлементДанных.Записать(); + Исключение - КонецЦикла; + ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ДанныеНачальногоОбраза = Неопределено; + ВызватьИсключение; + КонецПопытки; - УстановитьИспользованиеИтоговРегистров(Истина); + ДанныеНачальногоОбраза.Закрыть(); - ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь); + Попытка + УдалитьФайлы(ИмяФайлаДанных); + Исключение + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; - Исключение - - ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь); - - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - - ДанныеНачальногоОбраза = Неопределено; - ВызватьИсключение; - КонецПопытки; + КонецЦикла; - ДанныеНачальногоОбраза.Закрыть(); - - Попытка - УдалитьФайлы(ИмяФайлаДанныхНачальногоОбраза); - Исключение - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; + УстановитьИспользованиеИтоговРегистров(Истина); + ОбменДаннымиСлужебный.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь); КонецПроцедуры +Функция ПолучитьУпорядоченныйСписокФайловДанных(КаталогИнформационнойБазы) + + НайденныеФайлыАрхиваДанных = НайтиФайлы(КаталогИнформационнойБазы, "data_*.zip", Ложь); + + Если НайденныеФайлыАрхиваДанных.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)); + + ТаблицаФайлов = Новый ТаблицаЗначений; + ТаблицаФайлов.Колонки.Добавить("ИмяФайла"); + ТаблицаФайлов.Колонки.Добавить("НомерФайла", ТипЧисло); + + Для Каждого ФайлАрхиваДанных Из НайденныеФайлыАрхиваДанных Цикл + + ЧастиИмениФайла = СтрРазделить(ФайлАрхиваДанных.ИмяБезРасширения, "_", Ложь); + Если ЧастиИмениФайла.Количество() <> 2 Тогда + ВызватьИсключение НСтр("ru = 'Неверный формат имени файла данных'"); + КонецЕсли; + + НомерФайла = ТипЧисло.ПривестиЗначение(ЧастиИмениФайла[1]); + Если НомерФайла = 0 Тогда + ВызватьИсключение НСтр("ru = 'Неверный формат имени файла данных'"); + КонецЕсли; + + ЧтениеАрхива = Новый ЧтениеZipФайла(ФайлАрхиваДанных.ПолноеИмя); + ЧтениеАрхива.ИзвлечьВсе(КаталогИнформационнойБазы); + ЧтениеАрхива.Закрыть(); + + СтрокаТаблицы = ТаблицаФайлов.Добавить(); + СтрокаТаблицы.ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( + КаталогИнформационнойБазы, ФайлАрхиваДанных.ИмяБезРасширения + ".xml"); + СтрокаТаблицы.НомерФайла = НомерФайла; + + Попытка + УдалитьФайлы(ФайлАрхиваДанных.ПолноеИмя); + Исключение + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + + КонецЦикла; + + ТаблицаФайлов.Сортировать("НомерФайла"); + + СписокФайлов = Новый Массив(); + Для Каждого СтрокаТаблицы Из ТаблицаФайлов Цикл + СписокФайлов.Добавить(СтрокаТаблицы.ИмяФайла); + КонецЦикла; + + Возврат СписокФайлов; + +КонецФункции + // Для внутреннего использования // Функция ПолучитьПараметрыИзНачальногоОбраза() diff --git a/SSL/src/CommonModules/АдминистрированиеКластера/Module.bsl b/SSL/src/CommonModules/АдминистрированиеКластера/Module.bsl index cd9875a26..aa6333de0 100644 --- a/SSL/src/CommonModules/АдминистрированиеКластера/Module.bsl +++ b/SSL/src/CommonModules/АдминистрированиеКластера/Module.bsl @@ -1594,8 +1594,9 @@ Иначе - ВызватьИсключение НСтр("ru = 'Неверный тип значения параметра Фильтр, ожидалось <Структура> или <КлючИЗначение>'"); - + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный тип значения параметра %1, ожидалось %2 или %3.'"), + "Фильтр", "Структура", "КлючИЗначение"); КонецЕсли; ПроверяемоеЗначение = ПроверяемыйОбъект[Поле]; @@ -1696,8 +1697,8 @@ Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неизвестный тип параметра ПараметрыАдминистрирования (%1), ожидалось ""COM"" или ""RAS""'"), - ПараметрыАдминистрирования.ТипПодключения); + НСтр("ru = 'Неизвестный тип параметра %1 (%2), ожидалось ""%3"" или ""%4"".'"), + "ПараметрыАдминистрирования", ПараметрыАдминистрирования.ТипПодключения, "COM", "RAS"); КонецЕсли; diff --git a/SSL/src/CommonModules/АдресныйКлассификаторСлужебный/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторСлужебный/Module.bsl index 7895e1721..61737fe94 100644 --- a/SSL/src/CommonModules/АдресныйКлассификаторСлужебный/Module.bsl +++ b/SSL/src/CommonModules/АдресныйКлассификаторСлужебный/Module.bsl @@ -2133,7 +2133,7 @@ РезультатВебСервис = ВыполнитьЗапросЧерезВебСервис(ТекстGETЗапроса); Если РезультатВебСервис.Отказ Или РезультатВебСервис.Количество() = 0 Или РезультатВебСервис.Данные = Неопределено Тогда - Возврат Адрес; + Возврат Неопределено; КонецЕсли; Если РезультатВебСервис.Данные.status = "COMPLETELY_RECOGNIZED" Тогда @@ -2400,8 +2400,8 @@ ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 10 - | АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение + %1 КАК Представление, - | АдресныеОбъекты%2.Идентификатор КАК Идентификатор, + | АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение КАК Представление, + | АдресныеОбъекты.Идентификатор КАК Идентификатор, | ИСТИНА КАК Муниципальный, | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения, | ВЫБОР @@ -2411,10 +2411,10 @@ | КОНЕЦ КАК Уровень |ПОМЕСТИТЬ МуниципальныеАдреса |ИЗ - | РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты0 - | %3 + | РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыМуниципальный + | |ГДЕ - | %5 + | АдресныеОбъекты.Наименование = &ЧастьАдреса И АдресныеОбъекты.Сокращение = &ЧастьАдресаСокращение | |УПОРЯДОЧИТЬ ПО | АдресныеОбъекты0.Уровень @@ -2422,8 +2422,8 @@ | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ ПЕРВЫЕ 10 - | АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение + %1 КАК Представление, - | АдресныеОбъекты%2.Идентификатор КАК Идентификатор, + | АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение КАК Представление, + | АдресныеОбъекты.Идентификатор КАК Идентификатор, | ЛОЖЬ КАК Муниципальный, | АдресныеОбъекты0.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения, | ВЫБОР @@ -2433,10 +2433,10 @@ | КОНЕЦ КАК Уровень |ПОМЕСТИТЬ АдминистративныеАдреса |ИЗ - | РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты0 - | %4 + | РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыАдминистративный + | |ГДЕ - | %5 + | АдресныеОбъекты.Наименование = &ЧастьАдреса И АдресныеОбъекты.Сокращение = &ЧастьАдресаСокращение | |УПОРЯДОЧИТЬ ПО | АдресныеОбъекты0.Уровень @@ -2471,10 +2471,27 @@ | |УПОРЯДОЧИТЬ ПО | Уровень"; + + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение КАК Представление,", + "АдресныеОбъекты0.Наименование + "" "" + АдресныеОбъекты0.Сокращение + "+ СтрСоединить(Выбор, " + ") + " КАК Представление,"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "АдресныеОбъекты.Идентификатор КАК Идентификатор,", + "АдресныеОбъекты" + Строка(СопоставленныеЧастиАдреса.Количество() - 1) + ".Идентификатор КАК Идентификатор,"); - - ТекстЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстЗапроса, СтрСоединить(Выбор, " + "), - СопоставленныеЧастиАдреса.Количество() - 1, СтрСоединить(СоединениеМуниципальный, Символы.ПС), СтрСоединить(Соединение, Символы.ПС), СтрСоединить(Где, " И ")); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыМуниципальный", + "РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты0 " + Символы.ПС + СтрСоединить(СоединениеМуниципальный, Символы.ПС)); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "РегистрСведений.АдресныеОбъекты КАК АдресныеОбъектыАдминистративный", + "РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты0 " + Символы.ПС + СтрСоединить(Соединение, Символы.ПС)); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "АдресныеОбъекты.Наименование = &ЧастьАдреса И АдресныеОбъекты.Сокращение = &ЧастьАдресаСокращение", + СтрСоединить(Где, " И ")); ЗапросСопоставитьЧастиАдреса.Текст = ТекстЗапроса; @@ -3419,12 +3436,10 @@ |ПОМЕСТИТЬ Адреса |ИЗ | РегистрСведений.ИсторияАдресныхОбъектов КАК ИсторияАдресныхОбъектов0 - | &ТекстСоединения |ГДЕ | ИсторияАдресныхОбъектов0.Наименование = &Наименование0 | И ИсторияАдресныхОбъектов0.КодСубъектаРФ = &КодСубъектаРФ | И ИсторияАдресныхОбъектов0.Сокращение = &Сокращение0 - | &Отбор | |УПОРЯДОЧИТЬ ПО | ОкончаниеДействияЗаписи УБЫВ @@ -3533,8 +3548,15 @@ ТекстОтбор = ?(Счетчик > 2, " И НЕ ИсторияАдресныхОбъектов1.Наименование ЕСТЬ NULL", ""); - Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстСоединения", ТекстСоединения); - Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Отбор", ТекстОтбор); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "РегистрСведений.ИсторияАдресныхОбъектов КАК ИсторияАдресныхОбъектов0", + "РегистрСведений.ИсторияАдресныхОбъектов КАК ИсторияАдресныхОбъектов0 + | " + ТекстСоединения); + + Если ЗначениеЗаполнено(ТекстОтбор) Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "И ИсторияАдресныхОбъектов0.Сокращение = &Сокращение0", + "И ИсторияАдресныхОбъектов0.Сокращение = &Сокращение0 + |" + ТекстОтбор); + КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); @@ -10291,7 +10313,7 @@ Возврат АдресСтруктура; КонецЕсли; - ВызватьИсключение НСтр("ru = 'Переданный адрес не может быть преобразован в функции АдресныйКлассификаторСлужебный.КодыАдреса.'"); + ВызватьИсключение НСтр("ru = 'Сведения контактной информации были повреждены. Для их восстановления обратитесь к техническому специалисту.'"); КонецФункции diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl index 77b3c696c..6adff09c6 100644 --- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl @@ -20,8 +20,8 @@ Если ТипЗнч(ЗадачаСсылка) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неправильный тип параметра ЗадачаСсылка (передан: %1; ожидается: %2)'"), - ТипЗнч(ЗадачаСсылка), "ЗадачаСсылка.ЗадачаИсполнителя"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неправильный тип параметра %1 (передан: %2; ожидается: %3)'"), + "ЗадачаСсылка", ТипЗнч(ЗадачаСсылка), "ЗадачаСсылка.ЗадачаИсполнителя"); ВызватьИсключение ТекстСообщения; КонецЕсли; diff --git a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl index 27da752ec..931874bba 100644 --- a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl @@ -160,9 +160,10 @@ Отчеты[ОтчетМетаданные.Имя].НастроитьВариантыОтчета(Настройки, НастройкиОтчета); Исключение ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра КлючВарианта в процедуре ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера. + НСтр("ru = 'Недопустимое значение параметра %1 в процедуре %2. |Не удалось настроить варианты отчета из модуля менеджера по причине: - |%1'"), + |%3'"), + "КлючВарианта", "ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, ТекстОшибки, ОтчетМетаданные); КонецПопытки; @@ -238,9 +239,9 @@ Если Результат.Количество() <> 1 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра Отчет в функции ВариантыОтчетов.ОписаниеОтчета. - |Отчет ""%1"" не подключен к подсистеме ""%2"". Проверьте свойство ""Хранилище вариантов"" в свойствах отчета.'"), - Строка(Отчет), НаименованиеПодсистемы("")); + НСтр("ru = 'Недопустимое значение параметра %1 в функции %2. + |Отчет ""%3"" не подключен к подсистеме ""%4"". Проверьте свойство ""Хранилище вариантов"" в свойствах отчета.'"), + "Отчет", "ВариантыОтчетов.ОписаниеОтчета", Строка(Отчет), НаименованиеПодсистемы("")); КонецЕсли; Возврат Результат[0]; @@ -326,9 +327,9 @@ Если Результат.Количество() <> 1 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра КлючВарианта в функции ВариантыОтчетов.ОписаниеВарианта: - |вариант ""%1"" отсутствует в отчете ""%2"".'"), - КлючВариантаОтчета, МетаданныеОтчета.Имя); + НСтр("ru = 'Недопустимое значение параметра %1 в функции %2: + |вариант ""%3"" отсутствует в отчете ""%4"".'"), + "КлючВарианта", "ВариантыОтчетов.ОписаниеВарианта", КлючВариантаОтчета, МетаданныеОтчета.Имя); КонецЕсли; ЗаполнитьОписаниеСтрокиВарианта(Результат[0], ОписаниеОтчета); @@ -537,7 +538,7 @@ ИспользуемыеТаблицы = ИспользуемыеТаблицы(ОтчетОбъект.СхемаКомпоновкиДанных); - НастройкиОтчета = НастройкиФормыОтчета(Идентификатор, Неопределено, ОтчетОбъект); + НастройкиОтчета = НастройкиОтчета(Идентификатор, Неопределено, ОтчетОбъект); Если НастройкиОтчета.События.ПриОпределенииИспользуемыхТаблиц Тогда ОтчетОбъект.ПриОпределенииИспользуемыхТаблиц(Неопределено, ИспользуемыеТаблицы); КонецЕсли; @@ -1045,6 +1046,7 @@ ЗаполнитьЗначенияСвойств(Результат, Параметры); Результат.Успех = Ложь; Результат.СхемаМодифицирована = Ложь; + КлючПредопределенногоВарианта = ""; // Поддержка возможности прямого выбора ссылок дополнительных отчетов в рассылках отчетов. Если ТипЗнч(Результат.НастройкиКД) <> Тип("НастройкиКомпоновкиДанных") @@ -1069,6 +1071,7 @@ Результат.КлючВарианта = ВариантНастроекКД.Имя; Результат.НастройкиКД = ВариантНастроекКД.Настройки; Результат.СсылкаВарианта = ВариантОтчета(Результат.СсылкаОтчета, Результат.КлючВарианта); + КлючПредопределенногоВарианта = Результат.КлючВарианта; КонецЕсли; НадоПрочитатьСсылкуОтчета = (Результат.Объект = Неопределено И Результат.СсылкаОтчета = Неопределено); @@ -1087,9 +1090,17 @@ Возврат Результат; КонецЕсли; КонецЕсли; - ИменаСвойств = "КлючВарианта" + ?(НадоПрочитатьСсылкуОтчета, ", Отчет", "") + ?(НадоПрочитатьНастройки, ", Настройки", ""); + ИменаСвойств = "КлючВарианта, Родитель, Родитель.КлючВарианта" + ?(НадоПрочитатьСсылкуОтчета, ", Отчет", "") + ?(НадоПрочитатьНастройки, ", Настройки", ""); СвойстваВарианта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Результат.СсылкаВарианта, ИменаСвойств); Результат.КлючВарианта = СвойстваВарианта.КлючВарианта; + Если ЗначениеЗаполнено(СвойстваВарианта.Родитель) Тогда + Если ТипЗнч(СвойстваВарианта.РодительКлючВарианта) = Тип("Строка") + И ЗначениеЗаполнено(СвойстваВарианта.РодительКлючВарианта) Тогда + КлючПредопределенногоВарианта = СвойстваВарианта.РодительКлючВарианта; + КонецЕсли; + Иначе + КлючПредопределенногоВарианта = Результат.КлючВарианта; + КонецЕсли; Если НадоПрочитатьСсылкуОтчета Тогда Результат.СсылкаОтчета = СвойстваВарианта.Отчет; КонецЕсли; @@ -1126,7 +1137,8 @@ // Чтение настроек. Если НадоПрочитатьНастройки Тогда ВариантыНастроекКД = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек; - ВариантНастроекКД = ВариантыНастроекКД.Найти(Результат.КлючВарианта); + ВариантНастроекКД = ВариантыНастроекКД.Найти(КлючПредопределенногоВарианта); + Если ВариантНастроекКД = Неопределено Тогда Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Вариант ""%1"" (ключ ""%2"") не существует в схеме отчета ""%3"".'"), @@ -1135,7 +1147,14 @@ Строка(Результат.СсылкаОтчета)); Возврат Результат; КонецЕсли; - Результат.НастройкиКД = ВариантНастроекКД.Настройки; + + Если ВариантыНастроекКД.Количество() = 1 + Или ВариантыНастроекКД.Индекс(ВариантНастроекКД) = 0 Тогда + + Результат.НастройкиКД = КомпоновщикНастроекКД.Настройки; + Иначе + Результат.НастройкиКД = ВариантНастроекКД.Настройки; + КонецЕсли; КонецЕсли; // Инициализация схемы. @@ -1164,6 +1183,11 @@ КомпоновщикНастроекКД.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Результат.АдресСхемы)); КонецЕсли; + ОтчетыСервер.ЗаполнитьДополнительныеСвойства(ОтчетОбъект, + Результат.НастройкиКД, + Результат.КлючВарианта, + КлючПредопределенногоВарианта); + Если Результат.НастройкиФормы.События.ПередЗагрузкойНастроекВКомпоновщик Тогда КлючСхемы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "КлючСхемы"); ОтчетОбъект.ПередЗагрузкойНастроекВКомпоновщик( @@ -1182,6 +1206,10 @@ ОтчетыКлиентСервер.ЗагрузитьНастройки(КомпоновщикНастроекКД, Результат.НастройкиКД, Результат.ПользовательскиеНастройкиКД); + Если Результат.НастройкиФормы.События.ПослеЗагрузкиНастроекВКомпоновщик Тогда + ОтчетОбъект.ПослеЗагрузкиНастроекВКомпоновщик(Новый Структура); + КонецЕсли; + Результат.Успех = Истина; Возврат Результат; КонецФункции @@ -1618,6 +1646,10 @@ Возврат Результат; КонецФункции +Процедура СброситьЗаполнениеПредставлений(Знач Режим) Экспорт + УстановитьПризнакЗаполненияПредставлений(Неопределено, Истина, Режим); +КонецПроцедуры + // Формирует отчет с указанными параметрами. // // Параметры: @@ -1958,8 +1990,8 @@ // Получение метаданных и проверок не требуется. Иначе Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неизвестный тип отчета ""%1"" (ожидался ""Отчет"" или ""ВнешнийОтчет"").'"), - ОтчетПолноеИмя); + НСтр("ru = 'Неизвестный тип отчета ""%1"" (ожидался ""%2"" или ""%3"").'"), + "Отчет", "ВнешнийОтчет", ОтчетПолноеИмя); Если ВызыватьИсключение Тогда ВызватьИсключение Результат.ТекстОшибки; КонецЕсли; @@ -2377,7 +2409,7 @@ Обработчик.ИзменяемыеОбъекты = "Справочник.ВариантыОтчетов"; Обработчик.БлокируемыеОбъекты = "Справочник.ВариантыОтчетов"; Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; - Обработчик.Комментарий = НСтр("ru = 'Установка параметра ИсточникДанных в настройках вариантов универсального отчета. + Обработчик.Комментарий = НСтр("ru = 'Установка источника данных в настройках вариантов универсального отчета. |После завершения обработки, переименование объектов метаданных не приведет к потере сохраненных вариантов отчетов'"); Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика(); @@ -2385,6 +2417,12 @@ Приоритет.Процедура = "РегистрыСведений.НастройкиВариантовОтчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию"; Приоритет.Порядок = "До"; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить(); + НоваяСтрока.Процедура = "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию"; + НоваяСтрока.Порядок = "До"; + КонецЕсли; + // 3.5. Зарегистрировать настройки доступности вариантов отчетов в разрезе пользователей (групп пользователей). Обработчик = Обработчики.Добавить(); Обработчик.Версия = "3.1.2.64"; @@ -2405,6 +2443,12 @@ Приоритет.Процедура = "Справочники.ВариантыОтчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию"; Приоритет.Порядок = "После"; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить(); + НоваяСтрока.Процедура = "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию"; + НоваяСтрока.Порядок = "До"; + КонецЕсли; + КонецПроцедуры // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок. @@ -3151,12 +3195,20 @@ КонецФункции // Глобальные клиентские настройки отчетов. +// +// Возвращаемое значение: +// Структура: +// * ВыполнятьЗамеры - Булево +// * ПрефиксЗамеров - Строка +// Функция ПараметрыКлиента() Экспорт ПараметрыКлиента = Новый Структура; ПараметрыКлиента.Вставить("ВыполнятьЗамеры", ВыполнятьЗамеры()); + ПараметрыКлиента.Вставить("ПрефиксЗамеров", ""); Если ПараметрыКлиента.ВыполнятьЗамеры Тогда УстановитьПривилегированныйРежим(Истина); - ПараметрыКлиента.Вставить("ПрефиксЗамеров", СтрЗаменить(ПараметрыСеанса["КомментарийЗамераВремени"], ";", "; ")); + ПараметрыКлиента.ПрефиксЗамеров = СтрЗаменить(ПараметрыСеанса["КомментарийЗамераВремени"], ";", "; "); + УстановитьПривилегированныйРежим(Ложь); КонецЕсли; Возврат ПараметрыКлиента; @@ -3904,8 +3956,33 @@ ЗаполнитьЗначенияСвойств(ВариантОбъект, ОписаниеВарианта, "Отчет, КлючВарианта, Включен, ВидимостьПоУмолчанию, ГруппироватьПоОтчету"); ПоляДляПоиска = ПоляДляПоиска(ВариантОбъект); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + Если ОбщегоНазначения.ЭтоОсновнойЯзык() Тогда + ВариантОбъект.Наименование = ОписаниеВарианта.Наименование; + ВариантОбъект.Описание = ОписаниеВарианта.Описание; + КонецЕсли; + + Если МодульМультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда + ВариантОбъект.НаименованиеЯзык1 = ?(ЗначениеЗаполнено(ОписаниеВарианта.Наименование), ОписаниеВарианта.Наименование, + ВариантОбъект.Наименование); + ВариантОбъект.ОписаниеЯзык1 = ?(ЗначениеЗаполнено(ОписаниеВарианта.Описание), ОписаниеВарианта.Описание, + ВариантОбъект.Описание); + КонецЕсли; + + Если МодульМультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы() = ТекущийЯзык().КодЯзыка Тогда + ВариантОбъект.НаименованиеЯзык2 = ?(ЗначениеЗаполнено(ОписаниеВарианта.Наименование), ОписаниеВарианта.Наименование, + ВариантОбъект.Наименование); + ВариантОбъект.ОписаниеЯзык2 = ?(ЗначениеЗаполнено(ОписаниеВарианта.Описание), ОписаниеВарианта.Описание, + ВариантОбъект.Описание); + КонецЕсли; + КонецЕсли; + ПоляДляПоиска.Наименование = ОписаниеВарианта.Наименование; ПоляДляПоиска.Описание = ОписаниеВарианта.Описание; + УстановитьПоляДляПоиска(ВариантОбъект, ПоляДляПоиска); ВариантОбъект.Родитель = ОписаниеВарианта.ВариантРодитель; @@ -4023,7 +4100,7 @@ | ВариантыОтчетов.Отчет, | ВариантыОтчетов.ТипОтчета, | ВариантыОтчетов.КлючВарианта, - | ВариантыОтчетов.Наименование, + | ВариантыОтчетов.Наименование КАК Наименование, | ВариантыОтчетов.ПредопределенныйВариант, | ВариантыОтчетов.Родитель |ПОМЕСТИТЬ втВариантыОтчетов @@ -4080,11 +4157,44 @@ Запрос.УстановитьПараметр("ПустаяСсылкаВарианта", Справочники.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка()); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ".ПредопределенныеВариантыОтчетов", ".ПредопределенныеВариантыОтчетовРасширений"); КонецЕсли; - Запрос.Текст = ТекстЗапроса; ИзменяемыеРеквизиты = Новый Структура("ПометкаУдаления, Родитель, |Наименование, Отчет, КлючВарианта, ПредопределенныйВариант"); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + + Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПредопределенныеКонфигурации.Наименование КАК Наименование,", + "ПредопределенныеКонфигурации.Наименование КАК Наименование, + |ПредопределенныеКонфигурации.НаименованиеЯзык1 КАК НаименованиеЯзык1, + |ПредопределенныеКонфигурации.НаименованиеЯзык2 КАК НаименованиеЯзык2,"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВариантыОтчетов.Наименование КАК Наименование,", + "ВариантыОтчетов.Наименование КАК Наименование, + |ВариантыОтчетов.НаименованиеЯзык1 КАК НаименованиеЯзык1, + |ВариантыОтчетов.НаименованиеЯзык2 КАК НаименованиеЯзык2,"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "втВариантыОтчетов.Наименование КАК РеквизитНаименование,", + "втВариантыОтчетов.Наименование КАК РеквизитНаименование, + |втВариантыОтчетов.НаименованиеЯзык1 КАК РеквизитНаименованиеЯзык1, + |втВариантыОтчетов.НаименованиеЯзык2 КАК РеквизитНаименованиеЯзык2,"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "втПредопределенные.Наименование КАК Наименование,", + "втПредопределенные.Наименование КАК Наименование, + |втПредопределенные.НаименованиеЯзык1 КАК НаименованиеЯзык1, + |втПредопределенные.НаименованиеЯзык2 КАК НаименованиеЯзык2,"); + + ИзменяемыеРеквизиты.Вставить("НаименованиеЯзык1"); + ИзменяемыеРеквизиты.Вставить("НаименованиеЯзык2"); + + КонецЕсли; + КонецЕсли; + + Запрос.Текст = ТекстЗапроса; + СводнаяТаблицаПредопределенных = Запрос.Выполнить().Выгрузить(); СводнаяТаблицаПредопределенных.Колонки.Добавить("Обработана", Новый ОписаниеТипов("Булево")); СводнаяТаблицаПредопределенных.Колонки.Добавить("Родитель", Новый ОписаниеТипов("СправочникСсылка.ВариантыОтчетов")); @@ -5306,7 +5416,8 @@ ВариантОбъект.КлючВарианта, ВариантОбъект.Отчет); Если ЭтоПредопределенный Тогда ТекстОшибки = ТекстОшибки + Символы.ПС - + НСтр("ru = 'Подробнее - см. процедуру ""НастроитьВариантыОтчетов"" модуля ""ВариантыОтчетовПереопределяемый"".'"); + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Подробнее см. процедуру %1.'"), + "ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов"); КонецЕсли; ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Информация, ТекстОшибки, ВариантОбъект.Ссылка); @@ -5385,19 +5496,40 @@ Результат.Вставить("КлючевыеСлова", ""); Результат.Вставить("Описание", ""); Результат.Вставить("Наименование", ""); - КонецЕсли; + КонецЕсли; - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Или ЭтоПользовательскийВариантОтчета Тогда + // Проверка на подсистему + Если ОбщегоНазначения.ЭтоОсновнойЯзык() Или ЭтоПользовательскийВариантОтчета Тогда ЗаполнитьЗначенияСвойств(Результат, ВариантОтчета); Возврат Результат; - КонецЕсли; + КонецЕсли; - ПредставленияДляЯзыка = ВариантОтчета.Представления.Найти(ТекущийЯзык().КодЯзыка, "КодЯзыка"); - Если ПредставленияДляЯзыка = Неопределено Тогда - Возврат Результат; - КонецЕсли; + СтрокиХранятсяВТабличнойЧасти = Истина; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + Результат.Наименование = ВариантОтчета["Наименование" + СуффиксТекущегоЯзыка]; + Результат.Описание = ВариантОтчета["Описание" + СуффиксТекущегоЯзыка]; + Результат.НаименованияПолей = ВариантОтчета["НаименованияПолей" + СуффиксТекущегоЯзыка]; + Результат.КлючевыеСлова = ВариантОтчета["КлючевыеСлова" + СуффиксТекущегоЯзыка]; + Результат.НаименованияПараметровИОтборов = ВариантОтчета["НаименованияПараметровИОтборов" + СуффиксТекущегоЯзыка]; + СтрокиХранятсяВТабличнойЧасти = Ложь; + КонецЕсли; + + КонецЕсли; + + Если СтрокиХранятсяВТабличнойЧасти Тогда + ПредставленияДляЯзыка = ВариантОтчета.Представления.Найти(ТекущийЯзык().КодЯзыка, "КодЯзыка"); + Если ПредставленияДляЯзыка = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(Результат, ПредставленияДляЯзыка); + КонецЕсли; - ЗаполнитьЗначенияСвойств(Результат, ПредставленияДляЯзыка); Возврат Результат; КонецФункции @@ -5405,15 +5537,15 @@ Процедура УстановитьПоляДляПоиска(ВариантОтчета, ПоляДляПоиска) ЭтоПользовательскийВариантОтчета = (ТипЗнч(ВариантОтчета) = Тип("СправочникОбъект.ВариантыОтчетов")); - Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Или ЭтоПользовательскийВариантОтчета Тогда + Если ОбщегоНазначения.ЭтоОсновнойЯзык() Или ЭтоПользовательскийВариантОтчета Тогда ЗаполнитьЗначенияСвойств(ВариантОтчета, ПоляДляПоиска); Возврат; - КонецЕсли; + КонецЕсли; ПредставленияДляЯзыка = ВариантОтчета.Представления.Найти(ТекущийЯзык().КодЯзыка, "КодЯзыка"); Если ПредставленияДляЯзыка = Неопределено Тогда ПредставленияДляЯзыка = ВариантОтчета.Представления.Добавить(); - КонецЕсли; + КонецЕсли; ЗаполнитьЗначенияСвойств(ПредставленияДляЯзыка, ПоляДляПоиска); ПредставленияДляЯзыка.КодЯзыка = ТекущийЯзык().КодЯзыка; @@ -5657,59 +5789,192 @@ // ОтчетОбъект - ОтчетОбъект // // Возвращаемое значение: -// Структура: -// * ФормироватьСразу - Булево -// * ВыводитьСуммуВыделенныхЯчеек - Булево -// * РазрешеноИзменятьСтруктуру - Булево -// * РазрешеноИзменятьВарианты - Булево -// * РазрешеноВыбиратьИНастраиватьВариантыБезСохранения - Булево -// * ЗагрузитьНастройкиПриИзмененииПараметров - Массив -// * СкрытьКомандыРассылки - Булево -// * РазрешеноВыбиратьВарианты - Булево -// * СхемаМодифицирована - Булево -// * АдресСхемы - Строка -// * КлючСхемы - Строка -// * Контекстный - Булево -// * Внешний - Булево -// * ПолноеИмя - Строка -// * Наименование - Строка -// * ОтчетСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных -// - СправочникСсылка.ИдентификаторыОбъектовРасширений -// - СправочникСсылка.ДополнительныеОтчетыИОбработки -// - Строка -// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных -// - СправочникСсылка.ИдентификаторыОбъектовРасширений -// * Безопасный - Булево -// * ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек - Булево -// * Печать - Структура: -// ** ПолеСверху - Число -// ** ПолеСлева - Число -// ** ПолеСнизу - Число -// ** ПолеСправа - Число -// ** ОриентацияСтраницы - ОриентацияСтраницы -// ** АвтоМасштаб - Булево -// ** МасштабПечати - Число -// * События - Структура: -// ** ПриСозданииНаСервере - Булево -// ** ПередЗагрузкойНастроекВКомпоновщик - Булево -// ** ПередЗагрузкойВариантаНаСервере - Булево -// ** ПриЗагрузкеВариантаНаСервере - Булево -// ** ПриЗагрузкеПользовательскихНастроекНаСервере - Булево -// ** ПередЗаполнениемПанелиБыстрыхНастроек - Булево -// ** ПослеЗаполненияПанелиБыстрыхНастроек - Булево -// ** ПриОпределенииПараметровВыбора - Булево -// ** ПриОпределенииИспользуемыхТаблиц - Булево -// * ПредопределенныеВарианты - СписокЗначений: -// ** Значение - Строка -// * ПараметрыРасположенияЭлементовУправления - Структура: -// ** Отбор - Массив -// ** ПараметрыДанных - Структура: -// *** Поле - Строка -// *** РастягиватьПоГоризонтали - Булево -// *** АвтоМаксимальнаяШирина - Булево -// *** Ширина - Число +// Структура - НастройкиОтчета в форме отчета и в форме настроек отчета (хранятся в данных формы): +// * ВариантСсылка - Неопределено +// - СправочникСсылка.ВариантыОтчетов +// * ПредопределенныйСсылка - Неопределено +// - СправочникСсылка.ПредопределенныеВариантыОтчетов +// - СправочникСсылка.ПредопределенныеВариантыОтчетовРасширений +// * КлючПредопределенногоВарианта - Неопределено +// - Строка +// * Пользовательский - Булево +// * ТипОтчета - СправочникСсылка.ПредопределенныеВариантыОтчетов, +// - СправочникСсылка.ПредопределенныеВариантыОтчетовРасширений +// - Неопределено +// * РазрешеноВыбиратьВарианты - Булево +// * СхемаМодифицирована - Булево +// * ПредопределенныеВарианты - СписокЗначений: +// ** Значение - Строка - имя варианта +// ** Представление - Строка - представление варианта +// * АдресСхемы - Строка - адрес временного хранилища ОтчетОбъект, +// полученный как РеквизитФормыВЗначение("Отчет"). +// * КлючСхемы - Строка +// * Контекстный - Булево - Истина, когда заполнен КонтекстВарианта. +// * ПолноеИмя - Строка - полное имя объекта метаданных отчета. +// * Наименование - Строка - представление объекта метаданных отчета. +// * ОтчетСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - Строка - полное имя внешнего отчета. +// * Внешний - Булево - если ОтчетСсылка имеет тип Строка. +// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - параметр Подсистема формы отчета. +// * Безопасный - Булево - если при создании формы БезопасныйРежим() <> Ложь +// * ИспользуемыеТаблицы - Массив из Строка - полные имена таблиц объектов метаданных +// - Неопределено +// * СвойстваРезультата - см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета +// * ИспользуемыеПоляУниверсальногоПоискаПоТипам - Соответствие +// * СобытияНастроек - Соответствие из КлючИЗначение: +// ** Ключ - Строка - имя события (действия) +// ** Значение - Строка - представление события (действия) +// * НовыеНастройкиXML - Неопределено - нет настроек +// - Строка +// * НовыеПользовательскиеНастройкиXML - Неопределено - нет настроек +// - Строка +// * ФормаНастроекРасширенныйРежим - Число - 0 - обычный, 1 - расширенный. +// * ФормаНастроекИмяСтраницы - Строка +// * КлючЗамеров - Неопределено +// - Строка +// +// Далее свойства из ВариантыОтчетов.ПараметрыКлиента. +// * ВыполнятьЗамеры - Булево +// * ПрефиксЗамеров - Строка +// +// Далее свойства из ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию. +// * ФормироватьСразу - Булево +// * ВыводитьСуммуВыделенныхЯчеек - Булево +// * РазрешеноИзменятьСтруктуру - Булево +// * РазрешеноИзменятьВарианты - Булево +// * РазрешеноВыбиратьИНастраиватьВариантыБезСохранения - Булево +// * ПараметрыРасположенияЭлементовУправления - Структура +// - Неопределено +// * ЗагрузитьНастройкиПриИзмененииПараметров - Массив +// * ПоляПоиска - Массив из Строка +// * ВариантПредставленияПериода - ПеречислениеСсылка.ВариантыПредставленияПериода +// * ВариантПериода - ПеречислениеСсылка.ВариантыПериода +// * СкрытьКомандыРассылки - Булево +// * Печать - Структура: +// ** ПолеСверху - Число +// ** ПолеСлева - Число +// ** ПолеСнизу - Число +// ** ПолеСправа - Число +// ** ОриентацияСтраницы - ОриентацияСтраницы +// ** АвтоМасштаб - Булево +// ** МасштабПечати - Число +// * События - Структура: +// ** ПриСозданииНаСервере - Булево +// ** ПередЗагрузкойНастроекВКомпоновщик - Булево +// ** ПослеЗагрузкиНастроекВКомпоновщик - Булево +// ** ПередЗагрузкойВариантаНаСервере - Булево +// ** ПриЗагрузкеВариантаНаСервере - Булево +// ** ПриЗагрузкеПользовательскихНастроекНаСервере - Булево +// ** ПередЗаполнениемПанелиБыстрыхНастроек - Булево +// ** ПослеЗаполненияПанелиБыстрыхНастроек - Булево +// ** ПриОпределенииПараметровВыбора - Булево +// ** ПриОпределенииИспользуемыхТаблиц - Булево +// ** ПриОпределенииОсновныхПолей - Булево +// ** ПередФормированиемОтчета - Булево // Функция НастройкиФормыОтчета(ОтчетСсылка, КлючВарианта, ОтчетОбъект) Экспорт + + ОтчетМетаданные = ОтчетОбъект.Метаданные(); + + ПредопределенныеВарианты = Новый СписокЗначений; + Если ОтчетОбъект.СхемаКомпоновкиДанных <> Неопределено Тогда + Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл + ПредопределенныеВарианты.Добавить(Вариант.Имя, Вариант.Представление); + КонецЦикла; + КонецЕсли; + + Настройки = НастройкиОтчета(ОтчетСсылка, КлючВарианта, ОтчетОбъект); + + Настройки.Вставить("ВариантСсылка", Неопределено); + Настройки.Вставить("ПредопределенныйСсылка", Неопределено); + Настройки.Вставить("КлючПредопределенногоВарианта", Неопределено); + Настройки.Вставить("Пользовательский", Ложь); + Настройки.Вставить("ТипОтчета", Неопределено); + Настройки.Вставить("РазрешеноВыбиратьВарианты", Истина); + Настройки.Вставить("СхемаМодифицирована", Ложь); + Настройки.Вставить("ПредопределенныеВарианты", ПредопределенныеВарианты); + Настройки.Вставить("АдресСхемы", ""); + Настройки.Вставить("КлючСхемы", ""); + Настройки.Вставить("Контекстный", Ложь); + Настройки.Вставить("ПолноеИмя", ОтчетМетаданные.ПолноеИмя()); + Настройки.Вставить("Наименование", СокрЛП(ОтчетМетаданные.Представление())); + Настройки.Вставить("ОтчетСсылка", ОтчетСсылка); + Настройки.Вставить("Подсистема", Неопределено); + Настройки.Вставить("Внешний", ТипЗнч(Настройки.ОтчетСсылка) = Тип("Строка")); + Настройки.Вставить("Безопасный", БезопасныйРежим() <> Ложь); + Настройки.Вставить("ИспользуемыеТаблицы", Неопределено); + Настройки.Вставить("СвойстваРезультата", ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета()); + Настройки.Вставить("ИспользуемыеПоляУниверсальногоПоискаПоТипам", Новый Соответствие); + Настройки.Вставить("СобытияНастроек", Новый Соответствие); + Настройки.Вставить("ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек", Истина); + Настройки.Вставить("НовыеНастройкиXML", Неопределено); + Настройки.Вставить("НовыеПользовательскиеНастройкиXML", Неопределено); + Настройки.Вставить("ФормаНастроекРасширенныйРежим", 0); + Настройки.Вставить("ФормаНастроекИмяСтраницы", "СтраницаОтборы"); + Настройки.Вставить("КлючЗамеров", Неопределено); + + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Настройки, ПараметрыКлиента()); + + Возврат Настройки; + +КонецФункции + +// Параметры: +// ПараметрыФормы - Структура +// +// Возвращаемое значение: +// Структура: +// * СформироватьПриОткрытии - Булево +// * Отбор - Структура - отбор, передаваемый в форму +// * Расшифровка - Неопределено +// - ОписаниеОбработкиРасшифровкиКомпоновкиДанных +// * КлючНазначенияИспользования - Строка +// * КлючПользовательскихНастроек - Строка +// * ТолькоПросмотр - Булево +// * ФиксированныеНастройки - Неопределено +// - НастройкиКомпоновкиДанных +// * Раздел - Строка +// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ПодсистемаПредставление - Строка +// * НачальныйКлючВарианта - Строка +// +Функция СохраняемыеПараметрыФормыОтчета(ПараметрыФормы) Экспорт + + Параметры = Новый Структура; + Параметры.Вставить("СформироватьПриОткрытии", Ложь); + Параметры.Вставить("Отбор", Новый Структура); + Параметры.Вставить("Расшифровка", Неопределено); + Параметры.Вставить("КлючНазначенияИспользования", ""); + Параметры.Вставить("КлючПользовательскихНастроек", ""); + Параметры.Вставить("ТолькоПросмотр", Ложь); + Параметры.Вставить("ФиксированныеНастройки", Неопределено); + Параметры.Вставить("Раздел", Неопределено); + Параметры.Вставить("Подсистема", Неопределено); + Параметры.Вставить("ПодсистемаПредставление", ""); + Параметры.Вставить("НачальныйКлючВарианта", ""); + + ЗаполнитьЗначенияСвойств(Параметры, ПараметрыФормы,, "Отбор"); + Если ТипЗнч(ПараметрыФормы.Отбор) = Тип("Структура") Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Параметры.Отбор, ПараметрыФормы.Отбор, Истина); + ПараметрыФормы.Отбор.Очистить(); + КонецЕсли; + + Возврат Параметры; + +КонецФункции + +// Параметры: +// ОтчетСсылка - СправочникСсылка.ВариантыОтчетов +// КлючВарианта - Строка +// ОтчетОбъект - ОтчетОбъект +// +// Возвращаемое значение: +// см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию +// +Функция НастройкиОтчета(ОтчетСсылка, КлючВарианта, ОтчетОбъект) НастройкиОтчета = ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию(); ОтчетыСНастройками = ВариантыОтчетовПовтИсп.Параметры().ОтчетыСНастройками; @@ -5734,7 +5999,11 @@ Попытка ОтчетОбъект.ОпределитьНастройкиФормы(Неопределено, КлючВарианта, НастройкиОтчета); Исключение - НастройкиОтчета = ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию(); + Если ЭтоВнешнийОтчет(ОтчетОбъект) Тогда + НастройкиОтчета = ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию(); + Иначе + ВызватьИсключение; + КонецЕсли; КонецПопытки; Если Не ГлобальныеНастройки().РазрешеноИзменятьВарианты Тогда @@ -5744,6 +6013,19 @@ Возврат НастройкиОтчета; КонецФункции +Функция ЭтоВнешнийОтчет(ОтчетОбъект) + Если ОтчетОбъект = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ИмяОтчета = ОтчетОбъект.Метаданные().Имя; + Если Метаданные.Отчеты.Найти(ИмяОтчета) <> Неопределено + И ТипЗнч(ОтчетОбъект) = Тип("ОтчетОбъект." + ИмяОтчета) Тогда + Возврат Ложь; + КонецЕсли; + Возврат Истина; +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Поиск. @@ -5892,7 +6174,6 @@ Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); Запрос.УстановитьПараметр("ПредставленияПодсистем", ВариантыОтчетовПовтИсп.ПредставленияПодсистем()); Запрос.УстановитьПараметр("Контекст", ?(ЕстьОтборПоКонтексту, ПараметрыПоиска.Контекст, "")); - Если ЕстьОтборПоПодсистемам Или ЕстьСтрокаПоиска Тогда Если ЕстьОтборПоПодсистемам Тогда @@ -5919,8 +6200,38 @@ ЕстьПравоЧтенияАвторов); Иначе ТекстЗапроса = ТекстЗапросаОтчетовСПростымиОтборами(); + Если ПараметрыПоиска.Свойство("КлючВариантаБезУсловий") + И ЗначениеЗаполнено(ПараметрыПоиска.КлючВариантаБезУсловий) Тогда + + Запрос.УстановитьПараметр("КлючВариантаБезУсловий", ПараметрыПоиска.КлючВариантаБезУсловий); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборКлючВариантаБезУсловий", + "ВариантыОтчетов.КлючВарианта = &КлючВариантаБезУсловий"); + Иначе + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборКлючВариантаБезУсловий", "ЛОЖЬ"); + КонецЕсли; КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыОтчетов.Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыОтчетов.Описание"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыКонфигурации.Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыКонфигурации.Описание"); + + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыРасширений.Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыРасширений.Описание"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыРасширений.НаименованияПолей"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыРасширений.НаименованияПараметровИОтборов"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВариантыРасширений.КлючевыеСлова"); + + + КонецЕсли; + КонецЕсли; + УстановитьПривилегированныйРежим(Истина); Запрос.Текст = ТекстЗапроса; @@ -5959,11 +6270,11 @@ ШаблонПоиска = СтрСоединить(ШаблоныПоиска, " ИЛИ "); // не локализуется (фрагмент текста запроса) ТекстыПоиска = Новый Массив; - ТекстыПоиска.Добавить("ВариантыОтчетов.НаименованиеВарианта"); + ТекстыПоиска.Добавить("ВариантыОтчетов.ТекущиеНаименованиеВарианта"); ТекстыПоиска.Добавить("Размещение.НаименованиеПодсистемы"); ТекстыПоиска.Добавить("ВариантыОтчетов.НаименованияПолей"); ТекстыПоиска.Добавить("ВариантыОтчетов.НаименованияПараметровИОтборов"); - ТекстыПоиска.Добавить("ВариантыОтчетов.Описание"); + ТекстыПоиска.Добавить("ВариантыОтчетов.ТекущиеОписаниеВарианта"); ТекстыПоиска.Добавить("ВариантыОтчетов.КлючевыеСлова"); Если ПравоЧтенияАвторов Тогда ТекстыПоиска.Добавить("ВариантыОтчетов.Автор.Наименование"); @@ -5997,125 +6308,216 @@ Функция ТекстЗапросаОтчетовСУточненнымиОтборами() - Возврат "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ВариантыОтчетов.Ссылка КАК Ссылка, - | ВариантыОтчетов.Родитель КАК Родитель, - | ВЫБОР - | КОГДА &ЕстьПравоЧтенияАвторов - | ТОГДА ВариантыОтчетов.Автор - | ИНАЧЕ НЕОПРЕДЕЛЕНО - | КОНЕЦ КАК Автор, - | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, - | ВариантыОтчетов.Отчет КАК Отчет, - | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, - | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, - | ВариантыОтчетов.Пользовательский КАК Пользовательский, - | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, - | ВЫБОР - | КОГДА ВариантыОтчетов.Пользовательский - | ТОГДА ВариантыОтчетов.ИнтерактивнаяПометкаУдаления - | КОГДА ВариантыОтчетов.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Расширение) - | ТОГДА ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL - | ИНАЧЕ ЕСТЬNULL(ВариантыКонфигурации.ПометкаУдаления, ВариантыОтчетов.ПометкаУдаления) - | КОНЕЦ КАК ПометкаУдаления, - | ВЫБОР - | КОГДА &НеПолучатьОписания - | ТОГДА НЕОПРЕДЕЛЕНО - | КОГДА &ЭтоОсновнойЯзык - | И (ВариантыОтчетов.Пользовательский - | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - | НЕОПРЕДЕЛЕНО, - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - | ТОГДА ВариантыОтчетов.Наименование - | КОГДА НЕ &ЭтоОсновнойЯзык - | И (ВариантыОтчетов.Пользовательский - | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - | НЕОПРЕДЕЛЕНО, - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ПредставленияВариантов.Наименование) КАК СТРОКА(1000)) - | КОНЕЦ КАК НаименованиеВарианта, - | ВЫБОР - | КОГДА &НеПолучатьОписания - | ТОГДА НЕОПРЕДЕЛЕНО - | КОГДА &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПолей, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПолей, ВариантыРасширений.НаименованияПолей) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПолей, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.НаименованияПолей, ПредставленияИзРасширений.НаименованияПолей) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) - | КОНЕЦ КАК НаименованияПолей, - | ВЫБОР - | КОГДА &НеПолучатьОписания - | ТОГДА НЕОПРЕДЕЛЕНО - | КОГДА &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПараметровИОтборов, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПараметровИОтборов, ВариантыРасширений.НаименованияПараметровИОтборов) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПараметровИОтборов, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.НаименованияПараметровИОтборов, ПредставленияИзРасширений.НаименованияПараметровИОтборов) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) - | КОНЕЦ КАК НаименованияПараметровИОтборов, - | ВЫБОР - | КОГДА &НеПолучатьОписания - | ТОГДА НЕОПРЕДЕЛЕНО - | КОГДА &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.КлючевыеСлова, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.КлючевыеСлова, ВариантыРасширений.КлючевыеСлова) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык - | И ПОДСТРОКА(ВариантыОтчетов.КлючевыеСлова, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.КлючевыеСлова, ПредставленияИзРасширений.КлючевыеСлова) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) - | КОНЕЦ КАК КлючевыеСлова, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОНЕЦ КАК Описание - |ПОМЕСТИТЬ ВариантыОтчетов - |ИЗ - | Справочник.ВариантыОтчетов КАК ВариантыОтчетов - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ДоступныеВариантыРасширений.Вариант - | И ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов - | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка - | И ПредставленияВариантов.КодЯзыка = &КодЯзыка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка - | И ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка - | И ПредставленияИзРасширений.КодЯзыка = &КодЯзыка - |ГДЕ - | (НЕ &ЕстьОтборПоТипамОтчетов - | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) - | И ВариантыОтчетов.Отчет В (&ОтчетыПользователя) - | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) - | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов - | ИЛИ ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ - | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) - | И ВариантыОтчетов.Контекст = &Контекст - | - |ИНДЕКСИРОВАТЬ ПО - | Ссылка - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка <> Неопределено Тогда + + ТекстЗапросаПредварительный = "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ВариантыОтчетов.Автор + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК Автор, + | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, + | ВариантыОтчетов.Отчет КАК Отчет, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.Пользовательский КАК Пользовательский, + | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, + | ВЫБОР + | КОГДА ВариантыОтчетов.Пользовательский + | ТОГДА ВариантыОтчетов.ИнтерактивнаяПометкаУдаления + | КОГДА ВариантыОтчетов.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Расширение) + | ТОГДА ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL + | ИНАЧЕ ЕСТЬNULL(ВариантыКонфигурации.ПометкаУдаления, ВариантыОтчетов.ПометкаУдаления) + | КОНЕЦ КАК ПометкаУдаления, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВариантыОтчетов.Наименование + | ИНАЧЕ ВариантыОтчетов.Наименование + | КОНЕЦ КАК ТекущиеНаименованиеВарианта, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА ПОДСТРОКА(ВариантыОтчетов.НаименованияПолей, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПолей, ВариантыРасширений.НаименованияПолей) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) + | КОНЕЦ КАК НаименованияПолей, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА ПОДСТРОКА(ВариантыОтчетов.НаименованияПараметровИОтборов, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПараметровИОтборов, ВариантыРасширений.НаименованияПараметровИОтборов) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) + | КОНЕЦ КАК НаименованияПараметровИОтборов, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА ПОДСТРОКА(ВариантыОтчетов.КлючевыеСлова, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.КлючевыеСлова, ВариантыРасширений.КлючевыеСлова) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) + | КОНЕЦ КАК КлючевыеСлова, + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ КАК ТекущиеОписаниеВарианта + |ПОМЕСТИТЬ ВариантыОтчетов + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ДоступныеВариантыРасширений.Вариант + | И ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + |ГДЕ + | (НЕ &ЕстьОтборПоТипамОтчетов + | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) + | И ВариантыОтчетов.Отчет В (&ОтчетыПользователя) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ИЛИ ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И ВариантыОтчетов.Контекст = &Контекст + | + |ИНДЕКСИРОВАТЬ ПО + | Ссылка + |"; + + Иначе + + ТекстЗапросаПредварительный = "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ВариантыОтчетов.Автор + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК Автор, + | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, + | ВариантыОтчетов.Отчет КАК Отчет, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.Пользовательский КАК Пользовательский, + | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, + | ВЫБОР + | КОГДА ВариантыОтчетов.Пользовательский + | ТОГДА ВариантыОтчетов.ИнтерактивнаяПометкаУдаления + | КОГДА ВариантыОтчетов.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Расширение) + | ТОГДА ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL + | ИНАЧЕ ЕСТЬNULL(ВариантыКонфигурации.ПометкаУдаления, ВариантыОтчетов.ПометкаУдаления) + | КОНЕЦ КАК ПометкаУдаления, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВариантыОтчетов.Наименование + | КОГДА НЕ &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ПредставленияВариантов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК ТекущиеНаименованиеВарианта, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПолей, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПолей, ВариантыРасширений.НаименованияПолей) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПолей, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.НаименованияПолей, ПредставленияИзРасширений.НаименованияПолей) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) + | КОНЕЦ КАК НаименованияПолей, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПараметровИОтборов, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.НаименованияПараметровИОтборов, ВариантыРасширений.НаименованияПараметровИОтборов) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.НаименованияПараметровИОтборов, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.НаименованияПараметровИОтборов, ПредставленияИзРасширений.НаименованияПараметровИОтборов) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) + | КОНЕЦ КАК НаименованияПараметровИОтборов, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.КлючевыеСлова, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.КлючевыеСлова, ВариантыРасширений.КлючевыеСлова) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык + | И ПОДСТРОКА(ВариантыОтчетов.КлючевыеСлова, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.КлючевыеСлова, ПредставленияИзРасширений.КлючевыеСлова) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) + | КОНЕЦ КАК КлючевыеСлова, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ КАК ТекущиеОписаниеВарианта + |ПОМЕСТИТЬ ВариантыОтчетов + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ДоступныеВариантыРасширений.Вариант + | И ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + | И ПредставленияВариантов.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка + | И ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка + | И ПредставленияИзРасширений.КодЯзыка = &КодЯзыка + |ГДЕ + | (НЕ &ЕстьОтборПоТипамОтчетов + | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) + | И ВариантыОтчетов.Отчет В (&ОтчетыПользователя) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ИЛИ ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И ВариантыОтчетов.Контекст = &Контекст + | + |ИНДЕКСИРОВАТЬ ПО + | Ссылка + |"; + + КонецЕсли; + + ТекстЗапросаОбщий = "ВЫБРАТЬ | ПредставленияПодсистем.Ссылка КАК Ссылка, | ПредставленияПодсистем.Представление КАК Представление |ПОМЕСТИТЬ ПредставленияПодсистем @@ -6239,7 +6641,7 @@ |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВариантыОтчетов.Ссылка КАК Ссылка, | ВариантыОтчетов.Родитель КАК Родитель, - | ВариантыОтчетов.НаименованиеВарианта КАК НаименованиеВарианта, + | ВариантыОтчетов.ТекущиеНаименованиеВарианта КАК НаименованиеВарианта, | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, | ВЫБОР | КОГДА &ЕстьПравоЧтенияАвторов @@ -6264,7 +6666,7 @@ | ВариантыОтчетов.НаименованияПараметровИОтборов КАК НаименованияПараметровИОтборов, | ВариантыОтчетов.НаименованияПолей КАК НаименованияПолей, | ВариантыОтчетов.КлючевыеСлова КАК КлючевыеСлова, - | ВариантыОтчетов.Описание КАК Описание, + | ВариантыОтчетов.ТекущиеОписаниеВарианта КАК Описание, | Размещение.Подсистема КАК Подсистема, | Размещение.НаименованиеПодсистемы КАК НаименованиеПодсистемы, | НЕОПРЕДЕЛЕНО КАК КлючПользовательскойНастройки, @@ -6315,111 +6717,205 @@ | И Пользовательские.Пользователь = &ТекущийПользователь | И &ПользовательскиеНастройкиПоСтрокеПоиска"; + Возврат ТекстЗапросаПредварительный + ОбщегоНазначения.РазделительПакетаЗапросов() + ТекстЗапросаОбщий; + КонецФункции Функция ТекстЗапросаОтчетовСПростымиОтборами() - ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ - | ВариантыОтчетов.Ссылка КАК Ссылка, - | ВариантыОтчетов.Родитель КАК Родитель, - | ВЫБОР - | КОГДА &НеПолучатьОписания - | ТОГДА НЕОПРЕДЕЛЕНО - | КОГДА &ЭтоОсновнойЯзык - | И НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL - | ТОГДА ВариантыОтчетов.Наименование - | КОГДА НЕ &ЭтоОсновнойЯзык - | И НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ПредставленияВариантов.Наименование) КАК СТРОКА(1000)) - | КОНЕЦ КАК Наименование, - | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, - | ВЫБОР - | КОГДА &ЕстьПравоЧтенияАвторов - | ТОГДА ВариантыОтчетов.Автор - | ИНАЧЕ НЕОПРЕДЕЛЕНО - | КОНЕЦ КАК Автор, - | ВЫБОР - | КОГДА &ЕстьПравоЧтенияАвторов - | ТОГДА ПРЕДСТАВЛЕНИЕ(ВариантыОтчетов.Автор) - | ИНАЧЕ """" - | КОНЕЦ КАК АвторПредставление, - | ВариантыОтчетов.Отчет КАК Отчет, - | &ИмяОтчета КАК ИмяОтчета, - | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, - | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, - | ВариантыОтчетов.Пользовательский КАК Пользовательский, - | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, - | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) КАК НаименованияПараметровИОтборов, - | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) КАК НаименованияПолей, - | ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) КАК КлючевыеСлова, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОНЕЦ КАК Описание, - | НЕОПРЕДЕЛЕНО КАК Подсистема, - | """" КАК НаименованиеПодсистемы, - | НЕОПРЕДЕЛЕНО КАК КлючПользовательскойНастройки, - | НЕОПРЕДЕЛЕНО КАК ПредставлениеПользовательскойНастройки, - | ВариантыОтчетов.ПометкаУдаления КАК ПометкаУдаления - |ИЗ - | Справочник.ВариантыОтчетов КАК ВариантыОтчетов - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов - | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка - | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка - | И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка - | И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК ГруппыТекущегоПользователя - | ПО ГруппыТекущегоПользователя.Пользователь = &ТекущийПользователь - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей - | ПО СоставыГруппПользователей.ГруппаПользователей = ГруппыТекущегоПользователя.ГруппаПользователей - | И &ПоказыватьЛичныеВариантыОтчетовДругихАвторов - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ДоступныеВариантыОтчетов - | ПО ДоступныеВариантыОтчетов.Вариант = ВариантыОтчетов.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ПользовательскиеВариантыОтчетов - | ПО ПользовательскиеВариантыОтчетов.Ссылка = ВариантыОтчетов.Ссылка - | И (ПользовательскиеВариантыОтчетов.Пользовательский - | ИЛИ ПользовательскиеВариантыОтчетов.ПредопределенныйВариант В ( - | НЕОПРЕДЕЛЕНО, - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - |ГДЕ - | ВариантыОтчетов.Отчет В (&ОтчетыПользователя) - | И (НЕ &ЕстьОтборПоТипамОтчетов - | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) - | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) - | И (НЕ ВариантыОтчетов.Пользовательский - | ИЛИ &НетОтбораПоПометкеУдаления - | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) - | И (ВариантыОтчетов.Пользовательский - | ИЛИ &НетОтбораПоПометкеУдаления - | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) - | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов - | ИЛИ НЕ ВариантыОтчетов.ТолькоДляАвтора - | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) - | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Пользователь, НЕОПРЕДЕЛЕНО) В (СоставыГруппПользователей.Пользователь, &ТекущийПользователь, НЕОПРЕДЕЛЕНО) - | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Видимость, ИСТИНА) - | И (&ЕстьОтборПоКонтексту - | И (ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL - | ИЛИ НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL - | И ВариантыОтчетов.Контекст = &Контекст) - | ИЛИ НЕ &ЕстьОтборПоКонтексту)"; + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка <> Неопределено Тогда + + ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | ТОГДА ВариантыОтчетов.Наименование + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) + | КОНЕЦ КАК Наименование, + | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ВариантыОтчетов.Автор + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК Автор, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ПРЕДСТАВЛЕНИЕ(ВариантыОтчетов.Автор) + | ИНАЧЕ """" + | КОНЕЦ КАК АвторПредставление, + | ВариантыОтчетов.Отчет КАК Отчет, + | &ИмяОтчета КАК ИмяОтчета, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.Пользовательский КАК Пользовательский, + | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, + | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) КАК НаименованияПараметровИОтборов, + | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) КАК НаименованияПолей, + | ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) КАК КлючевыеСлова, + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | НЕОПРЕДЕЛЕНО КАК Подсистема, + | """" КАК НаименованиеПодсистемы, + | НЕОПРЕДЕЛЕНО КАК КлючПользовательскойНастройки, + | НЕОПРЕДЕЛЕНО КАК ПредставлениеПользовательскойНастройки, + | ВариантыОтчетов.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК ГруппыТекущегоПользователя + | ПО ГруппыТекущегоПользователя.Пользователь = &ТекущийПользователь + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО СоставыГруппПользователей.ГруппаПользователей = ГруппыТекущегоПользователя.ГруппаПользователей + | И &ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ДоступныеВариантыОтчетов + | ПО ДоступныеВариантыОтчетов.Вариант = ВариантыОтчетов.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ПользовательскиеВариантыОтчетов + | ПО ПользовательскиеВариантыОтчетов.Ссылка = ВариантыОтчетов.Ссылка + | И (ПользовательскиеВариантыОтчетов.Пользовательский + | ИЛИ ПользовательскиеВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + |ГДЕ + | ВариантыОтчетов.Отчет В (&ОтчетыПользователя) + | И (НЕ &ЕстьОтборПоТипамОтчетов + | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (НЕ ВариантыОтчетов.Пользовательский + | ИЛИ &НетОтбораПоПометкеУдаления + | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) + | И (ВариантыОтчетов.Пользовательский + | ИЛИ &НетОтбораПоПометкеУдаления + | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) + | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ИЛИ НЕ ВариантыОтчетов.ТолькоДляАвтора + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Пользователь, НЕОПРЕДЕЛЕНО) В (СоставыГруппПользователей.Пользователь, &ТекущийПользователь, НЕОПРЕДЕЛЕНО) + | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Видимость, ИСТИНА) + | И (&ЕстьОтборПоКонтексту + | И (ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | ИЛИ НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | И ВариантыОтчетов.Контекст = &Контекст) + | ИЛИ НЕ &ЕстьОтборПоКонтексту)"; + + Иначе + + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВЫБОР + | КОГДА &НеПолучатьОписания + | ТОГДА НЕОПРЕДЕЛЕНО + | КОГДА &ЭтоОсновнойЯзык + | И НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | ТОГДА ВариантыОтчетов.Наименование + | КОГДА НЕ &ЭтоОсновнойЯзык + | И НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияВариантов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ПредставленияВариантов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ВариантыОтчетов.Автор + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК Автор, + | ВЫБОР + | КОГДА &ЕстьПравоЧтенияАвторов + | ТОГДА ПРЕДСТАВЛЕНИЕ(ВариантыОтчетов.Автор) + | ИНАЧЕ """" + | КОНЕЦ КАК АвторПредставление, + | ВариантыОтчетов.Отчет КАК Отчет, + | &ИмяОтчета КАК ИмяОтчета, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.Пользовательский КАК Пользовательский, + | ВариантыОтчетов.ПредопределенныйВариант КАК ПредопределенныйВариант, + | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПараметровИОтборов КАК СТРОКА(1000)) КАК НаименованияПараметровИОтборов, + | ВЫРАЗИТЬ(ВариантыОтчетов.НаименованияПолей КАК СТРОКА(1000)) КАК НаименованияПолей, + | ВЫРАЗИТЬ(ВариантыОтчетов.КлючевыеСлова КАК СТРОКА(1000)) КАК КлючевыеСлова, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | НЕОПРЕДЕЛЕНО КАК Подсистема, + | """" КАК НаименованиеПодсистемы, + | НЕОПРЕДЕЛЕНО КАК КлючПользовательскойНастройки, + | НЕОПРЕДЕЛЕНО КАК ПредставлениеПользовательскойНастройки, + | ВариантыОтчетов.ПометкаУдаления КАК ПометкаУдаления + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка + | И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка + | И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК ГруппыТекущегоПользователя + | ПО ГруппыТекущегоПользователя.Пользователь = &ТекущийПользователь + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО СоставыГруппПользователей.ГруппаПользователей = ГруппыТекущегоПользователя.ГруппаПользователей + | И &ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ДоступныеВариантыОтчетов + | ПО ДоступныеВариантыОтчетов.Вариант = ВариантыОтчетов.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ПользовательскиеВариантыОтчетов + | ПО ПользовательскиеВариантыОтчетов.Ссылка = ВариантыОтчетов.Ссылка + | И (ПользовательскиеВариантыОтчетов.Пользовательский + | ИЛИ ПользовательскиеВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + |ГДЕ + | ВариантыОтчетов.Отчет В (&ОтчетыПользователя) + | И (НЕ &ЕстьОтборПоТипамОтчетов + | ИЛИ ВариантыОтчетов.ТипОтчета В (&ТипыОтчетов)) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (НЕ ВариантыОтчетов.Пользовательский + | ИЛИ &НетОтбораПоПометкеУдаления + | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) + | И (ВариантыОтчетов.Пользовательский + | ИЛИ &НетОтбораПоПометкеУдаления + | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) + | И (&ПоказыватьЛичныеВариантыОтчетовДругихАвторов + | ИЛИ НЕ ВариантыОтчетов.ТолькоДляАвтора + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Пользователь, НЕОПРЕДЕЛЕНО) В (СоставыГруппПользователей.Пользователь, &ТекущийПользователь, НЕОПРЕДЕЛЕНО) + | И ЕСТЬNULL(ДоступныеВариантыОтчетов.Видимость, ИСТИНА) + | И (&ЕстьОтборПоКонтексту + | И (ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | ИЛИ НЕ ПользовательскиеВариантыОтчетов.Ссылка ЕСТЬ NULL + | И ВариантыОтчетов.Контекст = &Контекст) + | ИЛИ НЕ &ЕстьОтборПоКонтексту)"; + + КонецЕсли; ИмяОтчета = "ВЫБОР | КОГДА &ПолучатьИтоговуюТаблицу И ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) @@ -6828,204 +7324,448 @@ // Процедура НайтиВариантыОтчетовДляВывода(ПараметрыЗаполнения, АдресРезультата) Экспорт - #Область ЗапросДоступныхВариантовОтчетов + ТекстЗапроса = ТекстЗапросаДоступныхВариантовОтчетов(); + Запрос = Новый Запрос(ТекстЗапроса); - Запрос = Новый Запрос( - "ВЫБРАТЬ - | Подсистемы.Ссылка КАК Подсистема, - | Подсистемы.РазделСсылка КАК РазделСсылка, - | Подсистемы.Представление КАК Представление, - | Подсистемы.Приоритет КАК Приоритет - |ПОМЕСТИТЬ втПодсистемы - |ИЗ - | &ТаблицаПодсистем КАК Подсистемы - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ВариантыОтчетов.Ссылка КАК Ссылка, - | ПредопределенныеРазмещение.Подсистема КАК Подсистема, - | ПредопределенныеРазмещение.Важный КАК Важный, - | ПредопределенныеРазмещение.СмТакже КАК СмТакже, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(1000)) - | КОНЕЦ КАК Наименование, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОНЕЦ КАК Описание, - | ВариантыОтчетов.Отчет КАК Отчет, - | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, - | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, - | ВариантыОтчетов.Автор КАК Автор, - | ВариантыОтчетов.Родитель КАК Родитель, - | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров - |ПОМЕСТИТЬ втПредопределенные - |ИЗ - | Справочник.ВариантыОтчетов КАК ВариантыОтчетов - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК ПредопределенныеРазмещение - | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) - | ИЛИ (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) - | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка - | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) - | И (ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ) - | И (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) - | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка - | И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов - | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка - | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) - |ГДЕ - | НЕ ВариантыОтчетов.ПометкаУдаления - | - |ОБЪЕДИНИТЬ ВСЕ - | - |ВЫБРАТЬ - | ВариантыОтчетов.Ссылка, - | ПредопределенныеРазмещение.Подсистема, - | ПредопределенныеРазмещение.Важный, - | ПредопределенныеРазмещение.СмТакже, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(1000)) - | КОНЕЦ, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОНЕЦ, - | ВариантыОтчетов.Отчет, - | ВариантыОтчетов.ТипОтчета, - | ВариантыОтчетов.КлючВарианта, - | ВариантыОтчетов.Автор, - | ВариантыОтчетов.Родитель, - | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров - |ИЗ - | Справочник.ВариантыОтчетов КАК ВариантыОтчетов - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК ПредопределенныеРазмещение - | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) - | ИЛИ (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) - | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка - | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) - | И (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) - | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений - | ПО ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений - | И ДоступныеВариантыРасширений.Вариант = ВариантыОтчетов.ПредопределенныйВариант - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений - | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка - | И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов - | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка - | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) - |ГДЕ - | НЕ ВариантыОтчетов.ПометкаУдаления - | ИЛИ НЕ ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ - | РазмещениеОтчетов.Ссылка КАК Ссылка, - | РазмещениеОтчетов.Подсистема КАК Подсистема, - | РазмещениеОтчетов.Использование КАК Использование, - | РазмещениеОтчетов.Важный КАК Важный, - | РазмещениеОтчетов.СмТакже КАК СмТакже, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | И (ВариантыОтчетов.Пользовательский - | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - | НЕОПРЕДЕЛЕНО, - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - | ТОГДА ВариантыОтчетов.Наименование - | КОГДА НЕ &ЭтоОсновнойЯзык - | И (ВариантыОтчетов.Пользовательский - | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( - | НЕОПРЕДЕЛЕНО, - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), - | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияОтчетов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ОтчетыКонфигурации.Наименование, ОтчетыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияОтчетовКонфигурации.Наименование, ПредставленияОтчетовРасширений.Наименование), ПредставленияОтчетов.Наименование) КАК СТРОКА(1000)) - | КОНЕЦ КАК Наименование, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ОтчетыКонфигурации.Описание, ОтчетыРасширений.Описание) КАК СТРОКА(1000)) - | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияОтчетов.Описание, 1, 1) <> """" - | ТОГДА ВЫРАЗИТЬ(ПредставленияОтчетов.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияОтчетовКонфигурации.Описание, ПредставленияОтчетовРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) - | КОНЕЦ КАК Описание, - | ВариантыОтчетов.Отчет, - | ВариантыОтчетов.ТипОтчета, - | ВариантыОтчетов.КлючВарианта, - | ВариантыОтчетов.Автор, - | ВЫБОР - | КОГДА ВариантыОтчетов.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) - | ТОГДА ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) - | КОГДА ВариантыОтчетов.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) - | ТОГДА ВариантыОтчетов.Родитель - | ИНАЧЕ ВариантыОтчетов.Родитель.Родитель - | КОНЕЦ КАК Родитель, - | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров - |ПОМЕСТИТЬ втВарианты - |ИЗ - | Справочник.ВариантыОтчетов.Размещение КАК РазмещениеОтчетов - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов - | ПО ВариантыОтчетов.Ссылка = РазмещениеОтчетов.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияОтчетов - | ПО ПредставленияОтчетов.Ссылка = ВариантыОтчетов.Ссылка - | И ПредставленияОтчетов.КодЯзыка = &КодЯзыка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ОтчетыКонфигурации - | ПО ОтчетыКонфигурации.Ссылка = ВариантыОтчетов.ПредопределенныйВариант - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияОтчетовКонфигурации - | ПО ПредставленияОтчетовКонфигурации.Ссылка = ВариантыОтчетов.ПредопределенныйВариант - | И ПредставленияОтчетовКонфигурации.КодЯзыка = &КодЯзыка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ОтчетыРасширений - | ПО ОтчетыРасширений.Ссылка = ВариантыОтчетов.ПредопределенныйВариант - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияОтчетовРасширений - | ПО ПредставленияОтчетовРасширений.Ссылка = ВариантыОтчетов.ПредопределенныйВариант - | И ПредставленияОтчетовРасширений.КодЯзыка = &КодЯзыка - |ГДЕ - | (РазмещениеОтчетов.Ссылка В (&ВариантыНайденныеПоиском) - | ИЛИ (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ РазмещениеОтчетов.Подсистема В (&ПодсистемыНайденныеПоиском))) - | И РазмещениеОтчетов.Подсистема В (&МассивПодсистем) - | И (НЕ ВариантыОтчетов.ТолькоДляАвтора - | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) - | И (&НетОтбораПоПодсистемамИОтчетам - | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) - | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) - | И (НЕ ВариантыОтчетов.Пользовательский - | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) - | И (ВариантыОтчетов.Пользовательский - | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) - |; - | + ПоискПоСтроке = ЗначениеЗаполнено(ПараметрыЗаполнения.СтрокаПоиска); + ТолькоТекущийРаздел = ПараметрыЗаполнения.РежимНастройки Или Не ПоискПоСтроке Или ПараметрыЗаполнения.ИскатьВоВсехРазделах = 0; + ТаблицаПодсистем = ПараметрыЗаполнения.ПодсистемыПрограммы; // ТаблицаЗначений + ТаблицаПодсистем.Индексы.Добавить("Ссылка"); + МассивПодсистем = ТаблицаПодсистем.ВыгрузитьКолонку("Ссылка"); + + ПараметрыПоиска = Новый Структура; + Если ПоискПоСтроке Тогда + ПараметрыПоиска.Вставить("СтрокаПоиска", ПараметрыЗаполнения.СтрокаПоиска); + КонецЕсли; + Если ТолькоТекущийРаздел Тогда + ПараметрыПоиска.Вставить("Подсистемы", МассивПодсистем); + КонецЕсли; + РезультатПоиска = НайтиВариантыОтчетов(ПараметрыПоиска, Ложь, Истина); + + Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); + Запрос.УстановитьПараметр("МассивПодсистем", МассивПодсистем); + Запрос.УстановитьПараметр("ТаблицаПодсистем", ТаблицаПодсистем); + Запрос.УстановитьПараметр("РазделСсылка", ПараметрыЗаполнения.ТекущийРазделСсылка); + Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык()); + Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); + Запрос.УстановитьПараметр("ВариантыНайденныеПоиском", РезультатПоиска.Ссылки); + Запрос.УстановитьПараметр("ПодсистемыНайденныеПоиском", РезультатПоиска.Подсистемы); + Запрос.УстановитьПараметр("ОтчетыПользователя", ПараметрыПоиска.ОтчетыПользователя); + Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ПараметрыПоиска.ОтключенныеВариантыПрограммы); + Запрос.УстановитьПараметр("НетОтбораПоПодсистемамИОтчетам", Не ПоискПоСтроке И ПараметрыПоиска.Подсистемы.Количество() = 0); + Запрос.УстановитьПараметр("НетОтбораПоВидимости", ПараметрыЗаполнения.РежимНастройки Или ПоискПоСтроке); + Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); + + ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); + ЗаполнитьИменаОтчетов(ТаблицаРезультат); + + ТаблицаРезультат.Колонки.Добавить("ВыводитсяВместеСОсновным", Новый ОписаниеТипов("Булево")); + ТаблицаРезультат.Колонки.Добавить("КоличествоПодчиненных", Новый ОписаниеТипов("Число")); + ТаблицаРезультат.Индексы.Добавить("Ссылка"); + + Если ПоискПоСтроке Тогда + // Удаление записей о вариантах, связанных с подсистемами, если запись не фигурирует в связи. + Для Каждого КлючИЗначение Из РезультатПоиска.ВариантыСвязанныеСПодсистемами Цикл + ВариантСсылка = КлючИЗначение.Ключ; + СвязанныеПодсистемы = КлючИЗначение.Значение; + Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка)); + Для Каждого СтрокаТаблицы Из Найденные Цикл + Если СвязанныеПодсистемы.Найти(СтрокаТаблицы.Подсистема) = Неопределено Тогда + ТаблицаРезультат.Удалить(СтрокаТаблицы); + КонецЕсли; + КонецЦикла; + КонецЦикла; + // Удаление записей о родителях, связанных с вариантами, если родитель пытается вывестись один (без вариантов). + Для Каждого РодительСсылка Из РезультатПоиска.РодителиСвязанныеСВариантами Цикл + МестаВывода = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", РодительСсылка)); + Для Каждого СтрокаТаблицы Из МестаВывода Цикл + Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Подсистема, Родитель", СтрокаТаблицы.Подсистема, РодительСсылка)); + Если Найденные.Количество() = 0 Тогда + ТаблицаРезультат.Удалить(СтрокаТаблицы); + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЕсли; + + Если ТолькоТекущийРаздел Тогда + ДругиеРазделы = Новый Массив; + Иначе + КопияТаблицы = ТаблицаРезультат.Скопировать(); + КопияТаблицы.Свернуть("РазделСсылка"); + ДругиеРазделы = КопияТаблицы.ВыгрузитьКолонку("РазделСсылка"); + Индекс = ДругиеРазделы.Найти(ПараметрыЗаполнения.ТекущийРазделСсылка); + Если Индекс <> Неопределено Тогда + ДругиеРазделы.Удалить(Индекс); + КонецЕсли; + КонецЕсли; + + МассивСлов = ?(ПоискПоСтроке, + ВариантыОтчетовКлиентСервер.РазложитьСтрокуПоискаВМассивСлов(ВРег(СокрЛП(ПараметрыЗаполнения.СтрокаПоиска))), + Неопределено); + + Результат = ВариантыОтчетовДляВывода(); + Результат.ТолькоТекущийРаздел = ТолькоТекущийРаздел; + Результат.ТаблицаПодсистем = ТаблицаПодсистем; + Результат.ДругиеРазделы = ДругиеРазделы; + Результат.Варианты = ТаблицаРезультат; + Результат.ИспользоватьПодсветку = ПоискПоСтроке; + Результат.РезультатПоиска = РезультатПоиска; + Результат.МассивСлов = МассивСлов; + + ПоместитьВоВременноеХранилище(Результат, АдресРезультата); +КонецПроцедуры + +Функция ТекстЗапросаДоступныхВариантовОтчетов() + + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка <> Неопределено Тогда + + ТекстЗапросаПредварительный = " + |ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ПредопределенныеРазмещение.Подсистема КАК Подсистема, + | ПредопределенныеРазмещение.Важный КАК Важный, + | ПредопределенныеРазмещение.СмТакже КАК СмТакже, + | ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) КАК Наименование, + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВариантыОтчетов.Отчет КАК Отчет, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.Автор КАК Автор, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров + |ПОМЕСТИТЬ втПредопределенные + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК ПредопределенныеРазмещение + | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка + | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) + | И (ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | + |ГДЕ + | НЕ ВариантыОтчетов.ПометкаУдаления + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ВариантыОтчетов.Ссылка, + | ПредопределенныеРазмещение.Подсистема, + | ПредопределенныеРазмещение.Важный, + | ПредопределенныеРазмещение.СмТакже, + | ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)), + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.ТипОтчета, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.Автор, + | ВариантыОтчетов.Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК ПредопределенныеРазмещение + | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка + | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений + | ПО ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений + | И ДоступныеВариантыРасширений.Вариант = ВариантыОтчетов.ПредопределенныйВариант + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | + |ГДЕ + | НЕ ВариантыОтчетов.ПометкаУдаления + | ИЛИ НЕ ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | РазмещениеОтчетов.Ссылка КАК Ссылка, + | РазмещениеОтчетов.Подсистема КАК Подсистема, + | РазмещениеОтчетов.Использование КАК Использование, + | РазмещениеОтчетов.Важный КАК Важный, + | РазмещениеОтчетов.СмТакже КАК СмТакже, + | ВЫБОР + | КОГДА (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВариантыОтчетов.Наименование + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ОтчетыКонфигурации.Наименование, ОтчетыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ОтчетыКонфигурации.Описание, ОтчетыРасширений.Описание) КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.ТипОтчета, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.Автор, + | ВЫБОР + | КОГДА ВариантыОтчетов.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | ТОГДА ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | КОГДА ВариантыОтчетов.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | ТОГДА ВариантыОтчетов.Родитель + | ИНАЧЕ ВариантыОтчетов.Родитель.Родитель + | КОНЕЦ КАК Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров + |ПОМЕСТИТЬ втВарианты + |ИЗ + | Справочник.ВариантыОтчетов.Размещение КАК РазмещениеОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ПО ВариантыОтчетов.Ссылка = РазмещениеОтчетов.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ОтчетыКонфигурации + | ПО ОтчетыКонфигурации.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ОтчетыРасширений + | ПО ОтчетыРасширений.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + |ГДЕ + | (РазмещениеОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ РазмещениеОтчетов.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И РазмещениеОтчетов.Подсистема В (&МассивПодсистем) + | И (НЕ ВариантыОтчетов.ТолькоДляАвтора + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (НЕ ВариантыОтчетов.Пользовательский + | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) + | И (ВариантыОтчетов.Пользовательский + | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) + |"; + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапросаПредварительный, "ВариантыОтчетов.Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапросаПредварительный, "ВариантыОтчетов.Описание"); + + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапросаПредварительный, "ВариантыКонфигурации.Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапросаПредварительный, "ВариантыКонфигурации.Описание"); + КонецЕсли; + КонецЕсли; + + Иначе + + ТекстЗапросаПредварительный = " + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка КАК Ссылка, + | ПредопределенныеРазмещение.Подсистема КАК Подсистема, + | ПредопределенныеРазмещение.Важный КАК Важный, + | ПредопределенныеРазмещение.СмТакже КАК СмТакже, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВариантыОтчетов.Отчет КАК Отчет, + | ВариантыОтчетов.ТипОтчета КАК ТипОтчета, + | ВариантыОтчетов.КлючВарианта КАК КлючВарианта, + | ВариантыОтчетов.Автор КАК Автор, + | ВариантыОтчетов.Родитель КАК Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров + |ПОМЕСТИТЬ втПредопределенные + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК ПредопределенныеРазмещение + | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка + | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) + | И (ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка + | И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) + |ГДЕ + | НЕ ВариантыОтчетов.ПометкаУдаления + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ВариантыОтчетов.Ссылка, + | ПредопределенныеРазмещение.Подсистема, + | ПредопределенныеРазмещение.Важный, + | ПредопределенныеРазмещение.СмТакже, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияВариантов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияВариантов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Описание, ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.ТипОтчета, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.Автор, + | ВариантыОтчетов.Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК ПредопределенныеРазмещение + | ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка + | И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем)) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы)) + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредопределенныеВариантыОтчетовВерсийРасширений КАК ДоступныеВариантыРасширений + | ПО ДоступныеВариантыРасширений.ВерсияРасширений = &ВерсияРасширений + | И ДоступныеВариантыРасширений.Вариант = ВариантыОтчетов.ПредопределенныйВариант + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений + | ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка + | И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов + | ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка + | И (ПредставленияВариантов.КодЯзыка = &КодЯзыка) + |ГДЕ + | НЕ ВариантыОтчетов.ПометкаУдаления + | ИЛИ НЕ ДоступныеВариантыРасширений.Вариант ЕСТЬ NULL + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | РазмещениеОтчетов.Ссылка КАК Ссылка, + | РазмещениеОтчетов.Подсистема КАК Подсистема, + | РазмещениеОтчетов.Использование КАК Использование, + | РазмещениеОтчетов.Важный КАК Важный, + | РазмещениеОтчетов.СмТакже КАК СмТакже, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВариантыОтчетов.Наименование + | КОГДА НЕ &ЭтоОсновнойЯзык + | И (ВариантыОтчетов.Пользовательский + | ИЛИ ВариантыОтчетов.ПредопределенныйВариант В ( + | НЕОПРЕДЕЛЕНО, + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка), + | ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетовРасширений.ПустаяСсылка))) + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияОтчетов.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | КОГДА &ЭтоОсновнойЯзык + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ОтчетыКонфигурации.Наименование, ОтчетыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(150)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияОтчетовКонфигурации.Наименование, ПредставленияОтчетовРасширений.Наименование), ПредставленияОтчетов.Наименование) КАК СТРОКА(150)) + | КОНЕЦ КАК Наименование, + | ВЫБОР + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОГДА &ЭтоОсновнойЯзык И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ОтчетыКонфигурации.Описание, ОтчетыРасширений.Описание) КАК СТРОКА(1000)) + | КОГДА НЕ &ЭтоОсновнойЯзык И ПОДСТРОКА(ПредставленияОтчетов.Описание, 1, 1) <> """" + | ТОГДА ВЫРАЗИТЬ(ПредставленияОтчетов.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияОтчетовКонфигурации.Описание, ПредставленияОтчетовРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.ТипОтчета, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.Автор, + | ВЫБОР + | КОГДА ВариантыОтчетов.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | ТОГДА ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | КОГДА ВариантыОтчетов.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка) + | ТОГДА ВариантыОтчетов.Родитель + | ИНАЧЕ ВариантыОтчетов.Родитель.Родитель + | КОНЕЦ КАК Родитель, + | ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров + |ПОМЕСТИТЬ втВарианты + |ИЗ + | Справочник.ВариантыОтчетов.Размещение КАК РазмещениеОтчетов + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов + | ПО ВариантыОтчетов.Ссылка = РазмещениеОтчетов.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияОтчетов + | ПО ПредставленияОтчетов.Ссылка = ВариантыОтчетов.Ссылка + | И ПредставленияОтчетов.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ОтчетыКонфигурации + | ПО ОтчетыКонфигурации.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияОтчетовКонфигурации + | ПО ПредставленияОтчетовКонфигурации.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + | И ПредставленияОтчетовКонфигурации.КодЯзыка = &КодЯзыка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ОтчетыРасширений + | ПО ОтчетыРасширений.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияОтчетовРасширений + | ПО ПредставленияОтчетовРасширений.Ссылка = ВариантыОтчетов.ПредопределенныйВариант + | И ПредставленияОтчетовРасширений.КодЯзыка = &КодЯзыка + |ГДЕ + | (РазмещениеОтчетов.Ссылка В (&ВариантыНайденныеПоиском) + | ИЛИ (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ РазмещениеОтчетов.Подсистема В (&ПодсистемыНайденныеПоиском))) + | И РазмещениеОтчетов.Подсистема В (&МассивПодсистем) + | И (НЕ ВариантыОтчетов.ТолькоДляАвтора + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И (&НетОтбораПоПодсистемамИОтчетам + | ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя)) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И (НЕ ВариантыОтчетов.Пользовательский + | ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления) + | И (ВариантыОтчетов.Пользовательский + | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления) + |"; + + КонецЕсли; + + ОсновнойЗапрос = " |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ЕСТЬNULL(втВарианты.Ссылка, втПредопределенные.Ссылка) КАК Ссылка, @@ -7055,6 +7795,16 @@ | ЕСТЬNULL(втВарианты.Использование, ИСТИНА) |; | + |ВЫБРАТЬ + | Подсистемы.Ссылка КАК Подсистема, + | Подсистемы.РазделСсылка КАК РазделСсылка, + | Подсистемы.Представление КАК Представление, + | Подсистемы.Приоритет КАК Приоритет + |ПОМЕСТИТЬ втПодсистемы + |ИЗ + | &ТаблицаПодсистем КАК Подсистемы + |; + | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | втВсеВарианты.Ссылка КАК Ссылка, @@ -7159,97 +7909,11 @@ | |УПОРЯДОЧИТЬ ПО | ПодсистемаПриоритет, - | Наименование"); + | Наименование"; - #КонецОбласти - - ПоискПоСтроке = ЗначениеЗаполнено(ПараметрыЗаполнения.СтрокаПоиска); - ТолькоТекущийРаздел = ПараметрыЗаполнения.РежимНастройки Или Не ПоискПоСтроке Или ПараметрыЗаполнения.ИскатьВоВсехРазделах = 0; - ТаблицаПодсистем = ПараметрыЗаполнения.ПодсистемыПрограммы; // ТаблицаЗначений - ТаблицаПодсистем.Индексы.Добавить("Ссылка"); - МассивПодсистем = ТаблицаПодсистем.ВыгрузитьКолонку("Ссылка"); - - ПараметрыПоиска = Новый Структура; - Если ПоискПоСтроке Тогда - ПараметрыПоиска.Вставить("СтрокаПоиска", ПараметрыЗаполнения.СтрокаПоиска); - КонецЕсли; - Если ТолькоТекущийРаздел Тогда - ПараметрыПоиска.Вставить("Подсистемы", МассивПодсистем); - КонецЕсли; - РезультатПоиска = НайтиВариантыОтчетов(ПараметрыПоиска, Ложь, Истина); - - Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); - Запрос.УстановитьПараметр("МассивПодсистем", МассивПодсистем); - Запрос.УстановитьПараметр("ТаблицаПодсистем", ТаблицаПодсистем); - Запрос.УстановитьПараметр("РазделСсылка", ПараметрыЗаполнения.ТекущийРазделСсылка); - Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ОбщегоНазначения.ЭтоОсновнойЯзык()); - Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); - Запрос.УстановитьПараметр("ВариантыНайденныеПоиском", РезультатПоиска.Ссылки); - Запрос.УстановитьПараметр("ПодсистемыНайденныеПоиском", РезультатПоиска.Подсистемы); - Запрос.УстановитьПараметр("ОтчетыПользователя", ПараметрыПоиска.ОтчетыПользователя); - Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ПараметрыПоиска.ОтключенныеВариантыПрограммы); - Запрос.УстановитьПараметр("НетОтбораПоПодсистемамИОтчетам", Не ПоискПоСтроке И ПараметрыПоиска.Подсистемы.Количество() = 0); - Запрос.УстановитьПараметр("НетОтбораПоВидимости", ПараметрыЗаполнения.РежимНастройки Или ПоискПоСтроке); - Запрос.УстановитьПараметр("ВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); - - ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); - ЗаполнитьИменаОтчетов(ТаблицаРезультат); - - ТаблицаРезультат.Колонки.Добавить("ВыводитсяВместеСОсновным", Новый ОписаниеТипов("Булево")); - ТаблицаРезультат.Колонки.Добавить("КоличествоПодчиненных", Новый ОписаниеТипов("Число")); - ТаблицаРезультат.Индексы.Добавить("Ссылка"); - - Если ПоискПоСтроке Тогда - // Удаление записей о вариантах, связанных с подсистемами, если запись не фигурирует в связи. - Для Каждого КлючИЗначение Из РезультатПоиска.ВариантыСвязанныеСПодсистемами Цикл - ВариантСсылка = КлючИЗначение.Ключ; - СвязанныеПодсистемы = КлючИЗначение.Значение; - Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка)); - Для Каждого СтрокаТаблицы Из Найденные Цикл - Если СвязанныеПодсистемы.Найти(СтрокаТаблицы.Подсистема) = Неопределено Тогда - ТаблицаРезультат.Удалить(СтрокаТаблицы); - КонецЕсли; - КонецЦикла; - КонецЦикла; - // Удаление записей о родителях, связанных с вариантами, если родитель пытается вывестись один (без вариантов). - Для Каждого РодительСсылка Из РезультатПоиска.РодителиСвязанныеСВариантами Цикл - МестаВывода = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", РодительСсылка)); - Для Каждого СтрокаТаблицы Из МестаВывода Цикл - Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Подсистема, Родитель", СтрокаТаблицы.Подсистема, РодительСсылка)); - Если Найденные.Количество() = 0 Тогда - ТаблицаРезультат.Удалить(СтрокаТаблицы); - КонецЕсли; - КонецЦикла; - КонецЦикла; - КонецЕсли; - - Если ТолькоТекущийРаздел Тогда - ДругиеРазделы = Новый Массив; - Иначе - КопияТаблицы = ТаблицаРезультат.Скопировать(); - КопияТаблицы.Свернуть("РазделСсылка"); - ДругиеРазделы = КопияТаблицы.ВыгрузитьКолонку("РазделСсылка"); - Индекс = ДругиеРазделы.Найти(ПараметрыЗаполнения.ТекущийРазделСсылка); - Если Индекс <> Неопределено Тогда - ДругиеРазделы.Удалить(Индекс); - КонецЕсли; - КонецЕсли; - - МассивСлов = ?(ПоискПоСтроке, - ВариантыОтчетовКлиентСервер.РазложитьСтрокуПоискаВМассивСлов(ВРег(СокрЛП(ПараметрыЗаполнения.СтрокаПоиска))), - Неопределено); - - Результат = ВариантыОтчетовДляВывода(); - Результат.ТолькоТекущийРаздел = ТолькоТекущийРаздел; - Результат.ТаблицаПодсистем = ТаблицаПодсистем; - Результат.ДругиеРазделы = ДругиеРазделы; - Результат.Варианты = ТаблицаРезультат; - Результат.ИспользоватьПодсветку = ПоискПоСтроке; - Результат.РезультатПоиска = РезультатПоиска; - Результат.МассивСлов = МассивСлов; - - ПоместитьВоВременноеХранилище(Результат, АдресРезультата); -КонецПроцедуры + Возврат ТекстЗапросаПредварительный + ОбщегоНазначения.РазделительПакетаЗапросов() + ОсновнойЗапрос; + +КонецФункции // Устанавливает имена отчетов по метаданным. // @@ -7658,16 +8322,15 @@ #Область ЧтениеФайлаОписанияНастроек - ШаблонОписанияОшибки = НСтр("ru = 'Некорректный формат описания настроек: %1'"); + ШапкаОписанияОшибки = НСтр("ru = 'Некорректный формат описания настроек:'") + Символы.ПС; ЧтениеXML = Новый ЧтениеXML; - + ИмяФайла = "SettingsDescription.xml"; Попытка - ЧтениеXML.ОткрытьФайл(ИмяКаталога + "SettingsDescription.xml"); + ЧтениеXML.ОткрытьФайл(ИмяКаталога + ИмяФайла); Исключение - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует файл SettingsDescription.xml'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует файл %1.'"), ИмяФайла); Возврат ОписаниеНастроек; КонецПопытки; @@ -7681,54 +8344,51 @@ #Область ЧтениеОбщегоОписанияНастроек Если ДокументDOM.ДочерниеУзлы.Количество() = 0 Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует элемент SettingsDescription'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует элемент %1.'"), "SettingsDescription"); Возврат ОписаниеНастроек; КонецЕсли; Элемент = ДокументDOM.ДочерниеУзлы.Элемент(0); - ИмяОтчета = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("ReportName"); + ИмяЭлемента = "ReportName"; + ИмяОтчета = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяЭлемента); Если ИмяОтчета = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут ReportName'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1.'"), ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; - ОписаниеНастроек.ИмяОтчета = ИмяОтчета.Значение; - + ОписаниеНастроек.ИмяОтчета = ИмяОтчета.Значение; Состав = Элемент.ДочерниеУзлы; #КонецОбласти #Область ЧтениеОписанияОсновныхНастроек + ИмяЭлемента = "Settings"; Если Состав.Количество() = 0 Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует элемент Settings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует элемент %1.'"), ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; Элемент = Состав.Элемент(0); - КлючВарианта = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("Key"); + ИмяАтрибута = "Key"; + КлючВарианта = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяАтрибута); Если КлючВарианта = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут Key элемента Settings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1 элемента %2.'"), ИмяАтрибута, ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; ОписаниеНастроек.КлючВарианта = КлючВарианта.Значение; - - ПредставлениеВарианта = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("Presentation"); + ИмяАтрибута = "Presentation"; + ПредставлениеВарианта = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяАтрибута); Если ПредставлениеВарианта = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут Presentation элемента Settings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1 элемента %2.'"), ИмяАтрибута, ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; @@ -7743,31 +8403,31 @@ Возврат ОписаниеНастроек; КонецЕсли; + ИмяЭлемента = "UserSettings"; Для Индекс = 1 По ГраницаСостава Цикл Элемент = Состав.Элемент(Индекс); - - КлючНастроек = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("Key"); + ИмяАтрибута = "Key"; + КлючНастроек = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяАтрибута); Если КлючНастроек = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут Key элемента UserSettings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1 элемента %2.'"), ИмяАтрибута, ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; - ПредставлениеНастроек = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("Presentation"); + ИмяАтрибута = "Presentation"; + ПредставлениеНастроек = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяАтрибута); Если ПредставлениеНастроек = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут Presentation элемента UserSettings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1 элемента %2.'"), ИмяАтрибута, ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; - ЭтоТекущиеПредставление = Элемент.Атрибуты.ПолучитьИменованныйЭлемент("isCurrent"); + ИмяАтрибута = "isCurrent"; + ЭтоТекущиеПредставление = Элемент.Атрибуты.ПолучитьИменованныйЭлемент(ИмяАтрибута); Если ЭтоТекущиеПредставление = Неопределено Тогда - ОписаниеНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ШаблонОписанияОшибки, НСтр("ru = 'отсутствует атрибут isCurrent элемента UserSettings'")); - + ОписаниеНастроек.ОписаниеОшибки = ШапкаОписанияОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'отсутствует атрибут %1 элемента %2.'"), ИмяАтрибута, ИмяЭлемента); Возврат ОписаниеНастроек; КонецЕсли; @@ -7776,11 +8436,9 @@ ОписаниеНастроек.ПользовательскиеНастройки.Добавить( КлючНастроек.Значение, ПредставлениеНастроек.Значение, ЭтоТекущие); - Если ЭтоТекущие Тогда - + Если ЭтоТекущие Тогда ОписаниеНастроек.КлючТекущихПользовательскихНастроек = КлючНастроек.Значение; ОписаниеНастроек.ПредставлениеТекущихПользовательскихНастроек = ПредставлениеНастроек.Значение; - КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl index 8dda7175f..6c9246ee7 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl @@ -91,7 +91,7 @@ КорневаяСтрока = Результат.Строки.Добавить(); КорневаяСтрока.Ссылка = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); - КорневаяСтрока.Представление = НСтр("ru = 'Все разделы'"); + КорневаяСтрока.Представление = НСтр("ru = 'Все разделы';"); ПолныеИменаПодсистем = Новый Массив; ПолныеИменаСтрокДерева = Новый Соответствие; @@ -106,14 +106,16 @@ Если НЕ (ТипЗнч(РазделМетаданные) = Тип("ОбъектМетаданных") И СтрНачинаетсяС(РазделМетаданные.ПолноеИмя(), "Подсистема")) И НЕ (ТипЗнч(РазделМетаданные) = Тип("Строка") И РазделМетаданные = ИдентификаторНачальнойСтраницы) Тогда - ВызватьИсключение НСтр("ru = 'Некорректно определены значения разделов в процедуре ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректно определены значения разделов в процедуре %1.'"), + "ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов"); КонецЕсли; Если ЗначениеЗаполнено(ЭлементСписка.Представление) Тогда ШаблонЗаголовка = ЭлементСписка.Представление; Иначе - ШаблонЗаголовка = НСтр("ru = 'Отчеты раздела ""%1""'"); + ШаблонЗаголовка = НСтр("ru = 'Отчеты раздела ""%1""';"); КонецЕсли; ЭтоНачальнаяСтраница = (РазделМетаданные = ИдентификаторНачальнойСтраницы); @@ -235,7 +237,9 @@ РазделМетаданные = Раздел.Значение; Если НЕ (ТипЗнч(РазделМетаданные) = Тип("ОбъектМетаданных") И СтрНачинаетсяС(РазделМетаданные.ПолноеИмя(), "Подсистема")) И НЕ (ТипЗнч(РазделМетаданные) = Тип("Строка") И РазделМетаданные = ИдентификаторНачальнойСтраницы) Тогда - ВызватьИсключение НСтр("ru = 'Некорректно определены значения разделов в процедуре ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректно определены значения разделов в процедуре %1.'"), + "ВариантыОтчетовПереопределяемый.ОпределитьРазделыСВариантамиОтчетов"); КонецЕсли; ЭтоНачальнаяСтраница = (РазделМетаданные = ИдентификаторНачальнойСтраницы); diff --git a/SSL/src/CommonModules/ВариантыОтчетовСлужебный/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовСлужебный/Module.bsl index aabecc476..f9e349f2a 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовСлужебный/Module.bsl @@ -49,7 +49,8 @@ НастройкиОтчета = Форма.НастройкиОтчета; // см. ВариантыОтчетов.НастройкиФормыОтчета Если Не ВариантыОтчетовСлужебныйКлиентСервер.РежимВариантаОтчета(Форма.КлючТекущегоВарианта) - Или Не НастройкиОтчета.РазрешеноИзменятьВарианты Тогда + Или Не НастройкиОтчета.РазрешеноИзменятьВарианты + Или НастройкиОтчета.ОтключитьСтандартноеКонтекстноеМеню Тогда Возврат; КонецЕсли; @@ -58,17 +59,30 @@ Элементы = Форма.Элементы; СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета - РезультатОтчета = Форма.ОтчетТабличныйДокумент; + РезультатОтчета = Форма.ОтчетТабличныйДокумент; // ТабличныйДокумент + + ИндексСтруктурыОтчета = ИндексСтруктурыОтчета(Форма); + ГраницаЗаголовкаРаздела = Неопределено; РазрезСвойствЗаголовков = СтандартныйРазрезСвойствЗаголовковОтчета(); Для НомерСтроки = 1 По РезультатОтчета.ВысотаТаблицы Цикл + НачальнаяЯчейка = РезультатОтчета.Область(НомерСтроки, 1); + + Если ПрерватьСканированиеРезультатаОтчета(НачальнаяЯчейка, ИндексСтруктурыОтчета, ГраницаЗаголовкаРаздела) Тогда + Прервать; + КонецЕсли; + + Если Не ЭтоЯчейкаЗаголовкаОтчета(НачальнаяЯчейка) Тогда + Продолжить; + КонецЕсли; + Для НомерКолонки = 1 По РезультатОтчета.ШиринаТаблицы Цикл Ячейка = РезультатОтчета.Область(НомерСтроки, НомерКолонки); - Если Ячейка.РежимИзмененияРазмераКолонки <> РежимИзмененияРазмера.БыстроеИзменение Тогда + Если Не ЭтоЯчейкаЗаголовкаОтчета(Ячейка) Тогда Продолжить; КонецЕсли; @@ -88,7 +102,6 @@ ОпределитьИерархиюЗаголовковОтчета(РазрезСвойствЗаголовков, Заголовки); ГраницыРазделов = ГраницыРазделовОтчета(РезультатОтчета, РазрезСвойствЗаголовков); - ИндексСтруктурыОтчета = ИндексСтруктурыОтчета(Форма); ДополнитьСвойстваЗаголовковОтчета(Форма, РезультатОтчета, Заголовки, РазрезСвойствЗаголовков, ИндексСтруктурыОтчета, ГраницыРазделов); Ячейка = Элементы.ОтчетТабличныйДокумент.ТекущаяОбласть; @@ -378,6 +391,10 @@ СвойстваРезультата.АдресИндексаСтруктурыОтчета = ПоместитьВоВременноеХранилище( ИндексСтруктурыОтчета, Форма.УникальныйИдентификатор); + + ЗаполнитьСвойстваМакетовЗаголовковОтчета(НастройкиОтчета.АдресСхемы, ИндексСтруктурыОтчета); + ИндексСтруктурыОтчета.Индексы.Добавить("ПорядокРаздела, ПредставлениеПоля, Текст"); + КонецЕсли; СвойстваРезультата.ИндексПолей = ИндексПолейСтруктурыОтчета(ИндексСтруктурыОтчета); @@ -604,6 +621,7 @@ ИндексГруппировки.ПорядокГруппировки = ПорядокГруппировки; ИндексГруппировки.ИдентификаторГруппировки = Настройки.ПолучитьИдентификаторПоОбъекту(Группировка); + ИндексГруппировки.ИмяГруппировки = Группировка.Имя; ИндексГруппировки.ПредставлениеГруппировки = ПредставлениеПолейГруппировки(Группировка); ИндексГруппировки.СодержитРодительскиеГруппировки = СодержитРодительскиеГруппировки(Группировка); ИндексГруппировки.СодержитДочерниеГруппировки = СодержитДочерниеГруппировки(Группировка); @@ -1238,6 +1256,48 @@ КонецФункции +Процедура ЗаполнитьСвойстваМакетовЗаголовковОтчета(АдресСхемы, ИндексСтруктурыОтчета) + + Схема = ПолучитьИзВременногоХранилища(АдресСхемы); + + МакетыПоТипам = Новый Массив; + МакетыПоТипам.Добавить(Схема.МакетыЗаголовковГруппировок); + МакетыПоТипам.Добавить(Схема.МакетыГруппировок); + + Для Каждого МакетыПоТипу Из МакетыПоТипам Цикл + + Для Каждого Макет Из МакетыПоТипу Цикл + + ИндексГруппировки = ИндексСтруктурыОтчета.Найти(Макет.ИмяГруппировки, "ИмяГруппировки"); + + Если ИндексГруппировки = Неопределено Тогда + Продолжить; + КонецЕсли; + + ОписаниеМакета = Схема.Макеты.Найти(Макет.Макет); + + Если ТипЗнч(ОписаниеМакета.Макет) <> Тип("МакетОбластиКомпоновкиДанных") Тогда + Продолжить; + КонецЕсли; + + Для Каждого Строка Из ОписаниеМакета.Макет Цикл + + Для Каждого Ячейка Из Строка.Ячейки Цикл + + Если Ячейка.Элементы.Количество() > 0 Тогда + ИндексГруппировки.Текст = Ячейка.Элементы[0].Значение; + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + #Область Конструкторы Функция НовыйИндексСтруктурыОтчета() Экспорт @@ -1268,8 +1328,10 @@ Индекс.Колонки.Добавить("ИспользуетсяВПоляхГруппировки", ОписаниеПризнака); Индекс.Колонки.Добавить("ТипГруппировки", ОписаниеТипаГруппировки); + Индекс.Колонки.Добавить("ИмяГруппировки", ОписаниеСтроки); Индекс.Колонки.Добавить("ПредставлениеГруппировки", ОписаниеСтроки); Индекс.Колонки.Добавить("ПредставлениеПоля", ОписаниеСтроки); + Индекс.Колонки.Добавить("Текст", ОписаниеСтроки); Индекс.Колонки.Добавить("Период", ОписаниеПризнака); Индекс.Колонки.Добавить("Измерение", ОписаниеПризнака); @@ -1410,8 +1472,6 @@ Процедура ДополнитьСвойстваЗаголовковОтчета(Форма, РезультатОтчета, Заголовки, РазрезСвойствЗаголовков, ИндексСтруктурыОтчета, ГраницыРазделов) - ИндексСтруктурыОтчета.Индексы.Добавить("ПорядокРаздела, ПредставлениеПоля"); - ПорядокРаздела = 1; ГраницаТекущегоРаздела = 0; ОбработанныеПоля = Новый Соответствие; @@ -1432,7 +1492,11 @@ Продолжить; КонецЕсли; - ЗаполнитьЗначенияСвойств(СвойстваЗаголовка, ИндексПоля); + ЗаполнитьЗначенияСвойств(СвойстваЗаголовка, ИндексПоля,, "Текст"); + + Если ЗначениеЗаполнено(ИндексПоля.Текст) Тогда + СвойстваЗаголовка.Текст = ИндексПоля.Текст; + КонецЕсли; ЭтоЧисло = СвойстваЗаголовка.ТипЗначения.СодержитТип(Тип("Число")); СвойстваЗаголовка.ОформитьОтрицательные = ЭтоЧисло; @@ -1454,13 +1518,23 @@ Функция ИндексПоляПоСвойствамЗаголовка(Форма, СвойстваЗаголовка, ИндексСтруктурыОтчета, ПорядокРаздела, ОбработанныеПоля) Поиск = Новый Структура("ПорядокРаздела, ПредставлениеПоля", ПорядокРаздела, ВРег(СвойстваЗаголовка.Текст)); - ИндексПоля = ИндексПоляПоПредставлению(ИндексСтруктурыОтчета, Поиск, ОбработанныеПоля); Если ИндексПоля = Неопределено Тогда ИндексПоля = ИндексПоляПоРасшифровке(Форма, СвойстваЗаголовка.Расшифровка, ИндексСтруктурыОтчета, Поиск, ОбработанныеПоля); КонецЕсли; + Если ИндексПоля <> Неопределено Тогда + Возврат ИндексПоля; + КонецЕсли; + + Поиск = Новый Структура("ПорядокРаздела, Текст", ПорядокРаздела, СвойстваЗаголовка.Текст); + НайденныеЗаписи = ИндексСтруктурыОтчета.НайтиСтроки(Поиск); + + Если НайденныеЗаписи.Количество() > 0 Тогда + ИндексПоля = НайденныеЗаписи[0]; + КонецЕсли; + Возврат ИндексПоля; КонецФункции @@ -1640,6 +1714,42 @@ КонецПроцедуры +Функция ПрерватьСканированиеРезультатаОтчета(Ячейка, ИндексСтруктурыОтчета, ГраницаЗаголовкаРаздела) + + Если ИндексСтруктурыОтчета.Количество() = 0 Тогда + Возврат Истина; + КонецЕсли; + + КоличествоРазделов = ИндексСтруктурыОтчета[0].КоличествоРазделов; + + Если КоличествоРазделов > 1 Тогда + Возврат Ложь; + КонецЕсли; + + Если ГраницаЗаголовкаРаздела = Неопределено + И Не ЭтоЯчейкаЗаголовкаОтчета(Ячейка) Тогда + + Возврат Ложь; + КонецЕсли; + + Если ГраницаЗаголовкаРаздела = Неопределено + Или ЭтоЯчейкаЗаголовкаОтчета(Ячейка) И Ячейка.Верх - ГраницаЗаголовкаРаздела = 1 Тогда + + ГраницаЗаголовкаРаздела = Ячейка.Низ; + + Возврат Ложь; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +Функция ЭтоЯчейкаЗаголовкаОтчета(Ячейка) + + Возврат Ячейка.РежимИзмененияРазмераКолонки = РежимИзмененияРазмера.БыстроеИзменение; + +КонецФункции + #Область Конструкторы Функция СтандартныйРазрезСвойствЗаголовковОтчета() @@ -2234,4 +2344,100 @@ #КонецОбласти -#КонецОбласти \ No newline at end of file +#Область РасшифровкаПоДетальнымЗаписям + +Процедура ПодготовитьНастройкиОтчетаКРасшифровкеПоДетальнымЗаписям(Форма, НастройкиВарианта, ПрименяемыеНастройки) Экспорт + + ДействиеОбработкиРасшифровки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + ПрименяемыеНастройки.ДополнительныеСвойства, "ДействиеОбработкиРасшифровки"); + + Если Не ЗначениеЗаполнено(ДействиеОбработкиРасшифровки) Тогда + Возврат; + КонецЕсли; + + СвойстваЗаголовка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + ПрименяемыеНастройки.ДополнительныеСвойства, "СвойстваЗаголовка"); + + Если ТипЗнч(НастройкиВарианта) = Тип("НастройкиКомпоновкиДанных") Тогда + Настройки = НастройкиВарианта; + Иначе + Настройки = Форма.Отчет.КомпоновщикНастроек.Настройки; + КонецЕсли; + + УдалитьНеактуальныеРазделаОтчета(Настройки, СвойстваЗаголовка); + ПодготовитьСтруктуруРазделаОтчетаКРасшифровке(Настройки); + + НастройкиВарианта = Настройки; + +КонецПроцедуры + +Процедура УдалитьНеактуальныеРазделаОтчета(Настройки, СвойстваЗаголовка) + + ИндексРаздела = Настройки.Структура.Количество() - 1; + + Пока ИндексРаздела >= 0 Цикл + + Раздел = Настройки.Структура[ИндексРаздела]; + + Если Не Раздел.Использование + Или ТипЗнч(Раздел) <> Тип("ГруппировкаКомпоновкиДанных") + И ТипЗнч(Раздел) <> Тип("ТаблицаКомпоновкиДанных") Тогда + + Настройки.Структура.Удалить(Раздел); + КонецЕсли; + + ИндексРаздела = ИндексРаздела - 1; + + КонецЦикла; + + НомерТекущегоРаздела = СвойстваЗаголовка.ПорядокРаздела; + КоличествоРазделов = Настройки.Структура.Количество(); + РазделыНаУдаление = Новый Массив; + + Для НомерРаздела = 1 По КоличествоРазделов Цикл + + Если НомерРаздела <> НомерТекущегоРаздела Тогда + РазделыНаУдаление.Добавить(Настройки.Структура[НомерРаздела - 1]); + КонецЕсли; + + КонецЦикла; + + Для Каждого Раздел Из РазделыНаУдаление Цикл + Настройки.Структура.Удалить(Раздел); + КонецЦикла; + +КонецПроцедуры + +Процедура ПодготовитьСтруктуруРазделаОтчетаКРасшифровке(Настройки) + + Если Настройки.Структура.Количество() <> 1 Тогда + Возврат; + КонецЕсли; + + ЭлементСтруктуры = Настройки.Структура[0]; + Группировка = Неопределено; + + Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда + + Группировка = ЭлементСтруктуры; + + ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда + + Если ЭлементСтруктуры.Строки.Количество() > 0 Тогда + Группировка = ЭлементСтруктуры.Строки[0]; + КонецЕсли; + + КонецЕсли; + + Если Группировка = Неопределено Тогда + Возврат; + КонецЕсли; + + Группировка.Структура.Очистить(); + Группировка.ПоляГруппировки.Элементы.Очистить(); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git a/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиент/Module.bsl index 773145398..ead7e8dbe 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиент/Module.bsl @@ -82,7 +82,6 @@ СтандартнаяОбработка = Ложь; Форма.Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость = Истина; - Возврат; КонецЕсли; @@ -255,7 +254,7 @@ Группировки.Удалить(Группировка); КонецЦикла; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -332,7 +331,7 @@ КонецЕсли; КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "ОчиститьОформление"); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "ОчиститьОформление", СвойстваЗаголовка.Текст); КонецПроцедуры @@ -383,7 +382,7 @@ РаскраситьРазделОтчета(Форма, ПараметрыРаскраски, СвойстваЗаголовка); - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -434,7 +433,7 @@ РаскраситьРазделОтчета(Форма, ПараметрыРаскраски, СвойстваЗаголовка); - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -478,7 +477,7 @@ ОбновитьПараметрыРазмера(ПараметрыВысотыСтроки, ВысотаСтроки); КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -522,7 +521,7 @@ ОбновитьПараметрыРазмера(ПараметрыШириныКолонки, ШиринаКолонки); КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -646,7 +645,7 @@ Фильтры.Элементы.Удалить(Фильтр); - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "СнятьФильтр"); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "СнятьФильтр", СвойстваЗаголовка.Текст); КонецПроцедуры @@ -692,7 +691,7 @@ КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -740,7 +739,7 @@ УстановитьЗаголовокПоляОтчета(Настройки, ПолеОтчета, ОписаниеПоля, Заголовок); КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -787,7 +786,7 @@ ЭлементСортировки.ТипУпорядочивания = ТипСортировкиРаздела(Команда); ЭлементСортировки.Использование = Истина; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), Ложь); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), Неопределено, Ложь); КонецПроцедуры @@ -1309,7 +1308,7 @@ Фильтр.ПравоеЗначение = ДанныеРасшифровки.Значение; Фильтр.Использование = Истина; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "Фильтровать"); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "Фильтровать", СвойстваЗаголовка.Текст); КонецПроцедуры @@ -1519,7 +1518,7 @@ РаскраситьРазделОтчета(Форма, ПараметрыРаскраски, СвойстваЗаголовка); - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -2286,7 +2285,7 @@ КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, Действие); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, Действие, СвойстваЗаголовка.Текст); КонецПроцедуры @@ -2544,12 +2543,9 @@ СвойстваЗаголовка = СвойстваЗаголовкаОтчета(Форма); - КомпоновщикНастроек = КомпоновщикНастроекОтчета(Форма); Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек); Группировка = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторГруппировки); - КомпоновщикНастроек.РазвернутьАвтоПоля(); - Поля = Группировка.Выбор; ТекущееПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Поля, СвойстваЗаголовка.Поле); @@ -2582,7 +2578,7 @@ Поля.Элементы.Сдвинуть(ТекущееПоле, КонечныйИндексПоля - ИсходныйИндексПоля); - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -2659,7 +2655,7 @@ КонецЕсли; - ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда)); + ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда), СвойстваЗаголовка.Текст); КонецПроцедуры @@ -2858,25 +2854,10 @@ Возврат КонтекстноеМеню; КонецЕсли; - Информация = Новый СистемнаяИнформация; - - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Информация.ВерсияПриложения, "8.3.16.0") >= 0 Тогда - - КартинкиОформления = Новый Структура; - КартинкиОформления.Вставить("ОформитьКрасным", БиблиотекаКартинок["ОформлениеКругКрасный"]); - КартинкиОформления.Вставить("ОформитьЖелтым", БиблиотекаКартинок["ОформлениеКругЖелтый"]); - КартинкиОформления.Вставить("ОформитьЗеленым", БиблиотекаКартинок["ОформлениеКругЗеленый"]); - - Иначе - - ПустаяКартинка = БиблиотекаКартинок["Пустая"]; - - КартинкиОформления = Новый Структура; - КартинкиОформления.Вставить("ОформитьКрасным", ПустаяКартинка); - КартинкиОформления.Вставить("ОформитьЖелтым", ПустаяКартинка); - КартинкиОформления.Вставить("ОформитьЗеленым", ПустаяКартинка); - - КонецЕсли; + КартинкиОформления = Новый Структура; + КартинкиОформления.Вставить("ОформитьКрасным", БиблиотекаКартинок["ОформлениеКругКрасный"]); + КартинкиОформления.Вставить("ОформитьЖелтым", БиблиотекаКартинок["ОформлениеКругЖелтый"]); + КартинкиОформления.Вставить("ОформитьЗеленым", БиблиотекаКартинок["ОформлениеКругЗеленый"]); // Фильтровать УточнитьДоступныеВидыСравнения(ДоступныеВидыСравнения); @@ -2901,6 +2882,9 @@ КонтекстноеМеню.Добавить(ПодменюОформления, НСтр("ru = 'Оформить'"),, БиблиотекаКартинок.УсловноеОформлениеКомпоновкиДанных); + // Расшифровать + КонтекстноеМеню.Добавить("РасшифроватьПоДетальнымЗаписям", НСтр("ru = 'Расшифровать по детальным записям'")); + Возврат КонтекстноеМеню; КонецФункции @@ -3051,6 +3035,17 @@ КонецЕсли; + Если ВыполненноеДействие = "РасшифроватьПоДетальнымЗаписям" Тогда + + ПодготовитьОтборОбработчикаРасшифровки(ДополнительныеПараметры); + ПодготовитьПрименяемыеНастройкиОбработчикаРасшифровки(ВыполненноеДействие, ДополнительныеПараметры); + + ОткрытьФормуОтчета(Форма, ДополнительныеПараметры); + + Возврат; + + КонецЕсли; + Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать Тогда ДополнительныеПараметры.Вставить("Настройки", ПараметрВыполненногоДействия); @@ -3060,31 +3055,158 @@ КонецПроцедуры +#Область РасшифровкаПоДетальнымЗаписям + +Процедура ПодготовитьОтборОбработчикаРасшифровки(ДополнительныеПараметры) + + Отбор = Новый Структура; + + Данные = ДополнительныеПараметры.Данные; + + Для Каждого Элемент Из Данные.Отбор Цикл + + СвойстваОтбора = СвойстваЭлементаОтбораОбработчикаРасшифровки(Данные.Настройки.Отбор, Элемент); + Отбор.Вставить(Элемент.Ключ, СвойстваОтбора); + + КонецЦикла; + + ДополнительныеПараметры.Вставить("Отбор", Отбор); + + ДополнитьОтборОбработчикаРасшифровки( + ДополнительныеПараметры.Отбор, + ДополнительныеПараметры.Данные.Настройки.Структура); + +КонецПроцедуры + +Процедура ДополнитьОтборОбработчикаРасшифровки(Отбор, ЭлементыСтруктуры) + + Для Каждого ЭлементСтруктуры Из ЭлементыСтруктуры Цикл + + Если Не ЭлементСтруктуры.Использование Тогда + Продолжить; + КонецЕсли; + + Если ТипЗнч(ЭлементСтруктуры) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда + + ДополнитьОтборОбработчикаРасшифровки(Отбор, ЭлементСтруктуры.Настройки.Структура); + + ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда + + ДополнитьОтборОбработчикаРасшифровки(Отбор, ЭлементСтруктуры.Строки); + + ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") + Или ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда + + Для Каждого ЭлементОтбора Из ЭлементСтруктуры.Отбор.Элементы Цикл + ДобавитьЭлементОтбораОбработчикаРасшифровки(Отбор, ЭлементОтбора); + КонецЦикла; + + ДополнитьОтборОбработчикаРасшифровки(Отбор, ЭлементСтруктуры.Структура); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьЭлементОтбораОбработчикаРасшифровки(Отбор, ЭлементОтбора) + + Если ТипЗнч(ЭлементОтбора) <> Тип("ЭлементОтбораКомпоновкиДанных") + Или Не ЭлементОтбора.Использование Тогда + + Возврат; + КонецЕсли; + + ПутьКДаннымПоля = Строка(ЭлементОтбора.ЛевоеЗначение); + + Если Отбор.Свойство(ПутьКДаннымПоля) Тогда + Возврат; + КонецЕсли; + + СвойстваЭлементаОтбора = ВариантыОтчетовСлужебныйКлиентСервер.СвойстваОтбораОбработчикаРасшифровкиПоДетальнымЗаписям(); + ЗаполнитьЗначенияСвойств(СвойстваЭлементаОтбора, ЭлементОтбора, + "ВидСравнения, РежимОтображения, Представление, ИдентификаторПользовательскойНастройки"); + + Если Не ЗначениеЗаполнено(СвойстваЭлементаОтбора.ИдентификаторПользовательскойНастройки) Тогда + + СвойстваЭлементаОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор; + СвойстваЭлементаОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; + + КонецЕсли; + + СвойстваЭлементаОтбора.Значение = ЭлементОтбора.ПравоеЗначение; + Отбор.Вставить(ПутьКДаннымПоля, СвойстваЭлементаОтбора); + +КонецПроцедуры + + +Функция СвойстваЭлементаОтбораОбработчикаРасшифровки(Отбор, ОсновныеСвойства) + + ЗначениеЭлементаОтбора = ОсновныеСвойства.Значение; + + Если ТипЗнч(ЗначениеЭлементаОтбора) = Тип("СписокЗначений") + И ЗначениеЭлементаОтбора.Количество() = 1 Тогда + + ЗначениеЭлементаОтбора = ЗначениеЭлементаОтбора[0].Значение; + КонецЕсли; + + СвойстваЭлементаОтбора = ВариантыОтчетовСлужебныйКлиентСервер.СвойстваОтбораОбработчикаРасшифровкиПоДетальнымЗаписям(); + СвойстваЭлементаОтбора.Значение = ЗначениеЭлементаОтбора; + + ЭлементыОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(Отбор, ОсновныеСвойства.Ключ); + + Если ЭлементыОтбора.Количество() > 0 Тогда + ЗаполнитьЗначенияСвойств(СвойстваЭлементаОтбора, ЭлементыОтбора[0], "РежимОтображения, Представление, ИдентификаторПользовательскойНастройки"); + КонецЕсли; + + Возврат СвойстваЭлементаОтбора; + +КонецФункции + +Процедура ПодготовитьПрименяемыеНастройкиОбработчикаРасшифровки(ВыполненноеДействие, ДополнительныеПараметры) + + Настройки = ДополнительныеПараметры.Данные.Настройки; + + Настройки.Структура.Очистить(); + Настройки.ПараметрыДанных.Элементы.Очистить(); + Настройки.Выбор.Элементы.Очистить(); + Настройки.Отбор.Элементы.Очистить(); + + ДополнительныеСвойства = Настройки.ДополнительныеСвойства; + ДополнительныеСвойства.Вставить("ДействиеОбработкиРасшифровки", ВыполненноеДействие); + ДополнительныеСвойства.Вставить("СвойстваЗаголовка", ДополнительныеПараметры.СвойстваОбласти.СвойстваЗаголовка); + + ДополнительныеПараметры.Вставить("Настройки", Настройки); + +КонецПроцедуры + +#КонецОбласти + Процедура ОткрытьФормуОтчета(Форма, ПараметрыОткрытия) НастройкиОтчета = Форма.НастройкиОтчета; Расшифровка = ПараметрыОткрытия.Расшифровка; - СтандартнаяОбработка = Истина; + Расшифровка = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных( + Форма.ОтчетДанныеРасшифровки, ПараметрыОткрытия.Расшифровка, ПараметрыОткрытия.Настройки); - Если СтандартнаяОбработка Тогда - - Расшифровка = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных( - Форма.ОтчетДанныеРасшифровки, ПараметрыОткрытия.Расшифровка, ПараметрыОткрытия.Настройки); - - ПредставлениеВарианта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = '%1 (Расшифровка)'"), Форма.ПредставлениеТекущегоВарианта); - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("Расшифровка", Расшифровка); - ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); - ПараметрыФормы.Вставить("ПредставлениеВарианта", ПредставлениеВарианта); - ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета); - - ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".Форма", ПараметрыФормы, Форма, Форма.УникальныйИдентификатор); + ПредставлениеВарианта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (Расшифровка)'"), Форма.ПредставлениеТекущегоВарианта); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Расшифровка", Расшифровка); + ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыФормы.Вставить("ПредставлениеВарианта", ПредставлениеВарианта); + ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета); + + Если ПараметрыОткрытия.Свойство("Отбор") + И ТипЗнч(ПараметрыОткрытия.Отбор) = Тип("Структура") Тогда + ПараметрыФормы.Вставить("Отбор", ПараметрыОткрытия.Отбор); КонецЕсли; + ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".Форма", ПараметрыФормы, Форма, Форма.УникальныйИдентификатор); + КонецПроцедуры #КонецОбласти @@ -3101,8 +3223,7 @@ // Функция КомпоновщикНастроекОтчета(Форма, РазвернутьАвтоПоля = Истина) - Если СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") - Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") Тогда + Если СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") Тогда КомпоновщикНастроек = Форма.КомпоновщикНастроек; @@ -3184,7 +3305,7 @@ Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "ФормаОтчета") Тогда Заголовки = ЗаголовкиОтчета(Форма); - Поле = Форма.ТекущийЭлемент; // ПолеФормы, РасширениеПоляФормыДляПоляТабличногоДокумента + Поле = Форма.ОтчетТабличныйДокумент; // ПолеФормы, РасширениеПоляФормыДляПоляТабличногоДокумента Область = Поле.ТекущаяОбласть; // ОбластьЯчеекТабличногоДокумента Возврат Заголовки[Область.Имя]; @@ -3263,7 +3384,7 @@ КонецФункции -Процедура ОповеститьОЗавершенииКонтекстнойНастройки(Форма, Действие, РазвернутьАвтоПоля = Истина) +Процедура ОповеститьОЗавершенииКонтекстнойНастройки(Форма, Действие, ТекущееПоле = Неопределено, РазвернутьАвтоПоля = Истина) ЭтоФормОтчета = СтрЗаканчиваетсяНа(Форма.ИмяФормы, "Форма") Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "ФормаОтчета"); @@ -3272,6 +3393,8 @@ КомпоновщикНастроек = КомпоновщикНастроекОтчета(Форма, РазвернутьАвтоПоля); КомпоновщикНастроек.ЗагрузитьНастройки(ИспользуемыеНастройки); + ДобавитьНастройкиВСтек(Форма, ИспользуемыеНастройки, Действие, ТекущееПоле); + ИдентификаторВладельца = ?(ЭтоФормОтчета, Форма.УникальныйИдентификатор, Форма.ВладелецФормы.УникальныйИдентификатор); Результат = СтандартныйРезультатНастройкиИзКонтекстногоМеню(КомпоновщикНастроек, Действие, ИдентификаторВладельца); @@ -3671,6 +3794,155 @@ КонецФункции +Функция ЭтоФормаОтчета(Форма) + + Возврат СтрЗаканчиваетсяНа(Форма.ИмяФормы, "Форма") + Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "ФормаОтчета"); + +КонецФункции + +#Область СтекНастроек + +Процедура ДобавитьНастройкиВСтек(Форма, Настройки, Действие, ТекущееПоле = Неопределено) Экспорт + + СтекНастроек = СтекНастроекОтчета(Форма); + + Если СтекНастроек = Неопределено Тогда + Возврат; + КонецЕсли; + + УдалитьРазрывСтекаНастроек(СтекНастроек); + СброситьПометкиСтекаНастроек(СтекНастроек); + + Запись = СтекНастроек.Добавить(); + Запись.Порядок = СтекНастроек.Количество(); + Запись.Пометка = Истина; + Запись.Настройки = Настройки; + Запись.Действие = Действие; + Запись.ПредставлениеДействия = ПредставлениеДействияСтекаНастроек(Форма, Запись, ТекущееПоле); + + УдалитьИзбыточныеЗаписиСтекаНастроек(СтекНастроек); + +КонецПроцедуры + +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// ЗаписьСтекаНастроек - ДанныеФормыЭлементКоллекции: +// * Действие - Строка +// * Настройки - НастройкиКомпоновкиДанных +// * Пометка - Булево +// * Порядок - Число +// * ПредставлениеДействия - Строка +// ТекущееПоле - Неопределено +// - Строка +// +// Возвращаемое значение: +// Строка +// +Функция ПредставлениеДействияСтекаНастроек(Форма, ЗаписьСтекаНастроек, ТекущееПоле) + + Действие = ЗаписьСтекаНастроек.Действие; + + Если ТекущееПоле = Неопределено Тогда + + СвойстваЗаголовка = СвойстваЗаголовкаОтчета(Форма); + ТекущееПоле = ?(СвойстваЗаголовка = Неопределено, Неопределено, СвойстваЗаголовка.Текст); + + КонецЕсли; + + НастройкиОтчета = Форма.НастройкиОтчета; // см. ВариантыОтчетов.НастройкиФормыОтчета + ПредставлениеСобытия = СтрЗаменить(НастройкиОтчета.СобытияНастроек[Действие], "...", ""); + + Если ЗначениеЗаполнено(ТекущееПоле) Тогда + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + "%1 '%2'", ПредставлениеСобытия, ТекущееПоле); + + КонецЕсли; + + Возврат ПредставлениеСобытия; + +КонецФункции + +Функция СтекНастроекОтчета(Форма) + + Если ЭтоФормаОтчета(Форма) Тогда + Возврат Форма.СтекНастроек; + КонецЕсли; + + ВладелецФормы = Форма.ВладелецФормы; + + Если ВладелецФормы <> Неопределено + И ЭтоФормаОтчета(ВладелецФормы) Тогда + + Возврат ВладелецФормы.СтекНастроек; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +Процедура УдалитьРазрывСтекаНастроек(СтекНастроек) + + КоличествоНастроекСтека = СтекНастроек.Количество(); + + Если КоличествоНастроекСтека = 0 Тогда + Возврат; + КонецЕсли; + + СтекНастроек.Сортировать("Порядок Возр"); + + ТекущиеНастройкиСтека = СтекНастроек.НайтиСтроки(Новый Структура("Пометка", Истина)); + + Если ТекущиеНастройкиСтека.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ИндексТекущихНастроек = СтекНастроек.Индекс(ТекущиеНастройкиСтека[0]); + ГраницаСтекаНастроек = КоличествоНастроекСтека - 1; + + Если ИндексТекущихНастроек = ГраницаСтекаНастроек Тогда + Возврат; + КонецЕсли; + + Пока ГраницаСтекаНастроек > ИндексТекущихНастроек Цикл + + СтекНастроек.Удалить(ГраницаСтекаНастроек); + ГраницаСтекаНастроек = ГраницаСтекаНастроек - 1; + + КонецЦикла; + +КонецПроцедуры + +Процедура СброситьПометкиСтекаНастроек(СтекНастроек) Экспорт + + Для Каждого Запись Из СтекНастроек Цикл + Запись.Пометка = Ложь; + КонецЦикла; + +КонецПроцедуры + +Процедура УдалитьИзбыточныеЗаписиСтекаНастроек(СтекНастроек) + + Если СтекНастроек.Количество() <= ВариантыОтчетовСлужебныйКлиентСервер.МаксимальныйРазмерСтекаНастроек() Тогда + Возврат; + КонецЕсли; + + СтекНастроек.Удалить(0); + + Порядок = 0; + + Для Каждого Запись Из СтекНастроек Цикл + + Порядок = Порядок + 1; + Запись.Порядок = Порядок; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #КонецОбласти diff --git a/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиентСервер/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиентСервер/Module.bsl index e3f24a350..57b4a8e5f 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовСлужебныйКлиентСервер/Module.bsl @@ -152,6 +152,19 @@ КонецФункции +Функция СвойстваОтбораОбработчикаРасшифровкиПоДетальнымЗаписям() Экспорт + + СвойстваЭлементаОтбора = Новый Структура; + СвойстваЭлементаОтбора.Вставить("Значение", Неопределено); + СвойстваЭлементаОтбора.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных.Равно); + СвойстваЭлементаОтбора.Вставить("РежимОтображения", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + СвойстваЭлементаОтбора.Вставить("Представление", ""); + СвойстваЭлементаОтбора.Вставить("ИдентификаторПользовательскойНастройки", ""); + + Возврат СвойстваЭлементаОтбора; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -393,4 +406,22 @@ КонецФункции +Функция МаксимальныйРазмерСтекаНастроек() Экспорт + + Возврат 10; + +КонецФункции + +Функция ИмяСобытияФормыНастроек() Экспорт + + Возврат "ФормаНастроек"; + +КонецФункции + +Функция ИмяСобытияИзмененияСоставаБыстрыхНастроек() Экспорт + + Возврат "ИзменитьСоставБыстрыхНастроек"; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl index 614d27555..97fa98774 100644 --- a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl +++ b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl @@ -1511,11 +1511,7 @@ ОписаниеОбъекта.Вставить("Описание", Описание); ОписаниеОбъекта.Вставить("НомерВерсии", НомерВерсии); - - ТабличныйДокумент = Новый ТабличныйДокумент; - СформироватьОтчетПоВерсииОбъекта(ТабличныйДокумент, ОписаниеОбъекта, СсылкаНаОбъект); - - Возврат ТабличныйДокумент; + Возврат СформироватьОтчетПоВерсииОбъекта(ОписаниеОбъекта, СсылкаНаОбъект); КонецФункции @@ -2213,25 +2209,25 @@ ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, Новый ТаблицаЗначений); КонецЕсли; - НовоеЗР = ЗначенияРеквизитов.Добавить(); - НовоеЗР.НаименованиеРеквизита = ИмяРеквизита; + НовоеЗначение = ЗначенияРеквизитов.Добавить(); + НовоеЗначение.НаименованиеРеквизита = ИмяРеквизита; Если ЧтениеXML.КоличествоАтрибутов() > 0 Тогда Пока ЧтениеXML.ПрочитатьАтрибут() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.Атрибут И ЧтениеXML.Имя = "xsi:type" Тогда - НовоеЗР.ТипРеквизита = ЧтениеXML.Значение; + НовоеЗначение.ТипРеквизита = ЧтениеXML.Значение; XMLТип = ЧтениеXML.Значение; Если СтрНачинаетсяС(XMLТип, "xs:") Тогда - НовоеЗР.Тип = ИзXMLТипа(Новый ТипДанныхXML(Прав(XMLТип, СтрДлина(XMLТип)-3), "http://www.w3.org/2001/XMLSchema")); + НовоеЗначение.Тип = ИзXMLТипа(Новый ТипДанныхXML(Прав(XMLТип, СтрДлина(XMLТип)-3), "http://www.w3.org/2001/XMLSchema")); Иначе - НовоеЗР.Тип = ИзXMLТипа(Новый ТипДанныхXML(XMLТип, "")); + НовоеЗначение.Тип = ИзXMLТипа(Новый ТипДанныхXML(XMLТип, "")); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; - Если Не ЗначениеЗаполнено(НовоеЗР.Тип) Тогда + Если Не ЗначениеЗаполнено(НовоеЗначение.Тип) Тогда ОписаниеРеквизита = МетаданныеРеквизита(МетаданныеОбъекта, ИмяРеквизита); Если ОписаниеРеквизита = Неопределено Тогда ОписаниеРеквизита = Метаданные.ОбщиеРеквизиты.Найти(ИмяРеквизита); @@ -2242,7 +2238,7 @@ Если ОписаниеРеквизита <> Неопределено И ОписаниеРеквизита.Тип.Типы().Количество() = 1 Тогда - НовоеЗР.Тип = ОписаниеРеквизита.Тип.Типы()[0]; + НовоеЗначение.Тип = ОписаниеРеквизита.Тип.Типы()[0]; КонецЕсли; КонецЕсли; ИначеЕсли (УровеньЧтения = 3) И ЧтениеXML.Имя = "Row" Тогда // Указатель на поле табличной части. @@ -2252,8 +2248,8 @@ ТабличныеЧасти[ИмяТабличнойЧасти].Добавить(); ИначеЕсли УровеньЧтения = 4 Тогда Если ЧтениеXML.Имя = "v8:Type" Тогда - Если НовоеЗР.ЗначениеРеквизита = Неопределено Тогда - НовоеЗР.ЗначениеРеквизита = ""; + Если НовоеЗначение.ЗначениеРеквизита = Неопределено Тогда + НовоеЗначение.ЗначениеРеквизита = ""; КонецЕсли; Иначе // Указатель на поле табличной части. ТипЗначенияПоляТЧ = ""; @@ -2283,20 +2279,20 @@ ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда Если (УровеньЧтения = 2) Тогда // значение реквизита Попытка - НовоеЗР.ЗначениеРеквизита = ?(ЗначениеЗаполнено(НовоеЗР.Тип), XMLЗначение(НовоеЗР.Тип, ЧтениеXML.Значение), ЧтениеXML.Значение); + НовоеЗначение.ЗначениеРеквизита = ?(ЗначениеЗаполнено(НовоеЗначение.Тип), XMLЗначение(НовоеЗначение.Тип, ЧтениеXML.Значение), ЧтениеXML.Значение); Исключение - НовоеЗР.ЗначениеРеквизита = ЧтениеXML.Значение; + НовоеЗначение.ЗначениеРеквизита = ЧтениеXML.Значение; КонецПопытки; ИначеЕсли (УровеньЧтения = 4) Тогда // значение реквизита - Если НовоеЗР.Тип = Тип("ОписаниеТипов") Тогда + Если НовоеЗначение.Тип = Тип("ОписаниеТипов") Тогда ТипСтрокой = Строка(ИзXMLТипа(Новый ТипДанныхXML(ЧтениеXML.Значение, ""))); Если ПустаяСтрока(ТипСтрокой) Тогда ТипСтрокой = ЧтениеXML.Значение; КонецЕсли; - Если Не ПустаяСтрока(НовоеЗР.ЗначениеРеквизита) Тогда - НовоеЗР.ЗначениеРеквизита = НовоеЗР.ЗначениеРеквизита + Символы.ПС; + Если Не ПустаяСтрока(НовоеЗначение.ЗначениеРеквизита) Тогда + НовоеЗначение.ЗначениеРеквизита = НовоеЗначение.ЗначениеРеквизита + Символы.ПС; КонецЕсли; - НовоеЗР.ЗначениеРеквизита = НовоеЗР.ЗначениеРеквизита + ТипСтрокой; + НовоеЗначение.ЗначениеРеквизита = НовоеЗначение.ЗначениеРеквизита + ТипСтрокой; Иначе Если ТипЗначенияПоляТЧ = "" Тогда ОписаниеРеквизита = Неопределено; @@ -2457,15 +2453,13 @@ Возврат Результат; КонецФункции -Процедура СформироватьОтчетПоВерсииОбъекта(ТабличныйДокумент, ОписаниеОбъекта, СсылкаНаОбъект) +Функция СформироватьОтчетПоВерсииОбъекта(ОписаниеОбъекта, СсылкаНаОбъект) Если СсылкаНаОбъект.Метаданные().Макеты.Найти("МакетОбъекта") <> Неопределено Тогда Макет = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОбъект).ПолучитьМакет("МакетОбъекта"); + Возврат СформироватьПоСтандартномуМакету(Макет, ОписаниеОбъекта, ОписаниеОбъекта.Описание, СсылкаНаОбъект); Иначе - Макет = Неопределено; - КонецЕсли; - - Если Макет = Неопределено Тогда + ТабличныйДокумент = Новый ТабличныйДокумент; Секция = ТабличныйДокумент.ПолучитьОбласть("R2"); ВывестиТекстВОтчет(ТабличныйДокумент, Секция, "R2C2", СсылкаНаОбъект.Метаданные().Синоним, 16, Истина); @@ -2478,20 +2472,16 @@ ЧислоВыведенныхСтрок = ВывестиРеквизитыПоРазобранномуОбъекту(ТабличныйДокумент, ОписаниеОбъекта, СсылкаНаОбъект); ВывестиТабличныеЧастиПоРазобранномуОбъекту(ТабличныйДокумент, ОписаниеОбъекта, ЧислоВыведенныхСтрок + 7, СсылкаНаОбъект); ВывестиТабличныеДокументыПоРазобранномуОбъекту(ТабличныйДокумент, ОписаниеОбъекта); - Иначе - СформироватьПоСтандартномуМакету(ТабличныйДокумент, Макет, ОписаниеОбъекта, ОписаниеОбъекта.Описание, СсылкаНаОбъект); + Возврат ТабличныйДокумент; КонецЕсли; -КонецПроцедуры +КонецФункции -Процедура СформироватьПоСтандартномуМакету(ТЧОтчета, Макет, ВерсияОбъекта, Знач ОписаниеВерсии, СсылкаНаОбъект) +Функция СформироватьПоСтандартномуМакету(Макет, ВерсияОбъекта, Знач ОписаниеВерсии, СсылкаНаОбъект) + Результат = Новый ТабличныйДокумент; МетаданныеОбъекта = СсылкаНаОбъект.Метаданные(); - НаименованиеОбъекта = МетаданныеОбъекта.Имя; - - ТЧОтчета = Новый ТабличныйДокумент; - Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда Макет = Справочники[НаименованиеОбъекта].ПолучитьМакет("МакетОбъекта"); Иначе @@ -2500,14 +2490,14 @@ // Заголовок Область = Макет.ПолучитьОбласть("Заголовок"); - ТЧОтчета.Вывести(Область); + Результат.Вывести(Область); - Область = ТЧОтчета.ПолучитьОбласть("R3"); + Область = Результат.ПолучитьОбласть("R3"); УстановитьСвойстваТекста(Область.Область("R1C2"), ОписаниеВерсии, , Истина); - ТЧОтчета.Вывести(Область); + Результат.Вывести(Область); - Область = ТЧОтчета.ПолучитьОбласть("R5"); - ТЧОтчета.Вывести(Область); + Область = Результат.ПолучитьОбласть("R5"); + Результат.Вывести(Область); // Шапка Шапка = Макет.ПолучитьОбласть("Шапка"); @@ -2526,7 +2516,7 @@ Реквизиты.Вставить(ИмяРеквизита, ЗначениеРеквизита); КонецЦикла; Шапка.Параметры.Заполнить(Реквизиты); - ТЧОтчета.Вывести(Шапка); + Результат.Вывести(Шапка); ИменаТабличныхЧастей = Новый Массив; Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл @@ -2543,29 +2533,27 @@ Продолжить; КонецЕсли; - ТабличнаяЧасть = ВерсияОбъекта.ТабличныеЧасти[ИмяТабличнойЧасти].Скопировать();// ТаблицаЗначений + ТабличнаяЧасть = ВерсияОбъекта.ТабличныеЧасти[ИмяТабличнойЧасти].Скопировать(); // ТаблицаЗначений ТабличнаяЧасть.Колонки.Добавить("НомерСтроки"); ИмяОбласти = ИмяТабличнойЧасти + "Шапка"; - Если Макет.Области.Найти(ИмяОбласти) <> Неопределено Тогда - Область = Макет.ПолучитьОбласть(ИмяОбласти); - Иначе + Если Макет.Области.Найти(ИмяОбласти) = Неопределено Тогда Продолжить; КонецЕсли; - ТЧОтчета.Вывести(Область); + Область = Макет.ПолучитьОбласть(ИмяОбласти); + Результат.Вывести(Область); ИмяОбласти = ИмяТабличнойЧасти; - Если Макет.Области.Найти(ИмяОбласти) <> Неопределено Тогда - Область = Макет.ПолучитьОбласть(ИмяОбласти); - Иначе + Если Макет.Области.Найти(ИмяОбласти) = Неопределено Тогда Продолжить; КонецЕсли; + Область = Макет.ПолучитьОбласть(ИмяОбласти); НомерСтроки = 0; Для Каждого СтрокаТаблицы Из ТабличнаяЧасть Цикл НомерСтроки = НомерСтроки + 1; СтрокаТаблицы.НомерСтроки = НомерСтроки; Область.Параметры.Заполнить(СтрокаТаблицы); - ТЧОтчета.Вывести(Область); + Результат.Вывести(Область); КонецЦикла; КонецЦикла; @@ -2574,7 +2562,7 @@ Если ТабличныеДокументы <> Неопределено Тогда Если Макет.Области.Найти("ШапкаТабличныхДокументов") <> Неопределено Тогда ШапкаТабличныхДокументов = Макет.ПолучитьОбласть("ШапкаТабличныхДокументов"); - ТЧОтчета.Вывести(ШапкаТабличныхДокументов); + Результат.Вывести(ШапкаТабличныхДокументов); ШапкаТабличногоДокумента = ?(Макет.Области.Найти("ШапкаТабличногоДокумента") = Неопределено, Неопределено, Макет.ПолучитьОбласть("ШапкаТабличногоДокумента")); @@ -2582,51 +2570,47 @@ Если ШапкаТабличногоДокумента <> Неопределено Тогда НаименованиеТабличногоДокумента = Новый Структура("НаименованиеТабличногоДокумента", ЭлементСтруктуры.Значение.Наименование); ШапкаТабличногоДокумента.Параметры.Заполнить(НаименованиеТабличногоДокумента); - ТЧОтчета.Вывести(ШапкаТабличногоДокумента); + Результат.Вывести(ШапкаТабличногоДокумента); КонецЕсли; - ТЧОтчета.Вывести(ЭлементСтруктуры.Значение.Данные); + Результат.Вывести(ЭлементСтруктуры.Значение.Данные); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; - ТЧОтчета.ОтображатьСетку = Ложь; - ТЧОтчета.Защита = Истина; - ТЧОтчета.ТолькоПросмотр = Истина; - ТЧОтчета.ОтображатьЗаголовки = Ложь; + Результат.ОтображатьСетку = Ложь; + Результат.Защита = Истина; + Результат.ТолькоПросмотр = Истина; + Результат.ОтображатьЗаголовки = Ложь; -КонецПроцедуры +КонецФункции -// Выводит шапку отчета при выводе отчета по версии объекта. -// -Процедура ВывестиШапкуПоВерсии(ТЧОтчета, Знач Текст, Знач НомерСтроки, Знач НомерКолонки) +Процедура ВывестиШапкуПоВерсии(Результат, Знач Текст, Знач НомерСтроки, Знач НомерКолонки) Если Не ПустаяСтрока(Текст) Тогда - ТЧОтчета.Область("C"+Строка(НомерКолонки)).ШиринаКолонки = 50; + Результат.Область("C" + Строка(НомерКолонки)).ШиринаКолонки = 50; Регион = "R" + Формат(НомерСтроки, "ЧГ=0") + "C" + Формат(НомерКолонки, "ЧГ=0"); - ТЧОтчета.Область(Регион).Текст = Текст; - ТЧОтчета.Область(Регион).ЦветФона = ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет; - ТЧОтчета.Область(Регион).Шрифт = Новый Шрифт(, 8, Истина, , , ); - ТЧОтчета.Область(Регион).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + Результат.Область(Регион).Текст = Текст; + Результат.Область(Регион).ЦветФона = ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет; + Результат.Область(Регион).Шрифт = Новый Шрифт(, 8, Истина, , , ); + Результат.Область(Регион).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + Результат.Область(Регион).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + Результат.Область(Регион).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + Результат.Область(Регион).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); КонецЕсли; КонецПроцедуры -// Выводит изменившиеся реквизиты в отчет. При этом получает их представление. -// -Функция ВывестиРеквизитыПоРазобранномуОбъекту(ТЧОтчета, ВерсияОбъекта, СсылкаНаОбъект) +Функция ВывестиРеквизитыПоРазобранномуОбъекту(Результат, ВерсияОбъекта, СсылкаНаОбъект) - Секция = ТЧОтчета.ПолучитьОбласть("R6"); - ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C1:R1C3", " "); - ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C2", "Реквизиты", 11, Истина); - ТЧОтчета.НачатьГруппуСтрок("ГруппаРеквизитов"); - ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C1:R1C3", " "); + Секция = Результат.ПолучитьОбласть("R6"); + ВывестиТекстВОтчет(Результат, Секция, "R1C1:R1C3", " "); + ВывестиТекстВОтчет(Результат, Секция, "R1C2", "Реквизиты", 11, Истина); + Результат.НачатьГруппуСтрок("ГруппаРеквизитов"); + ВывестиТекстВОтчет(Результат, Секция, "R1C1:R1C3", " "); ЧислоВыводимыхСтрок = 0; @@ -2656,20 +2640,18 @@ Секция.Область("R1C2:R1C3").ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1, 0); Секция.Область("R1C2:R1C3").ЦветРамки = ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет; - ТЧОтчета.Вывести(Секция); + Результат.Вывести(Секция); ЧислоВыводимыхСтрок = ЧислоВыводимыхСтрок + 1; КонецЦикла; - ТЧОтчета.ЗакончитьГруппуСтрок(); + Результат.ЗакончитьГруппуСтрок(); Возврат ЧислоВыводимыхСтрок; КонецФункции -// Выводит табличные части по разобранному объекту, при выводе единственного объекта. -// -Процедура ВывестиТабличныеЧастиПоРазобранномуОбъекту(ТЧОтчета, ВерсияОбъекта, НомерСтрокиВывода, СсылкаНаОбъект) +Процедура ВывестиТабличныеЧастиПоРазобранномуОбъекту(Результат, ВерсияОбъекта, НомерСтрокиВывода, СсылкаНаОбъект) Если ВерсияОбъекта.ТабличныеЧасти.Количество() = 0 Тогда Возврат; @@ -2680,7 +2662,7 @@ Для Каждого СтрокаТабличнаяЧасть Из ВерсияОбъекта.ТабличныеЧасти Цикл НаименованиеТабличнойЧасти = СтрокаТабличнаяЧасть.Ключ; - ТабличнаяЧасть = СтрокаТабличнаяЧасть.Значение;// ТаблицаЗначений + ТабличнаяЧасть = СтрокаТабличнаяЧасть.Значение; // ТаблицаЗначений Если ТабличнаяЧасть.Количество() = 0 Тогда Продолжить; КонецЕсли; @@ -2691,14 +2673,14 @@ СинонимТЧ = МетаданныеТЧ.Представление(); КонецЕсли; - Секция = ТЧОтчета.ПолучитьОбласть("R" + XMLСтрока(НомерСтрокиВывода)); - ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C1:R1C100", " "); - ОбластьВывода = ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C2", СинонимТЧ, 11, Истина); - ТЧОтчета.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").СоздатьФорматСтрок(); - ТЧОтчета.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").ШиринаКолонки = Окр(СтрДлина(СинонимТЧ)*2, 0, РежимОкругления.Окр15как20); - ТЧОтчета.НачатьГруппуСтрок("ГруппаСтрок"); + Секция = Результат.ПолучитьОбласть("R" + XMLСтрока(НомерСтрокиВывода)); + ВывестиТекстВОтчет(Результат, Секция, "R1C1:R1C" + Формат(ТабличнаяЧасть.Колонки.Количество(), "ЧГ=0"), " "); + ОбластьВывода = ВывестиТекстВОтчет(Результат, Секция, "R1C2", СинонимТЧ, 11, Истина); + Результат.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").СоздатьФорматСтрок(); + Результат.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").ШиринаКолонки = Окр(СтрДлина(СинонимТЧ)*2, 0, РежимОкругления.Окр15как20); + Результат.НачатьГруппуСтрок("ГруппаСтрок"); - ВывестиТекстВОтчет(ТЧОтчета, Секция, "R1C1:R1C3", " "); + ВывестиТекстВОтчет(Результат, Секция, "R1C1:R1C3", " "); ЧислоВыводимыхСтрок = ЧислоВыводимыхСтрок + 1; НомерСтрокиВывода = НомерСтрокиВывода + 3; @@ -2716,7 +2698,8 @@ НомерСтроки = 1; Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл НомерСтроки = НомерСтроки + 1; - УстановитьСвойстваТекста(Секция.Область("R" + Формат(НомерСтроки, "ЧГ=0") + "C1"), Формат(НомерСтроки-1, "ЧГ=0"), , Ложь, Истина); + УстановитьСвойстваТекста(Секция.Область("R" + Формат(НомерСтроки, "ЧГ=0") + "C1"), + Формат(НомерСтроки-1, "ЧГ=0"), , Ложь, Истина); КонецЦикла; ДобавляемаяТЧ.Присоединить(Секция); @@ -2760,20 +2743,18 @@ НомерКолонки = НомерКолонки + 1; КонецЦикла; - ОбластьВывода = ТЧОтчета.Вывести(ДобавляемаяТЧ); - ТЧОтчета.Область(ОбластьВывода.Верх, 1, ОбластьВывода.Низ, НомерКолонки).СоздатьФорматСтрок(); - ТЧОтчета.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").ШиринаКолонки = 7; + ОбластьВывода = Результат.Вывести(ДобавляемаяТЧ); + Результат.Область(ОбластьВывода.Верх, 1, ОбластьВывода.Низ, НомерКолонки).СоздатьФорматСтрок(); + Результат.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C2").ШиринаКолонки = 7; Для ТекущийНомерКолонки = 3 По НомерКолонки-1 Цикл - ТЧОтчета.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C" + Формат(ТекущийНомерКолонки, "ЧГ=0")).ШиринаКолонки = СоответствиеРазмерностиКолонок[ТекущийНомерКолонки]; + Результат.Область("R" + Формат(ОбластьВывода.Верх, "ЧГ=0") + "C" + Формат(ТекущийНомерКолонки, "ЧГ=0")).ШиринаКолонки = СоответствиеРазмерностиКолонок[ТекущийНомерКолонки]; КонецЦикла; - ТЧОтчета.ЗакончитьГруппуСтрок(); + Результат.ЗакончитьГруппуСтрок(); КонецЦикла; КонецПроцедуры -// Выводит текст в область табличного документа с определенным оформлением. -// -Функция ВывестиТекстВОтчет(ТаблицаОтчета, Знач Секция, Знач Регион, Знач Текст, Знач Размер = 9, Знач Жирный = Ложь) +Функция ВывестиТекстВОтчет(Результат, Знач Секция, Знач Регион, Знач Текст, Знач Размер = 9, Знач Жирный = Ложь) ОбластьСекции = Секция.Область(Регион); @@ -2790,13 +2771,10 @@ КонецЕсли; - Возврат ТаблицаОтчета.Вывести(Секция); + Возврат Результат.Вывести(Секция); КонецФункции -// Используется для вывода текста в область табличного документа -// с условным оформлением. -// Процедура УстановитьСвойстваТекста(ОбластьСекции, Текст, Знач Размер = 9, Знач Жирный = Ложь, Знач ПоказыватьГраницы = Ложь) Если ТипЗнч(ОбластьСекции) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда @@ -2816,9 +2794,6 @@ КонецПроцедуры -// Формирует пустой сектор для вывода в отчет. Используется, -// если строка не была изменена в одной из версий. -// Функция СформироватьПустойСектор(Знач ЧислоСтрок, Знач ТипВывода = "") ЗначениеЗаполнения = Новый Массив; @@ -2841,7 +2816,7 @@ ТабличныйДокумент = Новый ТабличныйДокумент; - Если ТипВывода = "" Тогда + Если ТипВывода = "" Тогда Шаблон = ОбщийШаблон.ПолучитьОбласть("ИсходноеЗначениеРеквизита"); ИначеЕсли ТипВывода = "И" Тогда Шаблон = ОбщийШаблон.ПолучитьОбласть("ИзмененноеЗначениеРеквизита"); @@ -2894,7 +2869,6 @@ КонецФункции -// Выводит табличные документы по разобранному объекту, при выводе единственного объекта. Процедура ВывестиТабличныеДокументыПоРазобранномуОбъекту(ТабличныйДокумент, ОписаниеОбъекта) ТабличныеДокументы = ОписаниеОбъекта.ТабличныеДокументы;// см. ТабличныеДокументыОбъекта diff --git a/SSL/src/CommonModules/Взаимодействия/Module.bsl b/SSL/src/CommonModules/Взаимодействия/Module.bsl index 451ce88b8..e2a5e3d61 100644 --- a/SSL/src/CommonModules/Взаимодействия/Module.bsl +++ b/SSL/src/CommonModules/Взаимодействия/Module.bsl @@ -646,10 +646,11 @@ ИнформацияОбОшибке = ИнформацияОбОшибке(); ШаблонТекстаСообщения = НСтр("ru = 'Не удалось отправить письмо по причине: |%1'"); - + + ТекстОшибки = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(ИнформацияОбОшибке, ОбщегоНазначения.КодОсновногоЯзыка()); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,, Письмо, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, ТекстОшибки)); РезультатОтправкиПисьма.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); Возврат РезультатОтправкиПисьма; @@ -3022,13 +3023,15 @@ Иначе - ФорматированныйДокумент = ПодписьФорматированныйДокумент; Если ФорматированныйДокумент <> Неопределено Тогда + + ФорматированныйДокумент = ПодписьФорматированныйДокумент; ФорматированныйДокумент.Вставить(ФорматированныйДокумент.ПолучитьЗакладкуНачала(),, ТипЭлементаФорматированногоДокумента.ПереводСтроки); ФорматированныйДокумент.Вставить(ФорматированныйДокумент.ПолучитьЗакладкуНачала(),, ТипЭлементаФорматированногоДокумента.ПереводСтроки); СтруктураВозврата.Подпись = ФорматированныйДокумент; + КонецЕсли; КонецЕсли; diff --git a/SSL/src/CommonModules/ВнешниеКомпонентыСервер/Module.bsl b/SSL/src/CommonModules/ВнешниеКомпонентыСервер/Module.bsl index 79e7f8f2a..b6a47987e 100644 --- a/SSL/src/CommonModules/ВнешниеКомпонентыСервер/Module.bsl +++ b/SSL/src/CommonModules/ВнешниеКомпонентыСервер/Module.bsl @@ -97,8 +97,9 @@ Возврат ОписаниеВнешнихКомпонент; Иначе - ВызватьИсключение - НСтр("ru = 'Ожидается существование подсистемы ""ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент""'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), + "ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"); КонецЕсли; КонецФункции @@ -245,8 +246,9 @@ КонецЕсли; Иначе - ВызватьИсключение - НСтр("ru = 'Ожидается существование подсистемы ""ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент""'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), + "ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ВнешниеКомпонентыСлужебный/Module.bsl b/SSL/src/CommonModules/ВнешниеКомпонентыСлужебный/Module.bsl index 9b7eaea5a..1aeef1305 100644 --- a/SSL/src/CommonModules/ВнешниеКомпонентыСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ВнешниеКомпонентыСлужебный/Module.bsl @@ -387,7 +387,7 @@ Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "3.1.5.282"; + Обработчик.Версия = "3.1.6.48"; Обработчик.Идентификатор = Новый УникальныйИдентификатор("cb3e8653-f1d2-4439-afdd-b1d27f6dcc2f"); Обработчик.Процедура = "Справочники.ВнешниеКомпоненты.ОбработатьДанныеДляПереходаНаНовуюВерсию"; Обработчик.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -426,7 +426,9 @@ Если ПустаяСтрока(Идентификатор) Тогда КомпонентаСодержитЕдинственныйКлассОбъектов = (ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Количество() = 0); Если КомпонентаСодержитЕдинственныйКлассОбъектов Тогда - ВызватьИсключение НСтр("ru = 'Недопустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов в ВнешниеКомпонентыСлужебный.ПроверитьПодключениеКомпоненты'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимо одновременно не указывать %1 и %2 при подключении внешней компоненты.'"), + "Идентификатор", "ИдентификаторыСозданияОбъектов"); КонецЕсли; Идентификатор = СтрСоединить(ПараметрыПодключения.ИдентификаторыСозданияОбъектов, ", "); КонецЕсли; @@ -898,14 +900,14 @@ ИнформацияОбОшибке = НСтр("ru = 'На портале 1С:ИТС нет требуемой внешней компоненты %1.'"); ИначеЕсли КодОшибки = "ОтсутствуетВерсия" Тогда ИнформацияОбОшибке = НСтр("ru = 'На портале 1С:ИТС нет требуемой версии внешней компоненты %1.'"); - ИначеЕсли КодОшибки = "ФайлНеЗагружен" Тогда - ИнформацияОбОшибке = НСтр("ru = 'При загрузке внешней компоненты %1 произошла непредвиденная ошибка (код ФайлНеЗагружен).'"); - ИначеЕсли КодОшибки = "АктуальнаяВерсия" Тогда - ИнформацияОбОшибке = НСтр("ru = 'При загрузке внешней компоненты %1 произошла непредвиденная ошибка (код АктуальнаяВерсия).'"); + ИначеЕсли КодОшибки = "ФайлНеЗагружен" Или КодОшибки = "АктуальнаяВерсия" Тогда + ИнформацияОбОшибке = НСтр("ru = 'При загрузке внешней компоненты %1 произошла непредвиденная ошибка (код %2).'"); КонецЕсли; - ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформацияОбОшибке, ПредставлениеКомпоненты(Идентификатор, Версия)); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИнформацияОбОшибке, + ПредставлениеКомпоненты(Идентификатор, Версия), КодОшибки); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -913,7 +915,8 @@ Информация = ИнформацияОКомпонентеИзФайла(ДвоичныеДанные, Ложь); Если Не Информация.Разобрано Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , Информация.ОписаниеОшибки); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление внешних компонент'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , Информация.ОписаниеОшибки); ВызватьИсключение Информация.ОписаниеОшибки; КонецЕсли; @@ -926,7 +929,8 @@ Объект.Заполнить(Неопределено); // Конструктор по умолчанию. ЗаполнитьЗначенияСвойств(Объект, Информация.Реквизиты); // По данным манифеста. ЗаполнитьЗначенияСвойств(Объект, СтрокаРезультата); // По данным с сайта. - Объект.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Загружена с Портала 1С:ИТС. %1.'"), ТекущаяДатаСеанса()); + Объект.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Загружена с Портала 1С:ИТС. %1.'"), ТекущаяДатаСеанса()); Объект.ДополнительныеСвойства.Вставить("ДвоичныеДанныеКомпоненты", Информация.ДвоичныеДанные); @@ -943,7 +947,9 @@ КонецПопытки; Иначе - ВызватьИсключение НСтр("ru = 'Подсистема ""ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"" не внедрена в конфигурацию.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), + "ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"); КонецЕсли; КонецПроцедуры @@ -990,7 +996,9 @@ ВнешниеКомпонентыСервер.ОбновитьВнешниеКомпоненты(РезультатОперации.ДанныеВнешнихКомпонент, АдресРезультата); Иначе - ВызватьИсключение НСтр("ru = 'Подсистема ""ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"" не внедрена в конфигурацию.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Действие недоступно, т.к. отсутствует подсистема ""%1"".'"), + "ИнтернетПоддержкаПользователей.ПолучениеВнешнихКомпонент"); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ВнешниеКомпонентыСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ВнешниеКомпонентыСлужебныйКлиент/Module.bsl index 7ecb49631..55cbc86b0 100644 --- a/SSL/src/CommonModules/ВнешниеКомпонентыСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ВнешниеКомпонентыСлужебныйКлиент/Module.bsl @@ -154,7 +154,15 @@ КонецПроцедуры -Функция РезультатДоступностиКомпоненты() +// Возвращаемое значение: +// Структура: +// * Доступна - Булево +// * Версия - Строка +// * КомпонентаПоследнейВерсии - см. СтандартныеПодсистемыСервер.КомпонентаПоследнейВерсии +// * ОписаниеОшибки - Строка +// * Местоположение - Строка +// +Функция РезультатДоступностиКомпоненты() Экспорт Результат = Новый Структура; Результат.Вставить("Доступна", Ложь); @@ -425,8 +433,8 @@ НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на клиенте |из реестра Windows |по причине: - |Метод НачатьПодключениеВнешнейКомпоненты вернул Ложь.'"), - Контекст.Идентификатор); + |Метод %2 вернул %3.'"), + Контекст.Идентификатор, "НачатьПодключениеВнешнейКомпоненты", "Ложь"); ОбщегоНазначенияСлужебныйКлиент.ПодключитьКомпонентуОповеститьОбОшибке(ТекстОшибки, Контекст); diff --git a/SSL/src/CommonModules/ДлительныеОперацииКлиент/Module.bsl b/SSL/src/CommonModules/ДлительныеОперацииКлиент/Module.bsl index daa22f0a7..9ef8bd6a1 100644 --- a/SSL/src/CommonModules/ДлительныеОперацииКлиент/Module.bsl +++ b/SSL/src/CommonModules/ДлительныеОперацииКлиент/Module.bsl @@ -106,6 +106,7 @@ // Структура - параметры выполнения задания: // * ФормаВладелец - ФормаКлиентскогоПриложения // - Неопределено - форма, из которой вызывается длительная операция. +// * Заголовок - Строка - заголовок окна, выводимый на форме ожидания. Если не задан, то не выводится. // * ТекстСообщения - Строка - текст сообщения, выводимый на форме ожидания. // Если не задан, то выводится "Пожалуйста, подождите...". // * ВыводитьОкноОжидания - Булево - если Истина, то открыть окно ожидания с визуальной индикацией длительной операции. diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl index f7566acd8..974f09a37 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl @@ -243,13 +243,15 @@ УстановитьПривилегированныйРежим(Истина); - Если ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Или Ссылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка() Тогда + Если ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") + Или Ссылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка() Тогда ВызватьИсключение НСтр("ru = 'Запрошено подключение несуществующей дополнительной обработки.'"); КонецЕсли; ПроверитьВозможностьВыполнения(Ссылка); - Если ПолучитьФункциональнуюОпцию("НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса") Тогда + Если НЕ ЭтоПоставляемаяОбработка(Ссылка) + И ПолучитьФункциональнуюОпцию("НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса") Тогда Возврат; КонецЕсли; diff --git a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl index dcb875a88..4e5403d77 100644 --- a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl +++ b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl @@ -484,7 +484,12 @@ НовоеЗначение.Вставить(РазделениеДанныхМассив[0], МассивЗначенийРазделителей); Иначе - ЗначенияОтбора = СтрРазделить(ЗначениеИзСписка.Значение, Символы.ПС, Ложь); + Если ТипЗнч(ЗначениеИзСписка.Значение) = Тип("Число") Тогда + НовоеЗначение.Добавить(ЗначениеИзСписка.Значение); + Продолжить; + Иначе + ЗначенияОтбора = СтрРазделить(ЗначениеИзСписка.Значение, Символы.ПС, Ложь); + КонецЕсли; Для Каждого ЗначениеОтбора Из ЗначенияОтбора Цикл НовоеЗначение.Добавить(ЗначениеОтбора); КонецЦикла; diff --git a/SSL/src/CommonModules/ИнтеграцияПодсистемБСП/Module.bsl b/SSL/src/CommonModules/ИнтеграцияПодсистемБСП/Module.bsl index ec95953ed..15947a2e2 100644 --- a/SSL/src/CommonModules/ИнтеграцияПодсистемБСП/Module.bsl +++ b/SSL/src/CommonModules/ИнтеграцияПодсистемБСП/Module.bsl @@ -92,6 +92,8 @@ События.Вставить("ПечатьДокументовПриЗагрузкеДанныхИзНастроекНаСервере", Ложь); События.Вставить("ПечатьДокументовПриСохраненииДанныхВНастройкахНаСервере", Ложь); События.Вставить("ПечатьДокументовПриВыполненииКоманды", Ложь); + События.Вставить("ПриОпределенииИсточниковДанныхПечати", Ложь); + События.Вставить("ПриПодготовкеДанныхПечати", Ложь); // ПодключаемыеКоманды События.Вставить("ПриОпределенииВидовПодключаемыхКоманд", Ложь); @@ -693,7 +695,9 @@ "РаботаСФайламиСлужебныйВМоделиСервиса"); МодульРаботаСФайламиСлужебныйВМоделиСервиса.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам); КонецЕсли; - + + ОбновлениеИнформационнойБазыСлужебный.ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам); + КонецПроцедуры // См. ОчередьЗаданийПереопределяемый.ПриОпределенииИспользованияРегламентныхЗаданий. @@ -1761,7 +1765,7 @@ КонецПроцедуры -// См. СтандартныеПодсистемыСервер.ПередЗапускомПрограммы +// См. ОбщегоНазначенияПереопределяемый.ПередЗапускомПрограммы Процедура ПередЗапускомПрограммы() Экспорт Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда @@ -1816,6 +1820,11 @@ МодульРассылкаОтчетов = ОбщегоНазначения.ОбщийМодуль("РассылкаОтчетов"); МодульРассылкаОтчетов.ПриОпределенииОбъектовСНачальнымЗаполнением(Объекты); КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный"); + МодульУправлениеСвойствамиСлужебный.ПриОпределенииОбъектовСНачальнымЗаполнением(Объекты); + КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); @@ -2642,6 +2651,8 @@ "УправлениеКонтактнойИнформациейСлужебный"); МодульУправлениеКонтактнойИнформациейСлужебный.ПриОпределенииПроверок(ГруппыПроверок, Проверки); КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ПриОпределенииПроверок(ГруппыПроверок, Проверки); Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриОпределенииПроверок Тогда МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); @@ -2652,6 +2663,7 @@ МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП"); МодульИнтеграцияПодсистемБИП.ПриОпределенииПроверок(ГруппыПроверок, Проверки); КонецЕсли; + КонецПроцедуры @@ -3188,6 +3200,51 @@ КонецПроцедуры +// См. УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати +Процедура ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати) Экспорт + + Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриОпределенииИсточниковДанныхПечати Тогда + МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); + МодульИнтеграцияПодсистемБТС.ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати); + КонецЕсли; + + Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриОпределенииИсточниковДанныхПечати Тогда + МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП"); + МодульИнтеграцияПодсистемБИП.ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати); + КонецЕсли; + +КонецПроцедуры + +// См. УправлениеПечатьюПереопределяемый.ПриПодготовкеДанныхПечати +Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, + ДополнительныеПараметры) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.СклонениеПредставленийОбъектов") Тогда + МодульСклонениеПредставленийОбъектов = ОбщегоНазначения.ОбщийМодуль("СклонениеПредставленийОбъектов"); + МодульСклонениеПредставленийОбъектов.ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, + ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Валюты") Тогда + МодульРаботаСКурсамиВалют = ОбщегоНазначения.ОбщийМодуль("РаботаСКурсамиВалют"); + МодульРаботаСКурсамиВалют.ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, + ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + + Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриПодготовкеДанныхПечати Тогда + МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); + МодульИнтеграцияПодсистемБТС.ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, + ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + + Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриПодготовкеДанныхПечати Тогда + МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП"); + МодульИнтеграцияПодсистемБИП.ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, + ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + +КонецПроцедуры + #Область Печать_ДляВнутреннегоИспользования Процедура ПриПодготовкеСпискаМакетовВФорматеОфисныхДокументовФормируемыхНаСервере(СписокМакетов) Экспорт @@ -3263,6 +3320,8 @@ МодульУчетОригиналовПервичныхДокументов = ОбщегоНазначения.ОбщийМодуль("УчетОригиналовПервичныхДокументов"); МодульУчетОригиналовПервичныхДокументов.ПриОпределенииВидовПодключаемыхКоманд(ВидыПодключаемыхКоманд); КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ПриОпределенииВидовПодключаемыхКоманд(ВидыПодключаемыхКоманд); КонецПроцедуры @@ -3359,7 +3418,10 @@ МодульУчетОригиналовПервичныхДокументов.ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды); КонецЕсли; - + + ОбновлениеИнформационнойБазыСлужебный.ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, + ПодключенныеОтчетыИОбработки, Команды); + КонецПроцедуры // См. СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании. @@ -4319,6 +4381,11 @@ МодульУдалениеПомеченныхОбъектовСлужебный.ПриОпределенииНастроекРегламентныхЗаданий(Настройки); КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный"); + МодульЭлектроннаяПодписьСлужебный.ПриОпределенииНастроекРегламентныхЗаданий(Настройки); + КонецЕсли; + Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриОпределенииНастроекРегламентныхЗаданий Тогда МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); МодульИнтеграцияПодсистемБТС.ПриОпределенииНастроекРегламентныхЗаданий(Настройки); @@ -4503,6 +4570,10 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда ТекущиеДела.Добавить(ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный")); КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда + ТекущиеДела.Добавить(ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный")); + КонецЕсли; Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриОпределенииОбработчиковТекущихДел Тогда МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС"); @@ -4988,17 +5059,19 @@ #Область УдалениеПомеченныхОбъектов // см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов -Процедура ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка) Экспорт +Процедура ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты) Экспорт Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); - МодульРаботаСФайламиСлужебный.ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка); + МодульРаботаСФайламиСлужебный.ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты); КонецЕсли; КонецПроцедуры // см. УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов Процедура ПослеУдаленияГруппыОбъектов(Контекст, Успешно) Экспорт - МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); - МодульРаботаСФайламиСлужебный.ПослеУдаленияГруппыОбъектов(Контекст, Успешно); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПослеУдаленияГруппыОбъектов(Контекст, Успешно); + КонецЕсли; КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/ИнтеграцияПодсистемБСПКлиент/Module.bsl b/SSL/src/CommonModules/ИнтеграцияПодсистемБСПКлиент/Module.bsl index 5d62cfe77..aaa1b0253 100644 --- a/SSL/src/CommonModules/ИнтеграцияПодсистемБСПКлиент/Module.bsl +++ b/SSL/src/CommonModules/ИнтеграцияПодсистемБСПКлиент/Module.bsl @@ -391,6 +391,8 @@ // См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды. Процедура ПриОбработкеКоманды(ФормаОтчета, Команда, Результат) Экспорт + ОбновлениеИнформационнойБазыКлиент.ПриОбработкеКоманды(ФормаОтчета, Команда, Результат); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда МодульКонтрольВеденияУчетаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольВеденияУчетаСлужебныйКлиент"); МодульКонтрольВеденияУчетаСлужебныйКлиент.ПриОбработкеКоманды(ФормаОтчета, Команда, Результат); @@ -408,7 +410,27 @@ КонецПроцедуры -// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды. +// См. ОтчетыКлиентПереопределяемый.ПриНачалеВыбораЗначений. +Процедура ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) Экспорт + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеДоступомСлужебныйКлиент"); + МодульУправлениеДоступомСлужебныйКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка); + КонецЕсли; + + Если ИнтеграцияПодсистемБСПКлиентПовтИсп.ПодпискиБТС().ПриНачалеВыбораЗначений Тогда + МодульИнтеграцияПодсистемБТСКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтеграцияПодсистемБТСКлиент"); + МодульИнтеграцияПодсистемБТСКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка); + КонецЕсли; + + Если ИнтеграцияПодсистемБСПКлиентПовтИсп.ПодпискиБИП().ПриНачалеВыбораЗначений Тогда + МодульИнтеграцияПодсистемБИПКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтеграцияПодсистемБИПКлиент"); + МодульИнтеграцияПодсистемБИПКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры + +// См. ОтчетыКлиентПереопределяемый.ПриОбработкеВыбора. Процедура ПриОбработкеВыбора(ФормаОтчета, ВыбранноеЗначение, ИсточникВыбора, Результат) Экспорт Если ИнтеграцияПодсистемБСПКлиентПовтИсп.ПодпискиБТС().ПриОбработкеВыбора Тогда @@ -451,6 +473,8 @@ МодульИнтеграцияПодсистемБИПКлиент.ПриОбработкеВыбораТабличногоДокумента(ФормаОтчета, Элемент, Область, СтандартнаяОбработка); КонецЕсли; + ОбновлениеИнформационнойБазыКлиент.ПриОбработкеВыбораТабличногоДокумента(ФормаОтчета, Элемент, Область, СтандартнаяОбработка); + КонецПроцедуры // См. ОтчетыКлиентПереопределяемый.ОбработкаОповещения. @@ -666,6 +690,7 @@ // ВариантыОтчетов События.Вставить("ПослеФормирования", Ложь); + События.Вставить("ПриНачалеВыбораЗначений", Ложь); События.Вставить("ПриОбработкеРасшифровки", Ложь); События.Вставить("ПриОбработкеДополнительнойРасшифровки", Ложь); События.Вставить("ПриОбработкеКоманды", Ложь); diff --git a/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl b/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl index 33dd5d1b8..726824e21 100644 --- a/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl +++ b/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl @@ -323,7 +323,7 @@ Результат.Вставить("ПодготовленныеПакеты", Неопределено); Если ОбщегоНазначения.РазделениеВключено() - Или ПолучитьФункциональнуюОпцию("РаботаВАвтономномРежиме") Тогда + Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда КолонкаПоказывать = ПакетыСтраниц.Колонки.ПоказыватьВМоделиСервиса; Иначе Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда diff --git a/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl b/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl index 580625a93..656f185c0 100644 --- a/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl +++ b/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl @@ -1460,8 +1460,8 @@ Иначе ОбщегоНазначенияКлиентСервер.Проверить(Ложь, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимый тип значения элемента в параметре НерабочиеПериоды: - |%1'"), ТипЗнч(НерабочиеПериоды[0])), + НСтр("ru = 'Недопустимый тип значения элемента в параметре %1: + |%2'"), "НерабочиеПериоды", ТипЗнч(НерабочиеПериоды[0])), "КалендарныеГрафики.БлижайшиеРабочиеДаты"); КонецЕсли; КонецЕсли; diff --git a/SSL/src/CommonModules/КалендарныеГрафикиСлужебный/Module.bsl b/SSL/src/CommonModules/КалендарныеГрафикиСлужебный/Module.bsl index 4f22a858e..878e6e630 100644 --- a/SSL/src/CommonModules/КалендарныеГрафикиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/КалендарныеГрафикиСлужебный/Module.bsl @@ -94,13 +94,13 @@ Для каждого ОбластьДанных Из ОбластиДляОбновления Цикл Попытка УстановитьПривилегированныйРежим(Истина); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных); + МодульРаботаВМоделиСервиса.ВойтиВОбластьДанных(ОбластьДанных); УстановитьПривилегированныйРежим(Ложь); Исключение // В области может быть установлен монопольный режим, и тогда в область не войдешь. // Такие области надо пропускать. УстановитьПривилегированныйРежим(Истина); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); УстановитьПривилегированныйРежим(Ложь); Продолжить; КонецПопытки; @@ -116,7 +116,7 @@ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; УстановитьПривилегированныйРежим(Истина); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); УстановитьПривилегированныйРежим(Ложь); КонецЦикла; diff --git a/SSL/src/CommonModules/КонструкторФормул/Module.bsl b/SSL/src/CommonModules/КонструкторФормул/Module.bsl index 264d53fe7..257103a53 100644 --- a/SSL/src/CommonModules/КонструкторФормул/Module.bsl +++ b/SSL/src/CommonModules/КонструкторФормул/Module.bsl @@ -6,7 +6,7 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// -#Область СлужебныеПроцедурыИФункции +#Область ПрограммныйИнтерфейс // Создает на форме иерархический список с заданным составом полей и строкой поиска. // В качестве источника полей используется одна или несколько коллекций доступных полей компоновки данных. @@ -54,6 +54,7 @@ // ** КоллекцияПолей - ДоступныеПоляКомпоновкиДанных - дочерние поля источника данных. // ** Замещать - Булево - если Истина, то список подчиненных полей будет замещен, если Ложь - дополнен. // * ИспользоватьИдентификаторыДляФормул - Булево +// * ИмяОсновногоИсточника - Строка - имя объекта метаданных источника полей. // Функция ПараметрыДобавленияСпискаПолей() Экспорт @@ -153,39 +154,6 @@ КонецПроцедуры -// Конструктор параметра ПараметрыФормулы для функции ПредставлениеФормулы. -// -// Возвращаемое значение: -// Структура: -// * Формула - Строка -// * Операнды - Строка - адрес во временном хранилище коллекции операндов. Коллекция может быть одного из трех типов: -// ТаблицаЗначений - см. ТаблицаПолей -// ДеревоЗначений - см. ДеревоПолей -// СхемаКомпоновкиДанных - список операндов будет взят из коллекции ДоступныеПоляОтбора -// компоновщика настроек. Имя коллекции может быть переопределено -// в параметре ИмяКоллекцииСКД. -// * Операторы - Строка - адрес во временном хранилище коллекции операторов. Коллекция может быть одного из трех типов: -// ТаблицаЗначений - см. ТаблицаПолей -// ДеревоЗначений - см. ДеревоПолей -// СхемаКомпоновкиДанных - список операндов будет взят из коллекции ДоступныеПоляОтбора -// компоновщика настроек. Имя коллекции может быть переопределено -// в параметре ИмяКоллекцииСКД. -// * ИмяКоллекцииСКДОперандов - Строка - имя коллекции полей в компоновщике настроек. Параметр необходимо -// использовать, если в параметре Операнды передана схема компоновки данных. -// Значение по умолчанию - ДоступныеПоляОтбора. -// * ИмяКоллекцииСКДОператоров - Строка - имя коллекции полей в компоновщике настроек. Параметр необходимо -// использовать, если в параметре Операторы передана схема компоновки данных. -// Значение по умолчанию - ДоступныеПоляОтбора. -// * Наименование - Неопределено - наименование не используется для формулы, соответствующее поле не выводится. -// - Строка - наименование формулы. Если заполнено или пустое, соответствующее поле выводится -// на в форме конструктора. -// -Функция ПараметрыРедактированияФормулы() Экспорт - - Возврат КонструкторФормулКлиентСервер.ПараметрыРедактированияФормулы(); - -КонецФункции - // Подготавливает стандартный список операторов требуемых видов. // // Параметры: @@ -236,4 +204,70 @@ КонецФункции +// Формирует представление формулы на текущем языке пользователя. +// Операнды и операторы в тексте формулы заменяются на их представления. +// Для использования в форме со встроенными списками операндов (см. ДобавитьСписокПолейНаФорму). +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// Формула - Строка +// +// Возвращаемое значение: +// Строка +// +Функция ПредставлениеФормулыПоДаннымФормы(Форма, Формула) Экспорт + + Возврат КонструкторФормулСлужебный.ПредставлениеФормулы(Форма, Формула); + +КонецФункции + +// Конструктор параметра ПараметрыФормулы для функции ПредставлениеФормулы. +// +// Возвращаемое значение: +// Структура: +// * Формула - Строка +// * Операнды - Строка - адрес во временном хранилище коллекции операндов. Коллекция может быть одного из трех типов: +// ТаблицаЗначений - см. ТаблицаПолей +// ДеревоЗначений - см. ДеревоПолей +// СхемаКомпоновкиДанных - список операндов будет взят из коллекции ДоступныеПоляОтбора +// компоновщика настроек. Имя коллекции может быть переопределено +// в параметре ИмяКоллекцииСКД. +// * Операторы - Строка - адрес во временном хранилище коллекции операторов. Коллекция может быть одного из трех типов: +// ТаблицаЗначений - см. ТаблицаПолей +// ДеревоЗначений - см. ДеревоПолей +// СхемаКомпоновкиДанных - список операндов будет взят из коллекции ДоступныеПоляОтбора +// компоновщика настроек. Имя коллекции может быть переопределено +// в параметре ИмяКоллекцииСКД. +// * ИмяКоллекцииСКДОперандов - Строка - имя коллекции полей в компоновщике настроек. Параметр необходимо +// использовать, если в параметре Операнды передана схема компоновки данных. +// Значение по умолчанию - ДоступныеПоляОтбора. +// * ИмяКоллекцииСКДОператоров - Строка - имя коллекции полей в компоновщике настроек. Параметр необходимо +// использовать, если в параметре Операторы передана схема компоновки данных. +// Значение по умолчанию - ДоступныеПоляОтбора. +// * Наименование - Неопределено - наименование не используется для формулы, соответствующее поле не выводится. +// - Строка - наименование формулы. Если заполнено или пустое, соответствующее поле выводится +// на в форме конструктора. +// * СкобкиОперандов - Булево - выводить операнды формулы в квадратных скобках. +// +Функция ПараметрыРедактированияФормулы() Экспорт + + Возврат КонструкторФормулКлиентСервер.ПараметрыРедактированияФормулы(); + +КонецФункции + +// Заменяет представления операндов формулы на идентификаторы. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - форма, в которой размещены списки операторов и операндов. +// ПредставлениеФормулы - Строка - формула. +// +// Возвращаемое значение: +// Строка +// +Функция ФормулаИзПредставления(Форма, ПредставлениеФормулы) Экспорт + + Возврат КонструкторФормулСлужебный.ФормулаИзПредставления(Форма, ПредставлениеФормулы); + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/КонструкторФормулКлиент/Module.bsl b/SSL/src/CommonModules/КонструкторФормулКлиент/Module.bsl index 64f268e9e..7ae26b058 100644 --- a/SSL/src/CommonModules/КонструкторФормулКлиент/Module.bsl +++ b/SSL/src/CommonModules/КонструкторФормулКлиент/Module.bsl @@ -6,7 +6,7 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// -#Область СлужебныеПроцедурыИФункции +#Область ПрограммныйИнтерфейс // Открывает конструктор формул. // @@ -105,8 +105,15 @@ // Процедура СписокПолейНачалоПеретаскивания(Форма, Элемент, ПараметрыПеретаскивания, Выполнение) Экспорт - Реквизит = Форма[Элемент.Имя].НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); - ПараметрыПеретаскивания.Значение = "[" + Реквизит.ПредставлениеПутиКДанным + "]"; + ИмяСпискаПолей = Элемент.Имя; + Реквизит = Форма[ИмяСпискаПолей].НайтиПоИдентификатору(ПараметрыПеретаскивания.Значение); + + НастройкиСпискаПолей = КонструкторФормулКлиентСервер.НастройкиСпискаПолей(Форма, ИмяСпискаПолей); + Если НастройкиСпискаПолей.СкобкиПредставлений Тогда + ПараметрыПеретаскивания.Значение = "[" + Реквизит.ПредставлениеПутиКДанным + "]"; + Иначе + ПараметрыПеретаскивания.Значение = Реквизит.ПредставлениеПутиКДанным; + КонецЕсли; КонецПроцедуры @@ -123,7 +130,7 @@ // * ПутьКДанным - Строка // * ПредставлениеПутиКДанным - Строка // * Тип - ОписаниеТипов -// * Родитель - Структура, Неопределено - см. ВыбранноеПолеВСпискеПолей +// * Родитель - см. ВыбранноеПолеВСпискеПолей // Функция ВыбранноеПолеВСпискеПолей(Форма, ИмяСпискаПолей = Неопределено) Экспорт @@ -179,6 +186,53 @@ КонецПроцедуры +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Параметры: +// Оператор - см. ВыбранноеПолеВСпискеПолей +// +Функция ВыражениеДляВставки(Оператор) Экспорт + + Результат = Оператор.Заголовок + "()"; + + Если Не ЗначениеЗаполнено(Оператор.Родитель) Тогда + Возврат ""; + КонецЕсли; + + ГруппаОператоров = Оператор.Родитель; // см. ВыбранноеПолеВСпискеПолей + ИмяГруппыОператоров = ГруппаОператоров.Имя; + + Если ИмяГруппыОператоров = "Разделители" Тогда + Результат = "+ """ + Оператор.Заголовок + """ +"; + Если Оператор.Имя = "[ ]" Тогда + Результат = "+ "" "" +"; + КонецЕсли; + КонецЕсли; + + Если ИмяГруппыОператоров = "ЛогическиеОператорыИКонстанты" + Или ИмяГруппыОператоров = "Операторы" + Или ИмяГруппыОператоров = "ОперацииНадСтроками" + Или ИмяГруппыОператоров = "ЛогическиеОперации" + Или ИмяГруппыОператоров = "ОперацииСравнения" И Оператор.Имя <> "В" Тогда + Результат = Оператор.Заголовок; + КонецЕсли; + + Если ИмяГруппыОператоров = "ПрочиеФункции" Тогда + Если Оператор.Имя = "[?]" Или Оператор.Имя = "Формат" Тогда + Результат = Оператор.Заголовок + "(,,)"; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + Функция ОписаниеВыбранногоПоля(Поле) Результат = Новый Структура; diff --git a/SSL/src/CommonModules/КонструкторФормулКлиентСервер/Module.bsl b/SSL/src/CommonModules/КонструкторФормулКлиентСервер/Module.bsl index f5da56b11..0785c676f 100644 --- a/SSL/src/CommonModules/КонструкторФормулКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/КонструкторФормулКлиентСервер/Module.bsl @@ -72,6 +72,9 @@ КонецФункции +// Возвращаемое значение: +// СтрокаТаблицыЗначений: см. КонструкторФормулСлужебный.ОписаниеСписковПолей +// Функция НастройкиСпискаПолей(Форма, ИмяСпискаПолей) Экспорт Отбор = Новый Структура("ИмяСпискаПолей", ИмяСпискаПолей); @@ -93,6 +96,7 @@ Параметры.Вставить("ИмяКоллекцииСКДОператоров"); Параметры.Вставить("Наименование"); Параметры.Вставить("ДляЗапроса"); + Параметры.Вставить("СкобкиОперандов", Истина); Возврат Параметры; diff --git a/SSL/src/CommonModules/КонструкторФормулСлужебный/Module.bsl b/SSL/src/CommonModules/КонструкторФормулСлужебный/Module.bsl index 720eb8d72..7cedf3e9e 100644 --- a/SSL/src/CommonModules/КонструкторФормулСлужебный/Module.bsl +++ b/SSL/src/CommonModules/КонструкторФормулСлужебный/Module.bsl @@ -6,6 +6,212 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// +#Область СлужебныйПрограммныйИнтерфейс + +Функция СхемаКомпоновкиДанныхИзТаблицыЗначений(ТаблицаЗначений) Экспорт + + СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; + + ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); + ИсточникДанных.Имя = "ИсточникДанных1"; + ИсточникДанных.ТипИсточникаДанных = "local"; + + НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); + НаборДанных.ИсточникДанных = "ИсточникДанных1"; + НаборДанных.Имя = "НаборДанных1"; + НаборДанных.ИмяОбъекта = "Данные"; + + Для Каждого СтрокаТаблицы Из ТаблицаЗначений Цикл + Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); + Поле.Поле = СтрокаТаблицы.Идентификатор; + Поле.ПутьКДанным = СтрокаТаблицы.Идентификатор; + Если ЗначениеЗаполнено(СтрокаТаблицы.Представление) Тогда + Поле.Заголовок = СтрокаТаблицы.Представление; + КонецЕсли; + Поле.ТипЗначения = СтрокаТаблицы.ТипЗначения; + + Если ЗначениеЗаполнено(СтрокаТаблицы.Формат) Тогда + ЗначениеПараметра = Поле.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат")); + Если ЗначениеПараметра <> Неопределено Тогда + ЗначениеПараметра.Использование = Истина; + ЗначениеПараметра.Значение = СтрокаТаблицы.Формат; + КонецЕсли; + КонецЕсли; + + ДополнительныеПараметры = Новый Структура("Порядок"); + ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, СтрокаТаблицы); + + ДополнительныеПараметры.Вставить("Картинка", Base64Строка(СтрокаТаблицы.Картинка.ПолучитьДвоичныеДанные())); + + Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); + КонецЦикла; + + Возврат СхемаКомпоновкиДанных; + +КонецФункции + +Функция СхемаКомпоновкиДанныхИзДереваЗначений(ДеревоЗначений) Экспорт + + СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; + + ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); + ИсточникДанных.Имя = "ИсточникДанных1"; + ИсточникДанных.ТипИсточникаДанных = "local"; + + НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); + НаборДанных.ИсточникДанных = "ИсточникДанных1"; + НаборДанных.Имя = "НаборДанных1"; + НаборДанных.ИмяОбъекта = "Данные"; + + ДобавитьГруппуЭлементовВНаборДанных(ДеревоЗначений, НаборДанных); + + Возврат СхемаКомпоновкиДанных; + +КонецФункции + +Функция ОписаниеПоля(ПутьКДанным, СпискиПолей) Экспорт + + СхемаКомпоновкиДанных = Неопределено; + ИдентификаторСхемыКомпоновкиДанных = Неопределено; + ПутьКДаннымВоВложеннойСхеме = Неопределено; + ВладелецПоля = Неопределено; + Тип = Неопределено; + Папка = Неопределено; + Таблица = Неопределено; + + Для Каждого НастройкиСписка Из СпискиПолей Цикл + ИсточникиДоступныхПолей = НастройкиСписка.ИсточникиДоступныхПолей; + КоллекцияПолей = НастройкиСписка.КоллекцияПолей; + Если КоллекцияПолей = Неопределено Тогда + НастройкиСписка.КоллекцияПолей = НоваяКоллекцияПолей(); + КоллекцияПолей = НастройкиСписка.КоллекцияПолей; + ЗаполнитьСписокДоступныхРеквизитов(КоллекцияПолей, ИсточникиДоступныхПолей, , НастройкиСписка); + КонецЕсли; + + Реквизит = НайтиПоле(ПутьКДанным, ПодчиненныеЭлементы(КоллекцияПолей), Ложь, ИсточникиДоступныхПолей, НастройкиСписка); + Если Реквизит <> Неопределено Тогда + Родитель = Родитель(Реквизит); + Пока Родитель <> Неопределено Цикл + Если Родитель.СвойНаборПолей Тогда + Прервать; + Иначе + Родитель = Родитель(Родитель); + Продолжить; + КонецЕсли; + КонецЦикла; + + Если Родитель <> Неопределено Тогда + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка, Родитель) Цикл + Поле = ИсточникДоступныхПолей.КоллекцияПолей.НайтиПоле(Реквизит.Поле); + Если Поле <> Неопределено Тогда + ВладелецПоля = Родитель.ПутьКДанным; + СхемаКомпоновкиДанных = ИсточникДоступныхПолей.СхемаКомпоновкиДанных; + ИдентификаторСхемыКомпоновкиДанных = ИсточникДоступныхПолей.ИдентификаторСхемыКомпоновкиДанных; + ПутьКДаннымВоВложеннойСхеме = Строка(Реквизит.Поле); + Тип = Поле.ТипЗначения; + Папка = Реквизит.Папка; + Таблица = Реквизит.Таблица; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ВладелецПоля = Неопределено Тогда + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка) Цикл + Поле = ИсточникДоступныхПолей.КоллекцияПолей.НайтиПоле(Реквизит.Поле); + Если Поле <> Неопределено Тогда + ВладелецПоля = "Ссылка"; + СхемаКомпоновкиДанных = ИсточникДоступныхПолей.СхемаКомпоновкиДанных; + ИдентификаторСхемыКомпоновкиДанных = ИсточникДоступныхПолей.ИдентификаторСхемыКомпоновкиДанных; + ПутьКДаннымВоВложеннойСхеме = Строка(Реквизит.Поле); + Тип = Поле.ТипЗначения; + Папка = Реквизит.Папка; + Таблица = Реквизит.Таблица; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("Поле", ПутьКДанным); + Результат.Вставить("СхемаКомпоновкиДанных", СхемаКомпоновкиДанных); + Результат.Вставить("ИдентификаторСхемыКомпоновкиДанных", ИдентификаторСхемыКомпоновкиДанных); + Результат.Вставить("ПутьКДанным", ПутьКДаннымВоВложеннойСхеме); + Результат.Вставить("Владелец", ВладелецПоля); + Результат.Вставить("Формат", ФорматПоля(ПутьКДанным, СхемаКомпоновкиДанных)); + Результат.Вставить("Тип", Тип); + Результат.Вставить("Папка", Папка); + Результат.Вставить("Таблица", Таблица); + + Возврат Результат; + +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * КоллекцияПолей - ДеревоЗначений +// * ИсточникиДоступныхПолей - ТаблицаЗначений +// * СкобкиИдентификаторов - Булево +// * СкобкиПредставлений - Булево +// * ИспользоватьИдентификаторыДляФормул - Булево +// * ПриОпределенииИсточниковДоступныхПолей - Строка +// +Функция ОписаниеСписковПолей() Экспорт + + Результат = Новый ТаблицаЗначений(); + Результат.Колонки.Добавить("КоллекцияПолей"); + Результат.Колонки.Добавить("ИсточникиДоступныхПолей"); + Результат.Колонки.Добавить("СкобкиИдентификаторов", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("СкобкиПредставлений", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("ИспользоватьИдентификаторыДляФормул", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("ПриОпределенииИсточниковДоступныхПолей", Новый ОписаниеТипов("Строка")); + + Возврат Результат; + +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений +// +Функция КоллекцияИсточниковДоступныхПолей() Экспорт + + Результат = Новый ТаблицаЗначений; + + Для Каждого ОписаниеРеквизита Из РеквизитыСпискаИсточниковДоступныхПолей() Цикл + ИмяРеквизита = ОписаниеРеквизита.Ключ; + ТипРеквизита = ОписаниеРеквизита.Значение; + Результат.Колонки.Добавить(ИмяРеквизита, ТипРеквизита); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ИмяКолонкиПредставление(ИмяСпискаПолей) Экспорт + + Возврат ИмяСпискаПолей + "Представление"; + +КонецФункции + +Функция ЭлементыФормулы(Знач Формула) Экспорт + + Возврат КонструкторФормулКлиентСервер.ЭлементыФормулы(Формула); + +КонецФункции + +Функция КоллекцияПолей(Знач ИсточникПолей, Форма = Неопределено, Знач ИмяКоллекцииСКД = Неопределено) Экспорт + + КомпоновщикНастроек = КомпоновщикНастроекИсточникаПолей(ИсточникПолей, Форма); + Если КомпоновщикНастроек = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат КоллекцияПолейКомпоновщикаНастроек(КомпоновщикНастроек, ИмяКоллекцииСКД); + +КонецФункции + +#КонецОбласти + #Область СлужебныеПроцедурыИФункции // Параметры: @@ -30,6 +236,7 @@ ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("СкобкиИдентификаторов", Новый ОписаниеТипов("Булево"), ИмяРеквизитаПодключенныеСпискиПолей)); ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("СкобкиПредставлений", Новый ОписаниеТипов("Булево"), ИмяРеквизитаПодключенныеСпискиПолей)); ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИспользоватьИдентификаторыДляФормул", Новый ОписаниеТипов("Булево"), ИмяРеквизитаПодключенныеСпискиПолей)); + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ПриОпределенииИсточниковДоступныхПолей", Новый ОписаниеТипов("Строка"), ИмяРеквизитаПодключенныеСпискиПолей)); КонецЕсли; ИмяСпискаПолей = ПараметрыДобавления.ИмяСписка; @@ -45,9 +252,11 @@ ИмяСпискаИсточников = ИмяСпискаПолей + "Источники"; ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяСпискаИсточников, Новый ОписаниеТипов("ТаблицаЗначений"))); - ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ИсточникДанных", Новый ОписаниеТипов("Строка"), ИмяСпискаИсточников)); - ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("КоллекцияПолей", Новый ОписаниеТипов(), ИмяСпискаИсточников)); - ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Замещать", Новый ОписаниеТипов("Булево"), ИмяСпискаИсточников)); + Для Каждого ОписаниеРеквизита Из РеквизитыСпискаИсточниковДоступныхПолей() Цикл + ИмяРеквизита = ОписаниеРеквизита.Ключ; + ТипРеквизита = ОписаниеРеквизита.Значение; + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяРеквизита, ТипРеквизита, ИмяСпискаИсточников)); + КонецЦикла; Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); @@ -95,7 +304,7 @@ КартинкаПоля.Вид = ВидПоляФормы.ПолеКартинки; КартинкаПоля.ОтображатьВШапке = Ложь; - ПредставлениеПоля = Форма.Элементы.Добавить(ИмяСпискаПолей + "Представление", Тип("ПолеФормы"), ГруппаКолонок); + ПредставлениеПоля = Форма.Элементы.Добавить(ИмяКолонкиПредставление(ИмяСпискаПолей), Тип("ПолеФормы"), ГруппаКолонок); ПредставлениеПоля.ПутьКДанным = ИмяСпискаПолей + ".Заголовок"; ПредставлениеПоля.Вид = ВидПоляФормы.ПолеВвода; ПредставлениеПоля.ТолькоПросмотр = Истина; @@ -105,6 +314,7 @@ ПредставлениеПоля.Вид = ВидПоляФормы.ПолеНадписи; ПредставлениеПоля.ТолькоПросмотр = Истина; ПредставлениеПоля.Видимость = Ложь; + ПредставлениеПоля.Заголовок = НСтр("ru = 'Поле'"); ПодключенныеСпискиПолей = Форма.ПодключенныеСпискиПолей; // ТаблицаЗначений ПодключенныйСписок = ПодключенныеСпискиПолей.Добавить(); @@ -113,12 +323,19 @@ ПодключенныйСписок.СкобкиИдентификаторов = ПараметрыДобавления.СкобкиИдентификаторов; ПодключенныйСписок.СкобкиПредставлений = ПараметрыДобавления.СкобкиПредставлений; ПодключенныйСписок.ИспользоватьИдентификаторыДляФормул = ПараметрыДобавления.ИспользоватьИдентификаторыДляФормул; + ПодключенныйСписок.ПриОпределенииИсточниковДоступныхПолей = ПараметрыДобавления.ПриОпределенииИсточниковДоступныхПолей; ИсточникиДоступныхПолей = Форма[ИмяСпискаИсточников]; // ТаблицаЗначений Для Каждого КоллекцияПолей Из ПараметрыДобавления.КоллекцииПолей Цикл ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); - ИсточникДоступныхПолей.КоллекцияПолей = КоллекцияПолей; + Если ТипЗнч(КоллекцияПолей) = Тип("Строка") И ЭтоАдресВременногоХранилища(КоллекцияПолей) Тогда + ИсточникДоступныхПолей.СхемаКомпоновкиДанных = КоллекцияПолей; + ИсточникДоступныхПолей.КоллекцияПолей = КоллекцияПолей(КоллекцияПолей); + Иначе + ИсточникДоступныхПолей.КоллекцияПолей = КоллекцияПолей; + КонецЕсли; + ИсточникДоступныхПолей.ИсточникДанных = ПараметрыДобавления.ИмяОсновногоИсточника; КонецЦикла; Для Каждого ИсточникДоступныхПолей Из ПараметрыДобавления.ИсточникиДоступныхПолей Цикл @@ -128,7 +345,7 @@ ДеревоПолей = Форма.РеквизитФормыВЗначение(ИмяСпискаПолей); ТаблицаИсточников = Форма.РеквизитФормыВЗначение(ИмяСпискаИсточников); - ЗаполнитьСписокДоступныхРеквизитов(ДеревоПолей, ТаблицаИсточников); + ЗаполнитьСписокДоступныхРеквизитов(ДеревоПолей, ТаблицаИсточников, , ПодключенныйСписок); Форма.ЗначениеВРеквизитФормы(ДеревоПолей, ИмяСпискаПолей); Форма.ЗначениеВРеквизитФормы(ТаблицаИсточников, ИмяСпискаИсточников); @@ -152,8 +369,10 @@ // * ВключатьГруппыВПутьКДанным - Булево // * СкобкиИдентификаторов - Булево // * СкобкиПредставлений - Булево -// * ИсточникиДоступныхПолей - см. НоваяКоллекцияИсточниковДоступныхПолей +// * ИсточникиДоступныхПолей - см. КоллекцияИсточниковДоступныхПолей // * ИспользоватьИдентификаторыДляФормул - Булево +// * ПриОпределенииИсточниковДоступныхПолей - Строка +// * ИмяОсновногоИсточника - Строка // Функция ПараметрыДобавленияСпискаПолей() Экспорт @@ -167,51 +386,21 @@ Результат.Вставить("ВключатьГруппыВПутьКДанным", Истина); Результат.Вставить("СкобкиИдентификаторов", Ложь); Результат.Вставить("СкобкиПредставлений", Истина); - Результат.Вставить("ИсточникиДоступныхПолей", НоваяКоллекцияИсточниковДоступныхПолей()); + Результат.Вставить("ИсточникиДоступныхПолей", КоллекцияИсточниковДоступныхПолей()); Результат.Вставить("ИспользоватьИдентификаторыДляФормул", Ложь); + Результат.Вставить("ПриОпределенииИсточниковДоступныхПолей", ""); + Результат.Вставить("ИмяОсновногоИсточника", ""); Возврат Результат; КонецФункции -// Возвращаемое значение: -// ТаблицаЗначений: -// * КоллекцияПолей - ДеревоЗначений -// * ИсточникиДоступныхПолей - ТаблицаЗначений -// * СкобкиИдентификаторов - Булево -// * СкобкиПредставлений - Булево -// * ИспользоватьИдентификаторыДляФормул - Булево -// -Функция ОписаниеСписковПолей() Экспорт - - Результат = Новый ТаблицаЗначений(); - Результат.Колонки.Добавить("КоллекцияПолей"); - Результат.Колонки.Добавить("ИсточникиДоступныхПолей"); - Результат.Колонки.Добавить("СкобкиИдентификаторов", Новый ОписаниеТипов("Булево")); - Результат.Колонки.Добавить("СкобкиПредставлений", Новый ОписаниеТипов("Булево")); - Результат.Колонки.Добавить("ИспользоватьИдентификаторыДляФормул", Новый ОписаниеТипов("Булево")); - - Возврат Результат; - -КонецФункции - -Функция КоллекцияИсточниковДоступныхПолей() Экспорт - - ИсточникиДоступныхПолей = Новый ТаблицаЗначений(); - - ИсточникиДоступныхПолей.Колонки.Добавить("ИсточникДанных", Новый ОписаниеТипов("Строка")); - ИсточникиДоступныхПолей.Колонки.Добавить("КоллекцияПолей", Новый ОписаниеТипов()); - ИсточникиДоступныхПолей.Колонки.Добавить("Замещать", Новый ОписаниеТипов("Булево")); - - Возврат ИсточникиДоступныхПолей; - -КонецФункции - Процедура ОбновитьКоллекцииПолей(Форма, КоллекцииПолей, ИмяСпискаПолей = "ДоступныеПоля") Экспорт ИсточникиДоступныхПолей = СписокИсточниковДоступныхПолей(Форма, ИмяСпискаПолей); // ДанныеФормыКоллекция - Отбор = Новый Структура("ИсточникДанных", ""); + ИмяОсновногоИсточникаДанных = ИмяОсновногоИсточникаДанных(ИсточникиДоступныхПолей); + Отбор = Новый Структура("ИсточникДанных", ИмяОсновногоИсточникаДанных); Для Каждого СтрокаТаблицы Из ИсточникиДоступныхПолей.НайтиСтроки(Отбор) Цикл ИсточникиДоступныхПолей.Удалить(СтрокаТаблицы); КонецЦикла; @@ -219,7 +408,7 @@ Для Индекс = 0 По КоллекцииПолей.ВГраница() Цикл КоллекцияПолей = КоллекцииПолей[Индекс]; ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Вставить(Индекс); - ИсточникДоступныхПолей.ИсточникДанных = ""; + ИсточникДоступныхПолей.ИсточникДанных = ИмяОсновногоИсточникаДанных; ИсточникДоступныхПолей.КоллекцияПолей = КоллекцияПолей; КонецЦикла; @@ -236,6 +425,7 @@ Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка")); Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); + Результат.Колонки.Добавить("Формат", Новый ОписаниеТипов("Строка")); Возврат Результат; @@ -249,22 +439,14 @@ Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка")); Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); + Результат.Колонки.Добавить("Папка", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("Таблица", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("Формат", Новый ОписаниеТипов("Строка")); Возврат Результат; КонецФункции -Функция КоллекцияПолей(Знач ИсточникПолей, Форма = Неопределено, Знач ИмяКоллекцииСКД = Неопределено) Экспорт - - КомпоновщикНастроек = КомпоновщикНастроекИсточникаПолей(ИсточникПолей, Форма); - Если КомпоновщикНастроек = Неопределено Тогда - Возврат Неопределено; - КонецЕсли; - - Возврат КоллекцияПолейКомпоновщикаНастроек(КомпоновщикНастроек, ИмяКоллекцииСКД); - -КонецФункции - Функция КомпоновщикНастроекИсточникаПолей(Знач ИсточникПолей, Форма = Неопределено) Экспорт Если ЭтоАдресВременногоХранилища(ИсточникПолей) Тогда @@ -310,24 +492,31 @@ КонецЦикла; Возврат КоллекцияПолей; - КонецФункции Процедура ЗаполнитьСписокДоступныхРеквизитов(Знач ТекущийРеквизит, ИсточникиДоступныхПолей, Знач Отбор = "", - ИспользоватьИдентификаторыДляФормул = Ложь) + НастройкиСписка = Неопределено) ДоступныеРеквизиты = НоваяКоллекцияДоступныхРеквизитов(); ДоступныеРеквизиты.Колонки.Добавить("ЕстьПодчиненные", Новый ОписаниеТипов("Булево")); ДоступныеРеквизиты.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); - КоллекцииДоступныхПолей = КоллекцииДоступныхПолей(ТекущийРеквизит, ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул); + КоллекцииДоступныхПолей = КоллекцииДоступныхПолей(ТекущийРеквизит, ИсточникиДоступныхПолей, НастройкиСписка); Для Каждого КоллекцияДоступныхПолей Из КоллекцииДоступныхПолей Цикл Для Каждого ОписаниеПоля Из КоллекцияДоступныхПолей.Элементы Цикл - - Если ОписаниеПоля.Поле = Новый ПолеКомпоновкиДанных("ДополнительныеРеквизиты") Тогда + Если ОписаниеПоля.Таблица И (Строка(ОписаниеПоля.Поле) = "ДополнительныеРеквизиты" + Или СтрЗаканчиваетсяНа(ОписаниеПоля.Поле, ".ДополнительныеРеквизиты")) Тогда Продолжить; КонецЕсли; - Если ОписаниеПоля.Поле = Новый ПолеКомпоновкиДанных("КонтактнаяИнформация") Тогда + Если ОписаниеПоля.Таблица И (Строка(ОписаниеПоля.Поле) = "КонтактнаяИнформация" + Или СтрЗаканчиваетсяНа(ОписаниеПоля.Поле, ".КонтактнаяИнформация")) Тогда + Продолжить; + КонецЕсли; + Если ОписаниеПоля.Таблица И (Строка(ОписаниеПоля.Поле) = "Представления" + Или СтрЗаканчиваетсяНа(ОписаниеПоля.Поле, ".Представления")) Тогда + Продолжить; + КонецЕсли; + Если СтрЗаканчиваетсяНа(ОписаниеПоля.Поле, ".ВерсияДанных") Тогда Продолжить; КонецЕсли; @@ -368,11 +557,26 @@ Если Не ЗначениеЗаполнено(Реквизит.Картинка) Тогда Реквизит.Картинка = КартинкаТипа(ОписаниеПоля.Тип); - + + МодульРаботаСФайламиСлужебный = Неопределено; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + КонецЕсли; + Если Реквизит.Таблица Тогда Реквизит.Картинка = БиблиотекаКартинок.ТипСписок; ИначеЕсли Реквизит.Папка Тогда - Реквизит.Картинка = БиблиотекаКартинок.ТипГруппа; + Реквизит.Картинка = БиблиотекаКартинок.ТипПапка; + ИначеЕсли СтрНачинаетсяС(Реквизит.Имя, "Печать") + Или СтрНачинаетсяС(Реквизит.Имя, "Подпись") + Или СтрНачинаетсяС(Реквизит.Имя, "Факсимиле") + Или СтрНачинаетсяС(Реквизит.Имя, "Картинка") + Или Реквизит.Тип.Типы().Количество() = 1 + И МодульРаботаСФайламиСлужебный <> Неопределено + И МодульРаботаСФайламиСлужебный.ТипыПрисоединенныхФайлов().СодержитТип(Реквизит.Тип.Типы()[0]) Тогда + Реквизит.Картинка = БиблиотекаКартинок.ТипКартинка; + ИначеЕсли СтрНачинаетсяС(Реквизит.Имя, "Штамп") Тогда + Реквизит.Картинка = БиблиотекаКартинок.ШтампЭлектроннойПодписи; КонецЕсли; КонецЕсли; @@ -387,6 +591,9 @@ Если ОписаниеПоля.Поле = Новый ПолеКомпоновкиДанных("ДетальныеЗаписи") Тогда Реквизит.Порядок = 4; КонецЕсли; + Если ОписаниеПоля.Поле = Новый ПолеКомпоновкиДанных("ОбщиеРеквизиты") Тогда + Реквизит.Порядок = 5; + КонецЕсли; Реквизит.ПредставлениеПутиКДанным = ""; Если Не Реквизит.ЭтоГруппа Тогда @@ -394,7 +601,7 @@ Реквизит.ПредставлениеПутиКДанным = Реквизит.Заголовок; КонецЕсли; - Если ОписаниеПоля.Элементы.Количество() > 0 Тогда + Если ОписаниеПоля.Элементы.Количество() > 0 И Реквизит.Имя <> "Ссылка" Тогда Реквизит.ЕстьПодчиненные = Истина; КонецЕсли; @@ -404,7 +611,16 @@ ДоступныеРеквизиты.Сортировать("Порядок, Заголовок"); КоллекцияРеквизитов = ПодчиненныеЭлементы(ТекущийРеквизит); + ПолеСсылкаДобавлено = Ложь; Для Каждого ДоступныйРеквизит Из ДоступныеРеквизиты Цикл + Если ДоступныйРеквизит.Имя = "Ссылка" Тогда + Если ТипЗнч(ТекущийРеквизит) <> Тип("ДанныеФормыДерево") И ТипЗнч(ТекущийРеквизит) <> Тип("ДеревоЗначений") + Или ПолеСсылкаДобавлено Тогда + Продолжить; + КонецЕсли; + ПолеСсылкаДобавлено = Истина; + КонецЕсли; + Реквизит = КоллекцияРеквизитов.Добавить(); ЗаполнитьЗначенияСвойств(Реквизит, ДоступныйРеквизит); @@ -424,7 +640,7 @@ Если ДоступныйРеквизит.ЕстьПодчиненные Или Реквизит.Тип.Типы().Количество() = 1 И Не ОбщегоНазначения.ЭтоСсылка(Реквизит.Тип.Типы()[0]) Тогда - КоллекцииПолейРеквизита = КоллекцииДоступныхПолей(Реквизит, ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул); + КоллекцииПолейРеквизита = КоллекцииДоступныхПолей(Реквизит, ИсточникиДоступныхПолей, НастройкиСписка); Если ЗначениеЗаполнено(КоллекцииПолейРеквизита) И ЗначениеЗаполнено(КоллекцииПолейРеквизита[0].Элементы) И Не СтрНайти(Реквизит.ПутьКДанным, Реквизит.Имя + ".") Тогда ПодчиненныеЭлементы(Реквизит).Добавить(); @@ -438,7 +654,7 @@ // ТаблицаЗначений: // * Имя - Строка // * Заголовок - Строка -// * Поле - ОписаниеТипов +// * Поле - ПолеКомпоновкиДанных // * ПутьКДанным - Строка // * ПредставлениеПутиКДанным - Строка // * Тип - ОписаниеТипов @@ -501,19 +717,19 @@ // Возвращаемое значение: // Массив из ДоступныеПоляКомпоновкиДанных // -Функция КоллекцииДоступныхПолей(Реквизит, ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул) +Функция КоллекцииДоступныхПолей(Реквизит, ИсточникиДоступныхПолей, НастройкиСписка) Результат = Новый Массив; Если ТипЗнч(Реквизит) = Тип("ДанныеФормыДерево") Или ТипЗнч(Реквизит) = Тип("ДеревоЗначений") Тогда - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул) Цикл + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка) Цикл Результат.Добавить(ИсточникДоступныхПолей.КоллекцияПолей); КонецЦикла; Возврат Результат; КонецЕсли; Замещать = Ложь; - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул, Реквизит) Цикл + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка, Реквизит) Цикл Реквизит.СвойНаборПолей = Истина; Результат.Добавить(ИсточникДоступныхПолей.КоллекцияПолей); Замещать = Замещать Или ИсточникДоступныхПолей.Замещать; @@ -534,7 +750,7 @@ КонецЦикла; Если Родитель <> Неопределено Тогда - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул, Родитель) Цикл + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка, Родитель) Цикл Поле = ИсточникДоступныхПолей.КоллекцияПолей.НайтиПоле(Реквизит.Поле); Если Поле <> Неопределено Тогда Результат.Добавить(Поле); @@ -543,7 +759,7 @@ КонецЕсли; Если Не Замещать Или Не ЗначениеЗаполнено(Результат) Тогда - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул) Цикл + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка) Цикл Поле = ИсточникДоступныхПолей.КоллекцияПолей.НайтиПоле(Реквизит.Поле); Если Поле <> Неопределено Тогда Результат.Добавить(Поле); @@ -555,24 +771,76 @@ КонецФункции -Функция ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, ИспользоватьИдентификаторыДляФормул, Реквизит = Неопределено) +Функция ИсточникиДоступныхПолей(ИсточникиДоступныхПолей, НастройкиСписка, Реквизит = Неопределено) Результат = Новый Массив; - + ИмяОсновногоИсточникаДанных = ИмяОсновногоИсточникаДанных(ИсточникиДоступныхПолей); + Если Реквизит = Неопределено Тогда - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей.НайтиСтроки(Новый Структура("ИсточникДанных", "")) Цикл + Отбор = Новый Структура("ИсточникДанных", ИмяОсновногоИсточникаДанных); + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей.НайтиСтроки(Отбор) Цикл Результат.Добавить(ИсточникДоступныхПолей); КонецЦикла; Возврат Результат; КонецЕсли; - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей Цикл - Строка = Реквизит.ПутьКДанным; - Если Реквизит.Папка Тогда - Строка = Строка + ?(ЗначениеЗаполнено(Строка), ".", "") + Реквизит.Имя; + ИсточникиДанных = Новый Массив; + + Родитель = Родитель(Реквизит); + Пока Родитель <> Неопределено И Родитель.Папка Цикл + Родитель = Родитель(Родитель); + КонецЦикла; + + Если Родитель = Неопределено Тогда + Если ЗначениеЗаполнено(ИмяОсновногоИсточникаДанных) Тогда + ИсточникДанных = ИмяОсновногоИсточникаДанных + "." + Реквизит.Имя; + ИсточникиДанных.Добавить(ИсточникДанных); КонецЕсли; - Если СтрокаСоответствуетШаблону(Строка, ИсточникДоступныхПолей.ИсточникДанных) Тогда - Результат.Добавить(ИсточникДоступныхПолей); + Иначе + Для Каждого Тип Из Родитель.Тип.Типы() Цикл + ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); + Если ОбъектМетаданных = Неопределено Тогда + Продолжить; + КонецЕсли; + + ИсточникДанных = ОбъектМетаданных.ПолноеИмя() + "." + Реквизит.Имя; + ИсточникиДанных.Добавить(ИсточникДанных); + КонецЦикла; + КонецЕсли; + + Для Каждого Тип Из Реквизит.Тип.Типы() Цикл + ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); + Если ОбъектМетаданных = Неопределено Или Метаданные.Перечисления.Содержит(ОбъектМетаданных) Тогда + Продолжить; + КонецЕсли; + ИсточникДанных = ОбъектМетаданных.ПолноеИмя(); + ИсточникиДанных.Добавить(ИсточникДанных); + КонецЦикла; + + Для Каждого ИсточникДанных Из ИсточникиДанных Цикл + ИсточникНайден = Ложь; + Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей Цикл + Если СтрокаСоответствуетШаблону(ИсточникДанных, ИсточникДоступныхПолей.ИсточникДанных) Тогда + Результат.Добавить(ИсточникДоступныхПолей); + ИсточникНайден = Истина; + Продолжить; + КонецЕсли; + КонецЦикла; + + Если Не ИсточникНайден И НастройкиСписка <> Неопределено + И ЗначениеЗаполнено(НастройкиСписка.ПриОпределенииИсточниковДоступныхПолей) Тогда + + ИсточникиПолей = КоллекцияИсточниковДоступныхПолей(); + Модуль = ОбщегоНазначения.ОбщийМодуль(НастройкиСписка.ПриОпределенииИсточниковДоступныхПолей); + Модуль.ПриОпределенииИсточниковДоступныхПолей(ИсточникДанных, ИсточникиПолей); + + Если ЗначениеЗаполнено(ИсточникиПолей) Тогда + Для Каждого ИсточникПолей Из ИсточникиПолей Цикл + ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); + ЗаполнитьЗначенияСвойств(ИсточникДоступныхПолей, ИсточникПолей); + Результат.Добавить(ИсточникДоступныхПолей); + КонецЦикла; + КонецЕсли; КонецЕсли; КонецЦикла; @@ -587,15 +855,12 @@ КонецЕсли; ИсточникДанных = ОбъектМетаданных.ПолноеИмя(); - ИсточникНайден = Ложь; - Для Каждого ИсточникДоступныхПолей Из ИсточникиДоступныхПолей Цикл - Если СтрокаСоответствуетШаблону(ИсточникДанных, ИсточникДоступныхПолей.ИсточникДанных) Тогда - Результат.Добавить(ИсточникДоступныхПолей); - ИсточникНайден = Истина; - КонецЕсли; - КонецЦикла; + ИспользоватьИдентификаторыДляФормул = Ложь; + Если НастройкиСписка <> Неопределено Тогда + ИспользоватьИдентификаторыДляФормул = НастройкиСписка.ИспользоватьИдентификаторыДляФормул; + КонецЕсли; - Если Не ИсточникНайден И ИспользоватьИдентификаторыДляФормул Тогда + Если ИспользоватьИдентификаторыДляФормул Тогда КомпоновщикНастроек = КомпоновщикНастроекОбъекта(ОбъектМетаданных); ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); ИсточникДоступныхПолей.ИсточникДанных = ИсточникДанных; @@ -634,11 +899,20 @@ Возврат Ложь; КонецЕсли; + Если Не СтрНайти(Шаблон, "*") Тогда + Возврат Строка = Шаблон; + КонецЕсли; + Строка = СтрСоединить(СтрРазделить(Строка, " " + Символы.ПС + Символы.ВК + Символы.Таб, Ложь), " "); СтрокаСоответствуетШаблону = Истина; - Для Каждого ЧастиШаблона Из СтрРазделить(Шаблон, "*", Ложь) Цикл + Для Каждого ЧастиШаблона Из СтрРазделить(Шаблон, "*", Истина) Цикл ФрагментДляПоиска = СтрСоединить(СтрРазделить(ЧастиШаблона, " " + Символы.ПС + Символы.ВК + Символы.Таб, Ложь), " "); + + Если Не ЗначениеЗаполнено(Строка) И ФрагментДляПоиска = "" Тогда + СтрокаСоответствуетШаблону = Ложь; + Прервать; + КонецЕсли; Позиция = СтрНайти(Строка, ФрагментДляПоиска); Если Позиция = 0 Тогда @@ -649,6 +923,10 @@ Строка = Сред(Строка, Позиция + СтрДлина(ФрагментДляПоиска)); КонецЦикла; + Если Не СтрЗаканчиваетсяНа(Шаблон, "*") И ЗначениеЗаполнено(Строка) Тогда + СтрокаСоответствуетШаблону = Ложь; + КонецЕсли; + Возврат СтрокаСоответствуетШаблону; КонецФункции @@ -1045,7 +1323,6 @@ КоллекцияРеквизитов = ТекущиеДанные.ПолучитьЭлементы(); НастройкиСписка = КонструкторФормулКлиентСервер.НастройкиСпискаПолей(Форма, ИмяСписка); - ИспользоватьИдентификаторыДляФормул = НастройкиСписка.ИспользоватьИдентификаторыДляФормул; Если КоллекцияРеквизитов.Количество() = 0 Или КоллекцияРеквизитов[0].Поле <> Неопределено Тогда Возврат; @@ -1053,21 +1330,20 @@ КоллекцияРеквизитов.Очистить(); ИсточникиДоступныхПолей = СписокИсточниковДоступныхПолей(Форма, ИмяСписка); - ЗаполнитьСписокДоступныхРеквизитов(ТекущиеДанные, ИсточникиДоступныхПолей, Отбор, ИспользоватьИдентификаторыДляФормул); + ЗаполнитьСписокДоступныхРеквизитов(ТекущиеДанные, ИсточникиДоступныхПолей, Отбор, НастройкиСписка); КонецПроцедуры Процедура РазвернутьПоле(ТекущиеДанные, ИсточникиДоступныхПолей, НастройкиСписка) КоллекцияРеквизитов = ПодчиненныеЭлементы(ТекущиеДанные); - ИспользоватьИдентификаторыДляФормул = НастройкиСписка.ИспользоватьИдентификаторыДляФормул; Если КоллекцияРеквизитов.Количество() = 0 Или КоллекцияРеквизитов[0].Поле <> Неопределено Тогда Возврат; КонецЕсли; КоллекцияРеквизитов.Очистить(); - ЗаполнитьСписокДоступныхРеквизитов(ТекущиеДанные, ИсточникиДоступныхПолей, "", ИспользоватьИдентификаторыДляФормул); + ЗаполнитьСписокДоступныхРеквизитов(ТекущиеДанные, ИсточникиДоступныхПолей, "", НастройкиСписка); КонецПроцедуры @@ -1132,73 +1408,28 @@ КонецФункции -Функция СхемаКомпоновкиДанныхИзТаблицыЗначений(ТаблицаЗначений) - - СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; - - ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); - ИсточникДанных.Имя = "ИсточникДанных1"; - ИсточникДанных.ТипИсточникаДанных = "local"; - - НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); - НаборДанных.ИсточникДанных = "ИсточникДанных1"; - НаборДанных.Имя = "НаборДанных1"; - - Для Каждого СтрокаТаблицы Из ТаблицаЗначений Цикл - Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); - Поле.Поле = СтрокаТаблицы.Идентификатор; - Поле.ПутьКДанным = СтрокаТаблицы.Идентификатор; - Если ЗначениеЗаполнено(СтрокаТаблицы.Представление) Тогда - Поле.Заголовок = СтрокаТаблицы.Представление; - КонецЕсли; - Поле.ТипЗначения = СтрокаТаблицы.ТипЗначения; - - ДополнительныеПараметры = Новый Структура("Порядок"); - ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, СтрокаТаблицы); - - ДополнительныеПараметры.Вставить("Картинка", Base64Строка(СтрокаТаблицы.Картинка.ПолучитьДвоичныеДанные())); - - Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); - КонецЦикла; - - Возврат СхемаКомпоновкиДанных; - -КонецФункции - -Функция СхемаКомпоновкиДанныхИзДереваЗначений(ДеревоЗначений) - - СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; - - ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); - ИсточникДанных.Имя = "ИсточникДанных1"; - ИсточникДанных.ТипИсточникаДанных = "local"; - - НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); - НаборДанных.ИсточникДанных = "ИсточникДанных1"; - НаборДанных.Имя = "НаборДанных1"; - - ДобавитьГруппуЭлементовВНаборДанных(ДеревоЗначений, НаборДанных); - - Возврат СхемаКомпоновкиДанных; - -КонецФункции - Процедура ДобавитьГруппуЭлементовВНаборДанных(КоллекцияЭлементов, НаборДанных, Родитель = Неопределено) Для Каждого Элемент Из КоллекцияЭлементов.Строки Цикл - ЭтоГруппа = Элемент.Строки.Количество() > 0 И Не ЗначениеЗаполнено(Элемент.ТипЗначения); + ЭтоГруппа = Ложь; - Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); - Поле.Поле = Элемент.Идентификатор; - Поле.ТипЗначения = Элемент.ТипЗначения; + Если Элемент.Папка Тогда + Поле = НаборДанных.Поля.Добавить(Тип("ПапкаПолейНабораДанныхСхемыКомпоновкиДанных")); + ИначеЕсли Элемент.Таблица Тогда + Поле = НаборДанных.Поля.Добавить(Тип("ВложенныйНаборДанныхСхемыКомпоновкиДанных")); + Иначе + Поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); + Поле.ТипЗначения = Элемент.ТипЗначения; + Поле.Поле = Элемент.Идентификатор; + ЭтоГруппа = Элемент.Строки.Количество() > 0 И Не ЗначениеЗаполнено(Элемент.ТипЗначения); + + ДополнительныеПараметры = Новый Структура("Порядок,ЭтоГруппа"); + ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Элемент); + ДополнительныеПараметры.ЭтоГруппа = ЭтоГруппа; + ДополнительныеПараметры.Вставить("Картинка", Base64Строка(Элемент.Картинка.ПолучитьДвоичныеДанные())); - ДополнительныеПараметры = Новый Структура("Порядок,ЭтоГруппа"); - ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Элемент); - ДополнительныеПараметры.ЭтоГруппа = ЭтоГруппа; - - ДополнительныеПараметры.Вставить("Картинка", Base64Строка(Элемент.Картинка.ПолучитьДвоичныеДанные())); - - Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); + Поле.ПараметрыРедактирования.УстановитьЗначениеПараметра("Маска", ЗначениеВJSON(ДополнительныеПараметры)); + КонецЕсли; Поле.ПутьКДанным = Элемент.Идентификатор; Если Родитель <> Неопределено Тогда @@ -1208,7 +1439,15 @@ Если ЗначениеЗаполнено(Элемент.Представление) Тогда Поле.Заголовок = Элемент.Представление; КонецЕсли; - + + Если ЗначениеЗаполнено(Элемент.Формат) Тогда + ЗначениеПараметра = Поле.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат")); + Если ЗначениеПараметра <> Неопределено Тогда + ЗначениеПараметра.Использование = Истина; + ЗначениеПараметра.Значение = Элемент.Формат; + КонецЕсли; + КонецЕсли; + ДобавитьГруппуЭлементовВНаборДанных(Элемент, НаборДанных, Поле); КонецЦикла; @@ -1221,6 +1460,8 @@ ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(ПредставлениеФормулы); Выражение = ПредставлениеФормулы; + НайденныеОперанды = Новый Соответствие; + Для Каждого Элемент Из Форма.ПодключенныеСпискиПолей Цикл ИмяСпискаПолей = Элемент.ИмяСпискаПолей; КоллекцияПолей = Форма[ИмяСпискаПолей]; @@ -1235,10 +1476,11 @@ Операнд = ОбернутьВКвадратныеСкобки(Операнд); КонецЕсли; Выражение = СтрЗаменить(Выражение, ПредставлениеОперанда, Операнд); + НайденныеОперанды.Вставить(ПредставлениеОперанда, Истина); КонецЕсли; КонецЦикла; КонецЦикла; - + Возврат Выражение; КонецФункции @@ -1278,10 +1520,9 @@ Для Каждого НастройкиСписка Из СпискиПолей Цикл КоллекцияПолей = НастройкиСписка.КоллекцияПолей; ИсточникиДоступныхПолей = НастройкиСписка.ИсточникиДоступныхПолей; - ИспользоватьИдентификаторыДляФормул = НастройкиСписка.ИспользоватьИдентификаторыДляФормул; Если КоллекцияПолей = Неопределено Тогда КоллекцияПолей = НоваяКоллекцияПолей(); - ЗаполнитьСписокДоступныхРеквизитов(КоллекцияПолей, ИсточникиДоступныхПолей, , ИспользоватьИдентификаторыДляФормул); + ЗаполнитьСписокДоступныхРеквизитов(КоллекцияПолей, ИсточникиДоступныхПолей, , НастройкиСписка); КонецЕсли; Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл @@ -1301,6 +1542,28 @@ КонецФункции +Функция ФорматПоля(ПутьКДанным, АдресСхемы) + + Если Не ЗначениеЗаполнено(АдресСхемы) Тогда + Возврат ""; + КонецЕсли; + + СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы); // СхемаКомпоновкиДанных + + Поле = СхемаКомпоновкиДанных.НаборыДанных[0].Поля.Найти(ПутьКДанным); + Если ТипЗнч(Поле) <> Тип("ПолеНабораДанныхСхемыКомпоновкиДанных") Тогда + Возврат ""; + КонецЕсли; + + ЗначениеПараметра = Поле.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Формат")); + Если ЗначениеПараметра <> Неопределено Тогда + Возврат ЗначениеПараметра.Значение; + КонецЕсли; + + Возврат ""; + +КонецФункции + Функция ВыражениеДляПроверки(Форма, ПредставлениеФормулы, ИмяСпискаОперандов) Экспорт ЭлементыФормулы = КонструкторФормулКлиентСервер.ЭлементыФормулы(ПредставлениеФормулы); @@ -1337,6 +1600,7 @@ КонецЦикла; КонецЦикла; + Выражение = ФорматироватьЧисла(Выражение); Возврат Выражение; КонецФункции @@ -1464,6 +1728,20 @@ КонецФункции +Функция РеквизитыСпискаИсточниковДоступныхПолей() + + Результат = Новый Структура; + + Результат.Вставить("ИсточникДанных", Новый ОписаниеТипов("Строка")); + Результат.Вставить("КоллекцияПолей", Новый ОписаниеТипов()); + Результат.Вставить("Замещать", Новый ОписаниеТипов("Булево")); + Результат.Вставить("СхемаКомпоновкиДанных", Новый ОписаниеТипов()); + Результат.Вставить("ИдентификаторСхемыКомпоновкиДанных", Новый ОписаниеТипов("Строка")); + + Возврат Результат; + +КонецФункции + Функция НоваяКоллекцияПолей() Результат = Новый ДеревоЗначений(); @@ -1477,17 +1755,6 @@ КонецФункции -Функция НоваяКоллекцияИсточниковДоступныхПолей() - - Результат = Новый ТаблицаЗначений; - Результат.Колонки.Добавить("ИсточникДанных", Новый ОписаниеТипов("Строка")); - Результат.Колонки.Добавить("КоллекцияПолей"); - Результат.Колонки.Добавить("Замещать", Новый ОписаниеТипов("Булево")); - - Возврат Результат; - -КонецФункции - Функция ЗначениеВJSON(Значение) ЗаписьJSON = Новый ЗаписьJSON; @@ -1760,6 +2027,61 @@ КонецФункции +Функция ИмяОсновногоИсточникаДанных(ИсточникиДоступныхПолей) + + Если ИсточникиДоступныхПолей.Количество() > 0 Тогда + Возврат ИсточникиДоступныхПолей[0].ИсточникДанных; + КонецЕсли; + + Возврат ""; + +КонецФункции + +Функция ФорматироватьЧисла(Строка, РазделительДробнойЧасти = ".") + + Результат = ""; + Число = ""; + ЕстьРазделительВЧисле = Ложь; + ПредыдущийСимвол = ""; + + ДлинаСтроки = СтрДлина(Строка); + Для Индекс = 1 По ДлинаСтроки Цикл + Если Индекс < ДлинаСтроки Тогда + СледующийСимвол = Сред(Строка, Индекс + 1, 1); + Иначе + СледующийСимвол = ""; + КонецЕсли; + Символ = Сред(Строка, Индекс, 1); + + ПредыдущийСимволЭтоРазделитель = ПредыдущийСимвол = "" Или СтрНайти("()[]/*-+%=<>, " + Символы.Таб + Символы.ПС, ПредыдущийСимвол) > 0; + + Если ЭтоЦифра(Символ) И (ПредыдущийСимволЭтоРазделитель Или ЭтоЦифра(ПредыдущийСимвол) И ЗначениеЗаполнено(Число)) Тогда + Число = Число + Символ; + ИначеЕсли Не ЕстьРазделительВЧисле И (Символ = "," Или Символ = ".") И ЭтоЦифра(СледующийСимвол) + И (ЭтоЦифра(ПредыдущийСимвол) Или ПредыдущийСимволЭтоРазделитель) И ЗначениеЗаполнено(Число) Тогда + Число = Число + РазделительДробнойЧасти; + ЕстьРазделительВЧисле = Истина; + Иначе + Результат = Результат + Число + Символ; + Число = ""; + ЕстьРазделительВЧисле = Ложь; + КонецЕсли; + + ПредыдущийСимвол = Символ; + Символ = ""; + КонецЦикла; + + Результат = Результат + Число + Символ; + Возврат Результат; + +КонецФункции + +Функция ЭтоЦифра(Символ) + + Возврат СтрНайти("1234567890", Символ) > 0; + +КонецФункции + Функция ИмяПоля(Поле) ИмяПоля = ""; diff --git a/SSL/src/CommonModules/КонтрольВеденияУчета/Module.bsl b/SSL/src/CommonModules/КонтрольВеденияУчета/Module.bsl index 60f80129b..b22d74ff1 100644 --- a/SSL/src/CommonModules/КонтрольВеденияУчета/Module.bsl +++ b/SSL/src/CommonModules/КонтрольВеденияУчета/Module.bsl @@ -1139,6 +1139,29 @@ КонецПроцедуры +Процедура ОчиститьРезультатПоПроверке(Проверка) Экспорт + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("РегистрСведений.РезультатыПроверкиУчета"); + ЭлементБлокировкиДанных.УстановитьЗначение("ПравилоПроверки", Проверка); + + НачатьТранзакцию(); + + Попытка + БлокировкаДанных.Заблокировать(); + + Набор = РегистрыСведений.РезультатыПроверкиУчета.СоздатьНаборЗаписей(); + Набор.Отбор.ПравилоПроверки.Установить(Проверка); + Набор.Отбор.ИгнорироватьПроблему.Установить(Ложь); + Набор.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/SSL/src/CommonModules/КонтрольВеденияУчетаКлиент/Module.bsl b/SSL/src/CommonModules/КонтрольВеденияУчетаКлиент/Module.bsl index a1c650c0f..22b2be14f 100644 --- a/SSL/src/CommonModules/КонтрольВеденияУчетаКлиент/Module.bsl +++ b/SSL/src/CommonModules/КонтрольВеденияУчетаКлиент/Module.bsl @@ -14,16 +14,18 @@ // ВидПроверок - СправочникСсылка.ВидыПроверок - ссылка на вид проверки. // - Строка - строковый идентификатор вида проверки Свойство1. // - Массив - строковые идентификаторы вида проверки Свойство1...СвойствоN. +// ТочноеСоответствие - Булево - если Истина, то делается отбор только по указанному виду проверки, +// если Ложь, то выбираются все виды проверки, которые связаны с переданным. // // Пример: // ОткрытьОтчетПоПроблемам("СистемныеПроверки"); // -Процедура ОткрытьОтчетПоПроблемам(ВидПроверок) Экспорт +Процедура ОткрытьОтчетПоПроблемам(ВидПроверок, ТочноеСоответствие = Истина) Экспорт // Проверка валидности переданного параметра ВидПроверок осуществляется // в процедуре ПриСозданииНаСервере модуля отчета РезультатыПроверкиУчета. - КонтрольВеденияУчетаСлужебныйКлиент.ОткрытьОтчетПоПроблемам(ВидПроверок); + КонтрольВеденияУчетаСлужебныйКлиент.ОткрытьОтчетПоПроблемам(ВидПроверок, ТочноеСоответствие); КонецПроцедуры diff --git a/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебный/Module.bsl b/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебный/Module.bsl index e4735be68..423a4c3be 100644 --- a/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебный/Module.bsl +++ b/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебный/Module.bsl @@ -264,6 +264,60 @@ КонецФункции +// Подготавливает данные, необходимые для выполнения проверки ведения учета. +// +// Параметры: +// Проверка - СправочникСсылка.ПравилаПроверкиУчета - проверка, параметры которой +// необходимо подготовить. +// ПараметрыВыполненияПроверки - Структура +// - Массив - произвольные дополнительные параметры проверки, +// которые уточняют, что и как именно проверять. +// - Структура - один параметр проверки. Состав свойств см. КонтрольВеденияУчета.ПараметрыВыполненияПроверки. +// - Массив - несколько параметров проверки (элементы массива типа Структура, как +// описано выше). +// +// Возвращаемое значение: +// см. КонтрольВеденияУчета.ОписаниеПроблемы. +// +Функция ПодготовитьПараметрыПроверки(Знач Проверка, Знач ПараметрыВыполненияПроверки) Экспорт + + ПараметрыПроверки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Проверка, "ДатаНачалаПроверки, Идентификатор, + |ИдентификаторРегламентногоЗадания, ЛимитПроблем, Наименование, ВажностьПроблемы, СпособВыполнения, + |КонтекстПроверокВеденияУчета, УточнениеКонтекстаПроверокВеденияУчета"); + + Если Не ПараметрыПроверки.Свойство("ПроверкаБылаОстановлена") Тогда + ПараметрыПроверки.Вставить("ПроверкаБылаОстановлена", Ложь); + КонецЕсли; + Если Не ПараметрыПроверки.Свойство("РучнойЗапуск") Тогда + ПараметрыПроверки.Вставить("РучнойЗапуск", Истина); + КонецЕсли; + + ПроверкиВеденияУчета = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки; + ВсеСвойстваПроверки = ПроверкиВеденияУчета.Найти(ПараметрыПроверки.Идентификатор, "Идентификатор"); + + ПараметрыПроверки.Вставить("Проверка", Проверка); + ПараметрыПроверки.Вставить("ГлобальныеНастройки", ГлобальныеНастройки()); + ПараметрыПроверки.Вставить("ИтерацияПроверки", 1); + Если ВсеСвойстваПроверки <> Неопределено Тогда + ПараметрыПроверки.Вставить("ПоддерживаетВыборочнуюПроверку", ВсеСвойстваПроверки.ПоддерживаетВыборочнуюПроверку); + КонецЕсли; + + Если ПараметрыВыполненияПроверки = Неопределено Тогда + ГруппаПроверок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Проверка, "Родитель"); + Если ГруппаПроверок <> Неопределено И Не ГруппаПроверок.Пустая() Тогда + ИдентификаторПроверки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаПроверок, "Идентификатор"); + Иначе + ИдентификаторПроверки = ПараметрыПроверки.Идентификатор; + КонецЕсли; + ПараметрыВыполненияПроверки = Новый Массив; + ПараметрыВыполненияПроверки.Добавить(ПараметрыВыполненияПроверки(ИдентификаторПроверки)); + КонецЕсли; + ПараметрыПроверки.Вставить("ПараметрыВыполненияПроверки", ПараметрыВыполненияПроверки); + + Возврат ПараметрыПроверки; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -4204,60 +4258,6 @@ КонецФункции -// Подготавливает данные, необходимые для выполнения проверки ведения учета. -// -// Параметры: -// Проверка - СправочникСсылка.ПравилаПроверкиУчета - проверка, параметры которой -// необходимо подготовить. -// ПараметрыВыполненияПроверки - Структура -// - Массив - произвольные дополнительные параметры проверки, -// которые уточняют, что и как именно проверять. -// - Структура - один параметр проверки. Состав свойств см. КонтрольВеденияУчета.ПараметрыВыполненияПроверки. -// - Массив - несколько параметров проверки (элементы массива типа Структура, как -// описано выше). -// -// Возвращаемое значение: -// см. КонтрольВеденияУчета.ОписаниеПроблемы. -// -Функция ПодготовитьПараметрыПроверки(Знач Проверка, Знач ПараметрыВыполненияПроверки) - - ПараметрыПроверки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Проверка, "ДатаНачалаПроверки, Идентификатор, - |ИдентификаторРегламентногоЗадания, ЛимитПроблем, Наименование, ВажностьПроблемы, СпособВыполнения, - |КонтекстПроверокВеденияУчета, УточнениеКонтекстаПроверокВеденияУчета"); - - Если Не ПараметрыПроверки.Свойство("ПроверкаБылаОстановлена") Тогда - ПараметрыПроверки.Вставить("ПроверкаБылаОстановлена", Ложь); - КонецЕсли; - Если Не ПараметрыПроверки.Свойство("РучнойЗапуск") Тогда - ПараметрыПроверки.Вставить("РучнойЗапуск", Истина); - КонецЕсли; - - ПроверкиВеденияУчета = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета().Проверки; - ВсеСвойстваПроверки = ПроверкиВеденияУчета.Найти(ПараметрыПроверки.Идентификатор, "Идентификатор"); - - ПараметрыПроверки.Вставить("Проверка", Проверка); - ПараметрыПроверки.Вставить("ГлобальныеНастройки", ГлобальныеНастройки()); - ПараметрыПроверки.Вставить("ИтерацияПроверки", 1); - Если ВсеСвойстваПроверки <> Неопределено Тогда - ПараметрыПроверки.Вставить("ПоддерживаетВыборочнуюПроверку", ВсеСвойстваПроверки.ПоддерживаетВыборочнуюПроверку); - КонецЕсли; - - Если ПараметрыВыполненияПроверки = Неопределено Тогда - ГруппаПроверок = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Проверка, "Родитель"); - Если ГруппаПроверок <> Неопределено И Не ГруппаПроверок.Пустая() Тогда - ИдентификаторПроверки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаПроверок, "Идентификатор"); - Иначе - ИдентификаторПроверки = ПараметрыПроверки.Идентификатор; - КонецЕсли; - ПараметрыВыполненияПроверки = Новый Массив; - ПараметрыВыполненияПроверки.Добавить(ПараметрыВыполненияПроверки(ИдентификаторПроверки)); - КонецЕсли; - ПараметрыПроверки.Вставить("ПараметрыВыполненияПроверки", ПараметрыВыполненияПроверки); - - Возврат ПараметрыПроверки; - -КонецФункции - // См. КонтрольВеденияУчета.ОчиститьРезультатыПредыдущихПроверок. Процедура ОчиститьРезультатыПредыдущихПроверок(Проверка, ПараметрыВыполненияПроверки) Экспорт diff --git a/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебныйКлиент/Module.bsl index 1d0048a2f..2c3184f4b 100644 --- a/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/КонтрольВеденияУчетаСлужебныйКлиент/Module.bsl @@ -58,10 +58,11 @@ КонецПроцедуры // см. КонтрольВеденияУчетаКлиент.ОткрытьОтчетПоПроблемам. -Процедура ОткрытьОтчетПоПроблемам(ВидПроверок) Экспорт +Процедура ОткрытьОтчетПоПроблемам(ВидПроверок, ТочноеСоответствие = Истина) Экспорт ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ВидПроверки", ВидПроверок); + ПараметрыФормы.Вставить("ТочноеСоответствие", ТочноеСоответствие); ОткрытьФорму("Отчет.РезультатыПроверкиУчета.Форма", ПараметрыФормы); diff --git a/SSL/src/CommonModules/МультиязычностьКлиентСервер/Module.bsl b/SSL/src/CommonModules/МультиязычностьКлиентСервер/Module.bsl index a03edfae1..e4d6f2df5 100644 --- a/SSL/src/CommonModules/МультиязычностьКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/МультиязычностьКлиентСервер/Module.bsl @@ -25,12 +25,17 @@ Возврат; КонецЕсли; - Если МультиязычностьПовтИсп.ОбъектНеСодержитТЧПредставления(Данные.Ссылка) Тогда + Если Не МультиязычностьСервер.ОбъектСодержитТЧПредставления(Данные.Ссылка) Тогда СуффиксЯзыка = МультиязычностьСервер.СуффиксТекущегоЯзыка(); Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда + СтандартнаяОбработка = Ложь; Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Данные.Ссылка, ИмяРеквизита,, ТекущийЯзык().КодЯзыка); + Если ПустаяСтрока(Представление) И Данные.Свойство(ИмяРеквизита) Тогда + Представление = Данные[ИмяРеквизита]; + КонецЕсли; + КонецЕсли; ИначеЕсли Данные.Свойство("Ссылка") Или Данные.Ссылка <> Неопределено Тогда diff --git a/SSL/src/CommonModules/МультиязычностьПовтИсп/Module.bsl b/SSL/src/CommonModules/МультиязычностьПовтИсп/Module.bsl index 4d94bad94..9daba7e98 100644 --- a/SSL/src/CommonModules/МультиязычностьПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/МультиязычностьПовтИсп/Module.bsl @@ -33,12 +33,34 @@ КонецФункции -Функция ОбъектНеСодержитТЧПредставления(Ссылка) Экспорт +Функция ОбъектСодержитТЧПредставления(СсылкаИлиПолноеИмяМетаданных) Экспорт - Возврат Ссылка.Метаданные().ТабличныеЧасти.Найти("Представления") = Неопределено; + Если ТипЗнч(СсылкаИлиПолноеИмяМетаданных) = Тип("Строка") Тогда + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(СсылкаИлиПолноеИмяМетаданных); + ПолноеИмя = СсылкаИлиПолноеИмяМетаданных; + Иначе + ОбъектМетаданных = СсылкаИлиПолноеИмяМетаданных.Метаданные(); + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + КонецЕсли; + + Если СтрНачинаетсяС(ПолноеИмя, "Справочник") + Или СтрНачинаетсяС(ПолноеИмя, "Документ") + Или СтрНачинаетсяС(ПолноеИмя, "ПланВидовХарактеристик") + Или СтрНачинаетсяС(ПолноеИмя, "Задача") + Или СтрНачинаетсяС(ПолноеИмя, "БизнесПроцесс") + Или СтрНачинаетсяС(ПолноеИмя, "Обработка") + Или СтрНачинаетсяС(ПолноеИмя, "ПланВидовРасчета") + Или СтрНачинаетсяС(ПолноеИмя, "Отчет") + Или СтрНачинаетсяС(ПолноеИмя, "ПланСчетов") + Или СтрНачинаетсяС(ПолноеИмя, "ПланОбмена") Тогда + Возврат ОбъектМетаданных.ТабличныеЧасти.Найти("Представления") <> Неопределено; + КонецЕсли; + + Возврат Ложь; КонецФункции + Функция СведенияОбЯзыках() Экспорт Результат = Новый Структура; @@ -53,11 +75,11 @@ Функция СуффиксЯзыка(Язык) Экспорт - Если Язык = Константы.ДополнительныйЯзык1.Получить() И МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда + Если СтрСравнить(Язык, Константы.ДополнительныйЯзык1.Получить()) = 0 И МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда Возврат "Язык1"; КонецЕсли; - Если Язык = Константы.ДополнительныйЯзык2.Получить() И МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда + Если СтрСравнить(Язык, Константы.ДополнительныйЯзык2.Получить()) = 0 И МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда Возврат "Язык2"; КонецЕсли; @@ -65,5 +87,44 @@ КонецФункции +Функция МультиязычныеРеквизитыОбъекта(ОбъектИлиСсылка) Экспорт + + ТипОбъекта = ТипЗнч(ОбъектИлиСсылка); + + Если ТипОбъекта = Тип("Строка") Тогда + МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ОбъектИлиСсылка); + ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипОбъекта) Тогда + МетаданныеОбъекта = ОбъектИлиСсылка.Метаданные(); + Иначе + МетаданныеОбъекта = ОбъектИлиСсылка; + КонецЕсли; + + Возврат МультиязычностьСервер.НаименованияЛокализуемыхРеквизитовОбъекта(МетаданныеОбъекта); + +КонецФункции + +Функция ЕстьМультиязычныеРеквизитыВШапкеОбъекта(ОбъектМетаданныхПолноеИмя) Экспорт + + ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 0 + | * + |ИЗ + | &ОбъектМетаданныхПолноеИмя КАК ДанныеИсточника"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОбъектМетаданныхПолноеИмя", ОбъектМетаданныхПолноеИмя); + Запрос = Новый Запрос(ТекстЗапроса); + + РезультатЗапроса = Запрос.Выполнить(); + + Для каждого Колонка Из РезультатЗапроса.Колонки Цикл + Если СтрЗаканчиваетсяНа(Колонка.Имя, МультиязычностьСервер.СуффиксПервогоЯзыка()) + Или СтрЗаканчиваетсяНа(Колонка.Имя, МультиязычностьСервер.СуффиксВторогоЯзыка()) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/МультиязычностьСервер/Module.bsl b/SSL/src/CommonModules/МультиязычностьСервер/Module.bsl index eb4d21e7e..ec74aa053 100644 --- a/SSL/src/CommonModules/МультиязычностьСервер/Module.bsl +++ b/SSL/src/CommonModules/МультиязычностьСервер/Module.bsl @@ -25,9 +25,13 @@ Процедура ЗаполнитьМультиязычныйРеквизит(Элемент, ИмяРеквизита, ИсходнаяСтрока, КодыЯзыков = Неопределено) Экспорт Для каждого КодЯзыка Из КодыЯзыков Цикл + ЗначениеПоКодуЯзыка = НСтр(ИсходнаяСтрока, КодЯзыка); ЗначениеДляЗаполнения = ?(ЗначениеЗаполнено(ЗначениеПоКодуЯзыка), ЗначениеПоКодуЯзыка, НСтр(ИсходнаяСтрока, ОбщегоНазначения.КодОсновногоЯзыка())); Элемент[ИмяЛокализуемогоРеквизита(ИмяРеквизита, КодЯзыка)] = ЗначениеДляЗаполнения; + Если СтрСравнить(КодЯзыка, ОбщегоНазначения.КодОсновногоЯзыка()) = 0 Тогда + Элемент[ИмяРеквизита] = ЗначениеДляЗаполнения; + КонецЕсли; КонецЦикла; КонецПроцедуры @@ -96,7 +100,7 @@ Для каждого Элемент Из Форма.Элементы Цикл - Если ТипЗнч(Элемент) = Тип("ПолеФормы") И НаименованияРеквизитов[Элемент.ПутьКДанным] = Истина Тогда + Если ТипЗнч(Элемент) = Тип("ПолеФормы") И НаименованияРеквизитов[Элемент.ПутьКДанным] <> Неопределено Тогда Элемент.КнопкаОткрытия = Истина; Элемент.УстановитьДействие("Открытие", "Подключаемый_Открытие"); Форма.ПараметрыМультиязычныхРеквизитов.Вставить(Элемент.Имя, Элемент.ПутьКДанным); @@ -162,7 +166,9 @@ Процедура ПередЗаписьюНаСервере(ТекущийОбъект) Экспорт ОбъектМетаданных = ОбъектМетаданных(ТекущийОбъект); - Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда + СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка(); + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда Если Не ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных) И ТекущийОбъект.ЭтоНовый() Тогда @@ -191,8 +197,6 @@ Возврат; КонецЕсли; - СуффиксТекущегоЯзыка = ""; - Если СтрСравнить(ОбщегоНазначения.КодОсновногоЯзыка(), ТекущийЯзык().КодЯзыка) <> 0 Тогда СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка(); КонецЕсли; @@ -210,6 +214,10 @@ Возврат; КонецЕсли; + Если Не ОбъектСодержитТЧПредставления(ОбъектМетаданных.ПолноеИмя()) Тогда + Возврат; + КонецЕсли; + Реквизиты = Новый Массив; Для каждого Реквизит Из ТекущийОбъект.Ссылка.Метаданные().ТабличныеЧасти.Представления.Реквизиты Цикл Если СтрСравнить(Реквизит.Имя, "КодЯзыка") = 0 Тогда @@ -246,6 +254,13 @@ Представления.Свернуть("КодЯзыка", СтрСоединить(Реквизиты, ",")); + ИменаЛокализуемыхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъекта(ОбъектМетаданных); + + Если ИменаЛокализуемыхРеквизитов.Количество() > 0 Тогда + СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаЛокализуемыхРеквизитов, КодПервогоДополнительногоЯзыкаИнформационнойБазы()); + СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаЛокализуемыхРеквизитов, КодВторогоДополнительногоЯзыкаИнформационнойБазы()); + КонецЕсли; + КонецПроцедуры // Вызывается из модуля объекта для заполнения значений мультиязычных @@ -264,22 +279,17 @@ Процедура ПриЧтенииПредставленийНаСервере(Объект) Экспорт ОбъектМетаданных = ОбъектМетаданных(Объект); - ЭтоРегистр = ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных); - Если ЭтоРегистр Или МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда - - Если ЭтоОсновнойЯзык() Тогда - Возврат; - КонецЕсли; + Если ЭтоОсновнойЯзык() Тогда + Возврат; + КонецЕсли; + + СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка(); + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда ИменаЛокализуемыхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъекта(ОбъектМетаданных); - СуффиксТекущегоЯзыка = ""; - - Если СтрСравнить(Константы.ОсновнойЯзык.Получить(), ТекущийЯзык().КодЯзыка) <> 0 Тогда - СуффиксТекущегоЯзыка = СуффиксТекущегоЯзыка(); - КонецЕсли; - Для Каждого Реквизит Из ИменаЛокализуемыхРеквизитов Цикл Значение = Объект[Реквизит.Ключ]; @@ -296,6 +306,10 @@ КонецЕсли; + Если Не ОбъектСодержитТЧПредставления(ОбъектМетаданных.ПолноеИмя()) Тогда + Возврат; + КонецЕсли; + Для каждого Реквизит Из ОбъектМетаданных.ТабличныеЧасти.Представления.Реквизиты Цикл Если СтрСравнить(Реквизит.Имя, "КодЯзыка") = 0 Тогда @@ -407,6 +421,31 @@ КонецПроцедуры +// Добавляет к имени поля в тексте запроса языковой суффикс текущего языка. +// Примеры конвертации полей: +// - если параметр ИмяПоля равно "Свойства.Заголовок", то поле преобразует в "Свойства.ЗаголовокЯзык1"; +// - если параметр ИмяПоля равно "Свойства.Заголовок КАК Заголовок", +// то поле преобразует в "Свойства.ЗаголовокЯзык1 КАК Заголовок". +// +// Параметры: +// ТекстЗапроса - Строка - текст запроса в котором изменяется имя поля +// ИмяПоля - Строка - имя заменяемого поля +// +Процедура ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, ИмяПоля) Экспорт + + СуффиксЯзыка = СуффиксТекущегоЯзыка(); + Если ПустаяСтрока(СуффиксЯзыка) Тогда + Возврат; + КонецЕсли; + + ПозицияПробела = СтрНайти(ИмяПоля, " "); + НовоеИмяПоля =? (ПозицияПробела > 1, + Лев(ИмяПоля, ПозицияПробела - 1) + СуффиксЯзыка + Сред(ИмяПоля, ПозицияПробела), ИмяПоля + СуффиксЯзыка); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ИмяПоля, НовоеИмяПоля); + +КонецПроцедуры + #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -420,6 +459,10 @@ УстановитьПривилегированныйРежим(Истина); + Если ДанныеДляИзмененияМультиязычныхРеквизитов() <> Неопределено Тогда + Возврат Истина; + КонецЕсли; + Если ЗначениеЗаполнено(Константы.ОсновнойЯзык.Получить()) Тогда Возврат Ложь; КонецЕсли; @@ -457,6 +500,10 @@ Возврат МультиязычностьПовтИсп.СведенияОбЯзыках(); КонецФункции +Функция ОбъектСодержитТЧПредставления(СсылкаИлиПолноеИмяМетаданных) Экспорт + Возврат МультиязычностьПовтИсп.ОбъектСодержитТЧПредставления(СсылкаИлиПолноеИмяМетаданных); +КонецФункции + Функция ИмяРеквизитаБезСуффиксаЯзык(Знач ИмяРеквизита) Экспорт Если ЭтоЛокализуемыйРеквизит(ИмяРеквизита) Тогда @@ -473,21 +520,7 @@ Функция МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Экспорт - ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); - Если СтрНачинаетсяС(ПолноеИмя, "Справочник") - Или СтрНачинаетсяС(ПолноеИмя, "Документ") - Или СтрНачинаетсяС(ПолноеИмя, "ПланВидовХарактеристик") - Или СтрНачинаетсяС(ПолноеИмя, "Задача") - Или СтрНачинаетсяС(ПолноеИмя, "БизнесПроцесс") - Или СтрНачинаетсяС(ПолноеИмя, "Обработка") - Или СтрНачинаетсяС(ПолноеИмя, "ПланВидовРасчета") - Или СтрНачинаетсяС(ПолноеИмя, "Отчет") - Или СтрНачинаетсяС(ПолноеИмя, "ПланСчетов") - Или СтрНачинаетсяС(ПолноеИмя, "ПланОбмена") Тогда - Возврат ОбъектМетаданных.ТабличныеЧасти.Найти("Представления") = Неопределено; - КонецЕсли; - - Возврат Истина; + Возврат МультиязычностьПовтИсп.ЕстьМультиязычныеРеквизитыВШапкеОбъекта(ОбъектМетаданных.ПолноеИмя()); КонецФункции @@ -495,15 +528,13 @@ ТипОбъекта = ТипЗнч(ОбъектИлиСсылка); - Если ТипОбъекта = Тип("Строка") Тогда - МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ОбъектИлиСсылка); - ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипОбъекта) Тогда - МетаданныеОбъекта = ОбъектИлиСсылка.Метаданные(); + Если ТипОбъекта = Тип("Строка") Или ОбщегоНазначения.ЭтоСсылка(ТипОбъекта) Тогда + Объект = ОбъектИлиСсылка; Иначе - МетаданныеОбъекта = ОбъектИлиСсылка; + Объект = ОбъектИлиСсылка.ПолноеИмя(); КонецЕсли; - Возврат НаименованияЛокализуемыхРеквизитовОбъекта(МетаданныеОбъекта); + Возврат МультиязычностьПовтИсп.МультиязычныеРеквизитыОбъекта(Объект); КонецФункции @@ -527,7 +558,8 @@ Результат.ПроблемныхОбъектов = Результат.ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать элемент: %1 по причине: %2'"), + НСтр("ru = 'Не удалось обработать элемент %1 по причине: + |%2'"), СсылкиНаОбъекты.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -671,71 +703,109 @@ Возврат; КонецЕсли; + ОбъектыКОбработке = Новый Массив(); + РазделительЗапросов = Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС; + СведенияОбЯзыках = МультиязычностьПовтИсп.СведенияОбЯзыках(); - Если ПустаяСтрока(СведенияОбЯзыках.Язык1) И ПустаяСтрока(СведенияОбЯзыках.Язык2) Тогда - Возврат; - КонецЕсли; + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) И ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда - ОбъектыСПредопределеннымиЭлементами = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнением(); - - ШаблонаЗапроса = "ВЫБРАТЬ - | ДанныеОбъекта.Ссылка - |ИЗ - | &Таблица КАК ДанныеОбъекта - |ГДЕ - | &УсловиеОтбора"; - - НаборЗапросов = Новый Массив; - - Для каждого ОбъектМетаданныхСЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл + ОбъектыСПредопределеннымиЭлементами = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнением(); - ЛокализуемыеРеквизитыОбъекта = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданныхСЭлементами); - Отборы = Новый Массив; + ШаблонаЗапроса = "ВЫБРАТЬ + | ДанныеОбъекта.Ссылка + |ИЗ + | &Таблица КАК ДанныеОбъекта + |ГДЕ + | &УсловиеОтбора"; - Для каждого РеквизитОбъекта Из ЛокализуемыеРеквизитыОбъекта Цикл + НаборЗапросов = Новый Массив; + + Для каждого ОбъектМетаданныхСЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл - Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) И ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда - ШаблонОтбора = "ВЫРАЗИТЬ(&Реквизит КАК СТРОКА(1)) <> """" - | И (ВЫРАЗИТЬ(&Язык1 КАК СТРОКА(1)) = """" ИЛИ ВЫРАЗИТЬ(&Язык2 КАК СТРОКА(1)) = """")"; + ЛокализуемыеРеквизитыОбъекта = НаименованияЛокализуемыхРеквизитовОбъектаВШапке(ОбъектМетаданныхСЭлементами); + Отборы = Новый Массив; + + Для каждого РеквизитОбъекта Из ЛокализуемыеРеквизитыОбъекта Цикл - ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1", РеквизитОбъекта.Ключ + "Язык1"); - ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык2", РеквизитОбъекта.Ключ + "Язык2"); - - Иначе - ШаблонОтбора = "ВЫРАЗИТЬ(&Реквизит КАК СТРОКА(1)) <> """" - | И ВЫРАЗИТЬ(&Язык1Или2 КАК СТРОКА(1)) = """""; - - Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда - ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1Или2", РеквизитОбъекта.Ключ + "Язык2"); - Иначе - ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1Или2", РеквизитОбъекта.Ключ + "Язык1"); + Если Не РеквизитОбъекта.Значение Тогда + Продолжить; КонецЕсли; - КонецЕсли; + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) И ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда + ШаблонОтбора = "ВЫРАЗИТЬ(&Реквизит КАК СТРОКА(1)) <> """" + | И (ВЫРАЗИТЬ(&Язык1 КАК СТРОКА(1)) = """" ИЛИ ВЫРАЗИТЬ(&Язык2 КАК СТРОКА(1)) = """")"; + + ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1", РеквизитОбъекта.Ключ + "Язык1"); + ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык2", РеквизитОбъекта.Ключ + "Язык2"); + + Иначе + ШаблонОтбора = "ВЫРАЗИТЬ(&Реквизит КАК СТРОКА(1)) <> """" + | И ВЫРАЗИТЬ(&Язык1Или2 КАК СТРОКА(1)) = """""; + + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда + ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1Или2", РеквизитОбъекта.Ключ + "Язык2"); + Иначе + ШаблонОтбора = СтрЗаменить(ШаблонОтбора, "&Язык1Или2", РеквизитОбъекта.Ключ + "Язык1"); + КонецЕсли; + + КонецЕсли; + + ТекстОтбора = СтрЗаменить(ШаблонОтбора, "&Реквизит", РеквизитОбъекта.Ключ); + Отборы.Добавить(ТекстОтбора); + + КонецЦикла; - ТекстОтбора = СтрЗаменить(ШаблонОтбора, "&Реквизит", РеквизитОбъекта.Ключ); - Отборы.Добавить(ТекстОтбора); + Если Отборы.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ТекстЗапросаПредварительный = СтрЗаменить(ШаблонаЗапроса, "&Таблица", ОбъектМетаданныхСЭлементами.ПолноеИмя()); + ТекстЗапросаПредварительный = СтрЗаменить(ТекстЗапросаПредварительный, "&УсловиеОтбора", СтрСоединить(Отборы, " ИЛИ ")); + НаборЗапросов.Добавить(ТекстЗапросаПредварительный); КонецЦикла; - Если Отборы.Количество() = 0 Тогда - Продолжить; + Если НаборЗапросов.Количество() > 0 Тогда + + Запрос = Новый Запрос; + Запрос.Текст = СтрСоединить(НаборЗапросов, РазделительЗапросов); + РезультатыЗапроса = Запрос.Выполнить().Выгрузить(); + ОбъектыКОбработке = РезультатыЗапроса.ВыгрузитьКолонку("Ссылка"); + КонецЕсли; - ТекстЗапросаПредварительный = СтрЗаменить(ШаблонаЗапроса, "&Таблица", ОбъектМетаданныхСЭлементами.ПолноеИмя()); - ТекстЗапросаПредварительный = СтрЗаменить(ТекстЗапросаПредварительный, "&УсловиеОтбора", СтрСоединить(Отборы, " ИЛИ ")); - НаборЗапросов.Добавить(ТекстЗапросаПредварительный); - - КонецЦикла; - - Если НаборЗапросов.Количество() = 0 Тогда - Возврат; КонецЕсли; - Запрос = Новый Запрос; - Запрос.Текст = СтрСоединить(НаборЗапросов, Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС); - РезультатыЗапроса = Запрос.Выполнить().Выгрузить(); - ОбъектыКОбработке = РезультатыЗапроса.ВыгрузитьКолонку("Ссылка"); + // Отдельная порция объектов для регистрации с табличной частью Представления + ОбъектыСТЧПредставления = ОбъектыСТЧПредставления(); + + Если ОбъектыСТЧПредставления.Количество() > 0 Тогда + + ШаблонЗапроса = "ВЫБРАТЬ + | СправочникСТЧПредставления.Ссылка + |ИЗ + | #Таблица КАК СправочникСТЧПредставления"; + + НаборЗапросов = Новый Массив; + + Для Каждого ИмяОбъектаМетаданных Из ОбъектыСТЧПредставления Цикл + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаМетаданных); + ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "#Таблица", ОбъектМетаданных.ПолноеИмя()); + НаборЗапросов.Добавить(ТекстЗапроса); + + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = СтрСоединить(НаборЗапросов, РазделительЗапросов); + + РезультатыЗапроса = Запрос.Выполнить().Выгрузить(); + + ОбъектыСТабличнойЧастьюПредставлениеКОбработке = РезультатыЗапроса.ВыгрузитьКолонку("Ссылка"); + + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОбъектыКОбработке, ОбъектыСТабличнойЧастьюПредставлениеКОбработке); + + КонецЕсли; Если ОбъектыКОбработке.Количество() > 0 Тогда ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ОбъектыКОбработке); @@ -748,6 +818,39 @@ ОбъектыДляОбработкиОтсутствуют = Истина; ИтогоОбработано = 0; + ОбъектовОбработано = 0; + ПроблемныхОбъектов = 0; + + ОбъектыСТЧПредставления = ОбъектыСТЧПредставления(); + Для Каждого ИмяОбъектСТЧПредставления Из ОбъектыСТЧПредставления Цикл + + Выборка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ИмяОбъектСТЧПредставления); + + ПараметрыЗаполнения = Неопределено; + Если Выборка.Количество() > 0 Тогда + ПараметрыЗаполнения = ОбновлениеИнформационнойБазыСлужебный.НаборПараметровДляЗаполненияОбъекта(Метаданные.НайтиПоПолномуИмени(ИмяОбъектСТЧПредставления)); + КонецЕсли; + + Пока Выборка.Следующий() Цикл + ЗаполнитьИПеренестиСтрокиИзТЧПредставленияВРеквизиты(Выборка.Ссылка, ПараметрыЗаполнения, ОбъектовОбработано, ПроблемныхОбъектов); + КонецЦикла; + + КонецЦикла; + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре %1 не удалось обработать некоторые объекты (пропущены): %2'"), + "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию", + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + ИначеЕсли ОбъектовОбработано > 0 Тогда + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура %1 обработала очередную порцию объектов: %2'"), + "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию", + ОбъектовОбработано)); + КонецЕсли; + ОбъектыСПредопределеннымиЭлементами = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнением(); Для каждого ОбъектСПредопределеннымиЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл @@ -954,53 +1057,46 @@ КонецПроцедуры -Процедура ПриПолученииПараметровЗаполненияОбъекта(ОбъектМетаданных, ПараметрыЗаполнения) Экспорт - - ПараметрыЗаполнения.Вставить("МультиязычныеСтрокиВРеквизитах", МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных)); - ПараметрыЗаполнения.Вставить("ЛокализуемыеРеквизитыОбъекта", МультиязычныеРеквизитыОбъекта(ОбъектМетаданных)); - -КонецПроцедуры - Процедура НачальноеЗаполнениеПредопределенныхДанныхЛокализуемыеРеквизиты(ЗаполняемыйЭлемент, ПоддерживаетсяИерархия, СтрокаТаблицы, ПараметрыЗаполнения) Экспорт - Языки = ПараметрыЗаполнения.Языки; - СведенияОбЯзыках = ПараметрыЗаполнения.СведенияОбЯзыках; + СведенияОбЯзыках = СведенияОбЯзыках(); + ЛокализуемыеРеквизитыОбъекта = ПараметрыЗаполнения.ЛокализуемыеРеквизитыОбъекта; МультиязычныеСтрокиВРеквизитах = ПараметрыЗаполнения.МультиязычныеСтрокиВРеквизитах; Если ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда Если МультиязычныеСтрокиВРеквизитах Тогда - Если ЗначениеЗаполнено(СведенияОбЯзыках.ОсновнойЯзык) Тогда - Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл - ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.ОсновнойЯзык]; - КонецЦикла; - КонецЕсли; - - Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) Тогда - Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл - ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык1"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.Язык1]; - КонецЦикла; - КонецЕсли; - - Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда - Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл - ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык2"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.Язык2]; - КонецЦикла; - КонецЕсли; - - ИначеЕсли НЕ (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда - - Для каждого КодЯзыка Из Языки Цикл - ПредставленияОбъекта = ЗаполняемыйЭлемент.Представления; // ТаблицаЗначений - НовоеПредставление = ПредставленияОбъекта.Добавить(); - НовоеПредставление.КодЯзыка = КодЯзыка; - Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл - Значение = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка]; - НовоеПредставление[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]); - КонецЦикла; + Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл + + ЗначениеОсновнойЯзык = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.ОсновнойЯзык]; + Если ПустаяСтрока(ЗначениеОсновнойЯзык) Тогда + ЗначениеОсновнойЯзык = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]; + КонецЕсли; + ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ] = ЗначениеОсновнойЯзык; + + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) Тогда + ЗначениеЯзык1 = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.Язык1]; + КонецЕсли; + Если ПустаяСтрока(ЗначениеЯзык1) Тогда + ЗначениеЯзык1 = ЗначениеОсновнойЯзык; + КонецЕсли; + + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда + ЗначениеЯзык2 = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + СведенияОбЯзыках.Язык2]; + КонецЕсли; + Если ПустаяСтрока(ЗначениеЯзык2) Тогда + ЗначениеЯзык2 = ЗначениеОсновнойЯзык; + КонецЕсли; + + ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык1"] = ЗначениеЯзык1; + ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык2"] = ЗначениеЯзык2; + КонецЦикла; - + КонецЕсли; + + Если ПараметрыЗаполнения.ОбъектСодержитТЧПредставления И НЕ (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда + ОбновлениеИнформационнойБазыСлужебный.НачальноеЗаполнениеТЧПредставления(ЗаполняемыйЭлемент, СтрокаТаблицы, ПараметрыЗаполнения); КонецЕсли; КонецЕсли; @@ -1059,17 +1155,23 @@ Обработчик = Обработчики.Добавить(); Обработчик.Процедура = "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию"; - Обработчик.Версия = "3.1.3.270"; + Обработчик.Версия = "3.1.6.16"; Обработчик.РежимВыполнения = "Отложенно"; Обработчик.Идентификатор = Новый УникальныйИдентификатор("68d400bb-e5bb-49da-a567-ebf7458b29f8"); Обработчик.ПроцедураЗаполненияДанныхОбновления = "МультиязычностьСервер.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию"; Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; - Обработчик.Комментарий = НСтр("ru = 'Заполнение пустых значений мультиязычных реквизитов значением основного языка.'"); + Обработчик.Комментарий = НСтр("ru = 'Заполнение значений мультиязычных реквизитов значением основного языка.'"); - ОбъектыСНачальнымЗаполнениемСтрокой = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнениемСтрокой(); - Обработчик.ЧитаемыеОбъекты = ОбъектыСНачальнымЗаполнениемСтрокой; - Обработчик.ИзменяемыеОбъекты = ОбъектыСНачальнымЗаполнениемСтрокой; - Обработчик.БлокируемыеОбъекты = ОбъектыСНачальнымЗаполнениемСтрокой; + ОбъектыДляОбработки = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнениемСтрокой(); + + ОбъектыСтрокой = СтрСоединить(ОбъектыСТЧПредставления(), ","); + Если ЗначениеЗаполнено(ОбъектыСтрокой) Тогда + ОбъектыДляОбработки = ОбъектыДляОбработки + "," + ОбъектыСтрокой; + КонецЕсли; + + Обработчик.ЧитаемыеОбъекты = ОбъектыДляОбработки; + Обработчик.ИзменяемыеОбъекты = ОбъектыДляОбработки; + Обработчик.БлокируемыеОбъекты = ОбъектыДляОбработки; КонецПроцедуры @@ -1083,45 +1185,83 @@ // Значения - Структура - где ключ это имя реквизита, а значение содержит строку помещаемую в реквизит. // КодЯзыка - Строка - код языка реквизита. Например, "ru". // -Процедура УстановитьЗначенияРеквизитов(Объект, Значения, КодЯзыка = Неопределено) Экспорт +Процедура УстановитьЗначенияРеквизитов(Объект, Значения, Знач КодЯзыка = Неопределено) Экспорт - Если КодЯзыка = Неопределено Тогда + Если Не ЗначениеЗаполнено(КодЯзыка) Тогда КодЯзыка = КодОсновногоЯзыка(); КонецЕсли; - Для каждого ЗначениеРеквизита Из Значения Цикл - СтрокаБезПробелов = СтрЗаменить(ЗначениеРеквизита.Значение, " ", ""); + КодыЯзыков = Новый Массив; + КодыЯзыков.Добавить(КодЯзыка); + + ДоступныеЯзыки = СтандартныеПодсистемыСервер.ЯзыкиКонфигурации(); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + ДополнительныеЯзыки = МодульУправлениеПечатьюМультиязычность.ДополнительныеЯзыкиПечатныхФорм(); + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ДоступныеЯзыки, ДополнительныеЯзыки); + КонецЕсли; + + ОбъектМетаданных = Объект.Метаданные(); + МультиязычныеСтрокиВРеквизитах = МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных); + МультиязычныеРеквизиты = МультиязычныеРеквизитыОбъекта(ОбъектМетаданных); + + Для Каждого ЗначениеРеквизита Из Значения Цикл + ИмяРеквизита = ЗначениеРеквизита.Ключ; + ЗначенияРеквизита = Новый Соответствие(); + СтрокаБезПробелов = СтрЗаменить(ЗначениеРеквизита.Значение, " ", ""); Если ОбщегоНазначения.СтрокаВВидеНСтр(СтрокаБезПробелов) Тогда - - Для каждого Язык Из Метаданные.Языки Цикл - - СуффиксЯзыка = ""; - Если КодОсновногоЯзыка() <> Язык.КодЯзыка Тогда - СуффиксЯзыка = СуффиксЯзыка(Язык.КодЯзыка); - Если ПустаяСтрока(СуффиксЯзыка) Тогда - Продолжить; - КонецЕсли; + Для Каждого Язык Из ДоступныеЯзыки Цикл + Если СтрНайти(СтрокаБезПробелов, Язык +"=") > 0 Тогда + ЗначенияРеквизита[Язык] = НСтр(ЗначениеРеквизита.Значение, Язык); КонецЕсли; - Если СтрНайти(СтрокаБезПробелов, Язык.КодЯзыка +"=") > 0 Тогда - Объект[ЗначениеРеквизита.Ключ + СуффиксЯзыка] = НСтр(ЗначениеРеквизита.Значение, Язык.КодЯзыка); - КонецЕсли; - КонецЦикла; - Иначе - СуффиксЯзыка = ""; - Если ЗначениеЗаполнено(КодЯзыка) Тогда - Если КодОсновногоЯзыка() <> КодЯзыка Тогда - СуффиксЯзыка = СуффиксЯзыка(КодЯзыка); - Если ПустаяСтрока(СуффиксЯзыка) Тогда - Продолжить; - КонецЕсли; - КонецЕсли; - КонецЕсли; - Объект[ЗначениеРеквизита.Ключ + СуффиксЯзыка] = ЗначениеРеквизита.Значение; + ЗначенияРеквизита[КодЯзыка] = ЗначениеРеквизита.Значение; КонецЕсли; + Для Каждого Элемент Из ЗначенияРеквизита Цикл + Язык = Элемент.Ключ; + Значение = Элемент.Значение; + + Если МультиязычныеРеквизиты[ИмяРеквизита] = Истина Тогда + Если МультиязычныеСтрокиВРеквизитах Тогда + СуффиксЯзыка = ""; + Если КодОсновногоЯзыка() <> Язык Тогда + СуффиксЯзыка = СуффиксЯзыка(Язык); + Если ПустаяСтрока(СуффиксЯзыка) Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + Объект[ИмяРеквизита + СуффиксЯзыка] = Значение; + Иначе + Если Язык = ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Объект[ИмяРеквизита] = Значение; + Продолжить; + КонецЕсли; + + НайденнаяСтрока = Неопределено; + Для Каждого СтрокаТаблицы Из Объект.Представления Цикл + Если СтрокаТаблицы.КодЯзыка = Язык Тогда + НайденнаяСтрока = СтрокаТаблицы; + Прервать; + КонецЕсли; + КонецЦикла; + + Если НайденнаяСтрока = Неопределено Тогда + НайденнаяСтрока = Объект.Представления.Добавить(); + НайденнаяСтрока.КодЯзыка = Язык; + КонецЕсли; + + НайденнаяСтрока[ИмяРеквизита] = Значение; + КонецЕсли; + Иначе // Реквизиту не являющемся мультиязычном устанавливается значение только на основном языке. + Если КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Объект[ИмяРеквизита] = ЗначенияРеквизита[КодЯзыка]; + КонецЕсли; + КонецЕсли; + + КонецЦикла; КонецЦикла; КонецПроцедуры @@ -1141,6 +1281,40 @@ КонецПроцедуры +Функция КодПервогоДополнительногоЯзыкаИнформационнойБазы() Экспорт + + Если Не ИспользуетсяПервыйДополнительныйЯзык() Тогда + Возврат ""; + КонецЕсли; + + КодЯзыка = Константы.ДополнительныйЯзык1.Получить(); + Для Каждого ЯзыкиИзМетаданных Из Метаданные.Языки Цикл + Если СтрСравнить(ЯзыкиИзМетаданных.КодЯзыка, КодЯзыка) = 0 Тогда + Возврат КодЯзыка; + КонецЕсли; + КонецЦикла; + + Возврат ""; + +КонецФункции + +Функция КодВторогоДополнительногоЯзыкаИнформационнойБазы() Экспорт + + Если Не ИспользуетсяВторойДополнительныйЯзык() Тогда + Возврат ""; + КонецЕсли; + + КодЯзыка = Константы.ДополнительныйЯзык2.Получить(); + Для Каждого ЯзыкиИзМетаданных Из Метаданные.Языки Цикл + Если СтрСравнить(ЯзыкиИзМетаданных.КодЯзыка, КодЯзыка) = 0 Тогда + Возврат КодЯзыка; + КонецЕсли; + КонецЦикла; + + Возврат ""; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -1162,10 +1336,10 @@ Функция ОбъектМетаданных(Объект) Экспорт Если ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура") Тогда - Если Объект.Свойство("ИсходныйКлючЗаписи") Тогда - ТипОбъекта = ТипЗнч(Объект.ИсходныйКлючЗаписи); - Иначе + Если Не Объект.Свойство("ИсходныйКлючЗаписи") Тогда ТипОбъекта = ТипЗнч(Объект.Ссылка); + Иначе + ТипОбъекта = ТипЗнч(Объект.ИсходныйКлючЗаписи); КонецЕсли; Иначе ТипОбъекта = ТипЗнч(Объект); @@ -1246,40 +1420,6 @@ КонецФункции -Функция КодПервогоДополнительногоЯзыкаИнформационнойБазы() Экспорт - - Если Не ИспользуетсяПервыйДополнительныйЯзык() Тогда - Возврат ""; - КонецЕсли; - - КодЯзыка = Константы.ДополнительныйЯзык1.Получить(); - Для Каждого ЯзыкиИзМетаданных Из Метаданные.Языки Цикл - Если СтрСравнить(ЯзыкиИзМетаданных.КодЯзыка, КодЯзыка) = 0 Тогда - Возврат КодЯзыка; - КонецЕсли; - КонецЦикла; - - Возврат ""; - -КонецФункции - -Функция КодВторогоДополнительногоЯзыкаИнформационнойБазы() Экспорт - - Если Не ИспользуетсяВторойДополнительныйЯзык() Тогда - Возврат ""; - КонецЕсли; - - КодЯзыка = Константы.ДополнительныйЯзык2.Получить(); - Для Каждого ЯзыкиИзМетаданных Из Метаданные.Языки Цикл - Если СтрСравнить(ЯзыкиИзМетаданных.КодЯзыка, КодЯзыка) = 0 Тогда - Возврат КодЯзыка; - КонецЕсли; - КонецЦикла; - - Возврат ""; - -КонецФункции - Функция ЛокализуемыеРеквизитыОбъектаДляТекущегоЯзыка(ОбъектМетаданных, Язык = Неопределено) СписокРеквизитов = Новый Соответствие; @@ -1327,11 +1467,11 @@ КонецФункции -Функция НаименованияЛокализуемыхРеквизитовОбъекта(ОбъектМетаданных, Префикс = "") +Функция НаименованияЛокализуемыхРеквизитовОбъекта(ОбъектМетаданных, Префикс = "") Экспорт СписокРеквизитовОбъекта = Новый Соответствие; Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда - + ДлинаСуффиксаЯзыка = ДлинаСуффиксаЯзыка(); Запрос = Новый Запрос; @@ -1349,7 +1489,8 @@ СписокРеквизитовОбъекта.Вставить(Префикс + Лев(Колонка.Имя, СтрДлина(Колонка.Имя) - ДлинаСуффиксаЯзыка), Истина); КонецЕсли; КонецЦикла; - Иначе + + ИначеЕсли ОбъектСодержитТЧПредставления(ОбъектМетаданных.ПолноеИмя()) Тогда РеквизитыТабличнойЧастиПредставления = ОбъектМетаданных.ТабличныеЧасти.Представления.Реквизиты; // КоллекцияОбъектовМетаданных из ОбъектМетаданныхРеквизит - Для каждого Реквизит Из РеквизитыТабличнойЧастиПредставления Цикл @@ -1440,9 +1581,54 @@ КонецФункции -Процедура ПерезаполнитьМультиязычныеСтрокиВОбъектах(Параметры, Адрес) Экспорт - ОбновлениеИнформационнойБазыСлужебный.НачальноеЗаполнениеПредопределенныхДанных(Истина, Параметры); -КонецПроцедуры +Функция ИменаОбъектовСМультиязычнымиРеквизитами() Экспорт + + МультиязычныеОбъекты = Новый Соответствие; + + Для каждого Элемент Из Метаданные.ФункциональныеОпции["ИспользоватьДополнительныйЯзык1"].Состав Цикл + + Реквизит = Элемент.Объект; + ИмяРеквизита = Лев(Реквизит.Имя, СтрДлина(Реквизит.Имя) - СтрДлина(СуффиксПервогоЯзыка())); + + Если Метаданные.ОбщиеРеквизиты.Содержит(Реквизит) Тогда + АвтоИспользование = (Реквизит.АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать); + Для каждого ЭлементСостава Из Реквизит.Состав Цикл + + Если ЭлементСостава.Использование = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать + ИЛИ (АвтоИспользование И ЭлементСостава.Использование = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Авто) Тогда + + Если МультиязычныеОбъекты[ЭлементСостава.Метаданные.ПолноеИмя()] = Неопределено Тогда + СписокРеквизитов = Новый Массив; + СписокРеквизитов.Добавить(ИмяРеквизита); + МультиязычныеОбъекты.Вставить(ЭлементСостава.Метаданные.ПолноеИмя(), СписокРеквизитов); + Иначе + СписокРеквизитов = МультиязычныеОбъекты[ЭлементСостава.Метаданные.ПолноеИмя()]; // Массив + СписокРеквизитов.Добавить(ИмяРеквизита); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + Иначе + ОбъектМетаданных = Реквизит.Родитель(); + Если ОбъектМетаданных <> Неопределено Тогда + + Если МультиязычныеОбъекты[ОбъектМетаданных.ПолноеИмя()] = Неопределено Тогда + СписокРеквизитов = Новый Массив; + СписокРеквизитов.Добавить(ИмяРеквизита); + МультиязычныеОбъекты.Вставить(ОбъектМетаданных.ПолноеИмя(), СписокРеквизитов); + Иначе + СписокРеквизитов = МультиязычныеОбъекты[ОбъектМетаданных.ПолноеИмя()]; // Массив + СписокРеквизитов.Добавить(ИмяРеквизита); + КонецЕсли; + + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Возврат МультиязычныеОбъекты; + +КонецФункции Процедура ОчиститьМультиязычныеРеквизиты(Объект, ОбъектМетаданные) @@ -1524,7 +1710,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось заполнить мультиязычные реквизиты объекта %1 по причине: + НСтр("ru = 'Не удалось заполнить мультиязычные реквизиты объекта %1 по причине: |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -1536,15 +1722,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые объекты (пропущены): %1'"), + НСтр("ru = 'Не удалось заполнить мультиязычные реквизиты в некоторых объектах (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, ОбъектМетаданных,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию объектов: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Заполнены мультиязычные реквизиты в очередной порции объектов: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры @@ -1557,4 +1743,849 @@ Возврат СтрЗаканчиваетсяНа(ИмяРеквизита, "Язык1") Или СтрЗаканчиваетсяНа(ИмяРеквизита, "Язык2"); КонецФункции +// Возвращаемое значение: +// Массив из Строка +// +Функция ОбъектыСТЧПредставления() + + ОбъектыСТЧПредставления = Новый Массив; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ВидыКонтактнойИнформации"].ПолноеИмя()); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ВариантыОтчетов"].ПолноеИмя()); + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ПредопределенныеВариантыОтчетов"].ПолноеИмя()); + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ПредопределенныеВариантыОтчетовРасширений"].ПолноеИмя()); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ЗначенияСвойствОбъектов"].ПолноеИмя()); + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["ЗначенияСвойствОбъектовИерархия"].ПолноеИмя()); + ОбъектыСТЧПредставления.Добавить(Метаданные.Справочники["НаборыДополнительныхРеквизитовИСведений"].ПолноеИмя()); + ОбъектыСТЧПредставления.Добавить(Метаданные.ПланыВидовХарактеристик["ДополнительныеРеквизитыИСведения"].ПолноеИмя()); + КонецЕсли; + + Возврат ОбъектыСТЧПредставления; + +КонецФункции + +Процедура ЗаполнитьИПеренестиСтрокиИзТЧПредставленияВРеквизиты(Ссылка, ПараметрыЗаполнения, ОбъектовОбработано, ПроблемныхОбъектов) + + ОбъектМетаданных = Ссылка.Метаданные(); // ОбъектМетаданных + + ТабличнаяЧастьОбъекта = ОбъектМетаданных.ТабличныеЧасти.Найти("Представления"); // ОбъектМетаданныхТабличнаяЧасть + Если ТабличнаяЧастьОбъекта = Неопределено Тогда + Возврат; + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ОбъектМетаданных.ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); + + Языки = СтандартныеПодсистемыСервер.ЯзыкиКонфигурации(); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + ЗаблокироватьДанныеДляРедактирования(Ссылка); + + Объект = Ссылка.ПолучитьОбъект(); + + Для Каждого КодЯзыка Из Языки Цикл + + Если СтрСравнить(ОбщегоНазначения.КодОсновногоЯзыка(), КодЯзыка) = 0 Тогда + Продолжить; + КонецЕсли; + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + НайденныеСтроки = Объект.Представления.НайтиСтроки(Отбор); + + Если НайденныеСтроки.Количество() > 0 Тогда + СтрокаТаблицы = НайденныеСтроки[0]; + Иначе + СтрокаТаблицы = Объект.Представления.Добавить(); + СтрокаТаблицы.КодЯзыка = КодЯзыка; + КонецЕсли; + + Для каждого КолонкаРеквизита Из ТабличнаяЧастьОбъекта.Реквизиты Цикл + + ИмяРеквизита = КолонкаРеквизита.Имя; + Если ИмяРеквизита = "КодЯзыка" Тогда + Продолжить; + КонецЕсли; + + ЗначениеНаОсновномЯзыке = Объект[ИмяРеквизита]; + + Если ПустаяСтрока(СтрокаТаблицы[ИмяРеквизита]) Тогда + + ДанныеЗаполнения = НачальноеЗначениеРеквизита(ПараметрыЗаполнения, ИмяРеквизита, Объект, КодЯзыка); + Если ПустаяСтрока(ДанныеЗаполнения) Тогда + ДанныеЗаполнения = ЗначениеНаОсновномЯзыке; + КонецЕсли; + + Если ЗначениеЗаполнено(ДанныеЗаполнения) Тогда + + Если СтрСравнить(ОбщегоНазначения.КодОсновногоЯзыка(), КодЯзыка) = 0 Тогда + Объект[ИмяРеквизита] = ДанныеЗаполнения; + ИначеЕсли СтрСравнить(КодПервогоДополнительногоЯзыкаИнформационнойБазы(), КодЯзыка) = 0 Тогда + Объект[ИмяРеквизита + СуффиксПервогоЯзыка()] = ДанныеЗаполнения; + ИначеЕсли СтрСравнить(КодВторогоДополнительногоЯзыкаИнформационнойБазы(), КодЯзыка) = 0 Тогда + Объект[ИмяРеквизита + СуффиксВторогоЯзыка()] = ДанныеЗаполнения; + КонецЕсли; + + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Объект); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать объект: %1 по причине: %2'"), + Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Ссылка.Метаданные(), Ссылка, ТекстСообщения); + КонецПопытки; + +КонецПроцедуры + +#Область ИзменениеЯзыка + +// Данные для изменения мультиязычных реквизитов. +// +// Возвращаемое значение: +// Структура: +// * НастройкиИзмененияЯзыков - см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков +// * ОсновнойЯзыкИзменен - Булево +// * ПервыйДополнительныйЯзыкИзменен - Булево +// * ВторойДополнительныйЯзыкИзменен - Булево +// * Объекты - Соответствие из КлючИЗначение: +// ** Ключ - Строка +// ** Значение - Структура: +// *** СсылкаНаПоследнийОбработанныйОбъекты - Произвольный +// *** ЯзыковыеПоля - Массив +// +Функция ДанныеДляИзмененияМультиязычныхРеквизитов() Экспорт + + Если Метаданные.Языки.Количество() = 1 + Или (ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()) Тогда + Возврат Неопределено; + КонецЕсли; + + ДанныеДляИзмененияМультиязычныхРеквизитов = Константы.ДанныеДляИзмененияМультиязычныхРеквизитов.Получить().Получить(); + Если ДанныеДляИзмененияМультиязычныхРеквизитов = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + НастройкиИзмененияЯзыков = ДанныеДляИзмененияМультиязычныхРеквизитов.НастройкиИзмененияЯзыков; + ДанныеДляИзмененияМультиязычныхРеквизитов.Вставить("ОсновнойЯзыкИзменен", + СтрСравнить(НастройкиИзмененияЯзыков.ОсновнойЯзыкНовоеЗначение, НастройкиИзмененияЯзыков.ОсновнойЯзыкСтароеЗначение) <> 0); + ДанныеДляИзмененияМультиязычныхРеквизитов.Вставить("ПервыйДополнительныйЯзыкИзменен", + СтрСравнить(НастройкиИзмененияЯзыков.ДополнительныйЯзык1НовоеЗначение, НастройкиИзмененияЯзыков.ДополнительныйЯзык1СтароеЗначение) <> 0); + ДанныеДляИзмененияМультиязычныхРеквизитов.Вставить("ВторойДополнительныйЯзыкИзменен", + СтрСравнить(НастройкиИзмененияЯзыков.ДополнительныйЯзык2НовоеЗначение, НастройкиИзмененияЯзыков.ДополнительныйЯзык2СтароеЗначение) <> 0); + + Возврат ДанныеДляИзмененияМультиязычныхРеквизитов; + +КонецФункции + +Процедура ИзменитьЯзыкВМультиязычныхРеквизитахКонфигурации(Параметры, Адрес) Экспорт + + ДанныеДляИзмененияМультиязычныхРеквизитов = ДанныеДляИзмененияМультиязычныхРеквизитов(); + Если ДанныеДляИзмененияМультиязычныхРеквизитов = Неопределено Тогда + Возврат; + КонецЕсли; + + ОбъектыСНачальнымЗаполнением = ОбновлениеИнформационнойБазыСлужебный.ОбъектыСНачальнымЗаполнением(); + + Для Каждого ДанныеОбъекта Из ДанныеДляИзмененияМультиязычныхРеквизитов.Объекты Цикл + ПолноеИмя = ДанныеОбъекта.Ключ; + МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + ПараметрыЗаполнения = Новый Структура; + + Если ОбъектыСНачальнымЗаполнением.Найти(МетаданныеОбъекта) <> Неопределено Тогда + + ПараметрыЗаполнения = ОбновлениеИнформационнойБазыСлужебный.НаборПараметровДляЗаполненияОбъекта(МетаданныеОбъекта); + + КонецЕсли; + + Если СтрНачинаетсяС(ПолноеИмя, "Справочник") + Или СтрНачинаетсяС(ПолноеИмя, "ПланВидовХарактеристик") Тогда + + ОбработатьСсылочныеОбъекты(ПолноеИмя, ДанныеОбъекта.Значение, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения); + + ИначеЕсли СтрНачинаетсяС(ПолноеИмя, "РегистрСведений") Тогда + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + + Если ОбъектМетаданных.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда + ИзменитьЯзыкВПодчиненныхРегистрахСведений(ОбъектМетаданных, ДанныеОбъекта.Значение, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения); + Иначе + Периодический = ОбъектМетаданных.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический; + ИзменитьЯзыкВНезависимыхРегистрахСведений(ОбъектМетаданных, ДанныеОбъекта.Значение, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения, Периодический); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + Настройки = МодульВариантыОтчетов.ПараметрыОбновленияНастроек(); + Настройки.Отложенное = Истина; + МодульВариантыОтчетов.Обновить(Настройки); + МодульВариантыОтчетов.СброситьЗаполнениеПредставлений("ОбщиеДанныеКонфигурации"); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработатьСсылочныеОбъекты(ПолноеИмя, ДанныеОбъекта, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения) + + ПоследняяСсылка = ?(ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты <> Неопределено, + ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты, + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя).ПустаяСсылка()); + + ШаблонПолейЗапроса = "ДанныеОбъекта.%1%2 КАК %1%2"; // @Qurey-part1 + + ЗначенияЯзыковыхКонстант = ДанныеДляИзмененияМультиязычныхРеквизитов.НастройкиИзмененияЯзыков; + МультиязычныеРеквизиты = ДанныеОбъекта.ЯзыковыеПоля; + + ЕстьПорцияДанных = Истина; + + ОбъектСодержитТЧПредставления = Ложь; + Если ПараметрыЗаполнения.Количество() > 0 Тогда + ОбъектСодержитТЧПредставления = ПараметрыЗаполнения.ОбъектСодержитТЧПредставления; + КонецЕсли; + + Пока ЕстьПорцияДанных Цикл + + ПоляЗапроса = Новый Массив; + + Для Каждого МультиязычныйРеквизит Из МультиязычныеРеквизиты Цикл + + ПоляЗапроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонПолейЗапроса, МультиязычныйРеквизит, "")); + ПоляЗапроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонПолейЗапроса, МультиязычныйРеквизит, СуффиксПервогоЯзыка())); + ПоляЗапроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонПолейЗапроса, МультиязычныйРеквизит, СуффиксВторогоЯзыка())); + + КонецЦикла; + + Запрос = Новый Запрос; + ТекстЗапроса = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | ДанныеОбъекта.Ссылка КАК Ссылка, + | &ПолеОбъекта + |ИЗ + | #ДанныеОбъекта КАК ДанныеОбъекта + |ГДЕ + | ДанныеОбъекта.Ссылка > &Ссылка + | + |УПОРЯДОЧИТЬ ПО + | Ссылка"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолеОбъекта", СтрСоединить(ПоляЗапроса, "," + Символы.ПС)); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ДанныеОбъекта", ПолноеИмя); + + Запрос.Текст = ТекстЗапроса; + Запрос.УстановитьПараметр("Ссылка", ПоследняяСсылка); + + РезультатЗапроса = Запрос.Выполнить(); + + Если Не РезультатЗапроса.Пустой() Тогда + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + + НачатьТранзакцию(); + Попытка + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмя); + ЭлементБлокировки.УстановитьЗначение("Ссылка", ВыборкаДетальныеЗаписи.Ссылка); + Блокировка.Заблокировать(); + + ИзменяемыйОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); + Если ИзменяемыйОбъект = Неопределено Тогда // объект может быть уже удален в других сеансах + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + + ЗаблокироватьДанныеДляРедактирования(ВыборкаДетальныеЗаписи.Ссылка); + + НоваяСтрокаТЧПредставления = Неопределено; + + Для Каждого МультиязычныйРеквизит Из МультиязычныеРеквизиты Цикл + + // Сохраняем старые значения + ЗначенияРеквизита = Новый Соответствие; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение] = ИзменяемыйОбъект[МультиязычныйРеквизит]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1СтароеЗначение] = ИзменяемыйОбъект[МультиязычныйРеквизит + СуффиксПервогоЯзыка()]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2СтароеЗначение] = ИзменяемыйОбъект[МультиязычныйРеквизит + СуффиксВторогоЯзыка()]; + + ЗначениеПоУмолчанию = ИзменяемыйОбъект[МультиязычныйРеквизит]; + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ОсновнойЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение); + + Если ОбъектСодержитТЧПредставления Тогда + Отбор = Новый Структура("КодЯзыка", ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение); + НайденныеСтроки = ИзменяемыйОбъект.Представления.НайтиСтроки(Отбор); + Для каждого НайденнаяСтрока Из НайденныеСтроки Цикл + ИзменяемыйОбъект.Представления.Удалить(НайденнаяСтрока); + КонецЦикла; + + Если ЗначениеЗаполнено(ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение) Тогда + + Если ПараметрыЗаполнения.ПоддерживаетсяИерархия + И ИзменяемыйОбъект.ЭтоГруппа + И НЕ ПараметрыЗаполнения.ТЧПредставленияИспользуетсяДляГрупп Тогда + Продолжить; + КонецЕсли; + + Отбор = Новый Структура("КодЯзыка", ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение); + НайденныеСтроки = ИзменяемыйОбъект.Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + СтрокаДанных = НайденныеСтроки[0]; + Иначе + СтрокаДанных= ИзменяемыйОбъект.Представления.Добавить(); + СтрокаДанных.КодЯзыка= ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение; + КонецЕсли; + СтрокаДанных[МультиязычныйРеквизит] = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение]; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ПервыйДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение); + + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ВторойДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение); + КонецЕсли; + + Если НоваяСтрокаТЧПредставления <> Неопределено Тогда + НоваяСтрокаТЧПредставления[МультиязычныйРеквизит] = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение]; + КонецЕсли; + + КонецЦикла; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ИзменяемыйОбъект); + + ПоследняяСсылка = ВыборкаДетальныеЗаписи.Ссылка; + ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = ПоследняяСсылка; + + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЦикла; + + Иначе + ЕстьПорцияДанных = Ложь; + + ДанныеДляИзмененияМультиязычныхРеквизитов.Объекты.Удалить(ПолноеИмя); + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + + Возврат; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, НовоеЗначение, ЗначениеПоУмолчанию, КодЯзыка = "") + + ЗначениеЗаполнения = ""; + ЕстьПараметрыЗаполнения = ПараметрыЗаполнения.Количество() <> 0; + ОбъектСодержитТЧПредставления = ?(ЕстьПараметрыЗаполнения, + ПараметрыЗаполнения.ОбъектСодержитТЧПредставления,Ложь); + + Если НовоеЗначение <> Неопределено Тогда + ЗначениеЗаполнения = НовоеЗначение; + ИначеЕсли ОбъектСодержитТЧПредставления Тогда + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + НайтиСтроки = ИзменяемыйОбъект.Представления.НайтиСтроки(Отбор); + Если НайтиСтроки.Количество() > 0 Тогда + ЗначениеЗаполнения = НайтиСтроки[0][МультиязычныйРеквизит]; + КонецЕсли; + + КонецЕсли; + + Если ПустаяСтрока(ЗначениеЗаполнения) И ЕстьПараметрыЗаполнения Тогда + ЗначениеЗаполнения = НачальноеЗначениеРеквизита(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, КодЯзыка); + КонецЕсли; + + ЗначениеЗаполнения = ?(ЗначениеЗаполнено(ЗначениеЗаполнения), + ЗначениеЗаполнения, ЗначениеПоУмолчанию); + + Если ПустаяСтрока(ЗначениеЗаполнения) Тогда + Возврат; + КонецЕсли; + + СуффиксЯзыка = СуффиксЯзыка(КодЯзыка); + Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда + ИзменяемыйОбъект[МультиязычныйРеквизит + СуффиксЯзыка] = ЗначениеЗаполнения; + ИначеЕсли СтрСравнить(ОбщегоНазначения.КодОсновногоЯзыка(), КодЯзыка) = 0 Тогда + ИзменяемыйОбъект[МультиязычныйРеквизит] = ЗначениеЗаполнения; + КонецЕсли; + + Если ПустаяСтрока(КодЯзыка) + Или Не ОбъектСодержитТЧПредставления + Или (ПараметрыЗаполнения.ПоддерживаетсяИерархия И ИзменяемыйОбъект.ЭтоГруппа) Тогда + Возврат; + КонецЕсли; + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + НайтиСтроки = ИзменяемыйОбъект.Представления.НайтиСтроки(Отбор); + Если НайтиСтроки.Количество() > 0 Тогда + + СтрокаТекущегоЯзыка = НайтиСтроки[0]; + + Иначе + + СтрокаТекущегоЯзыка = ИзменяемыйОбъект.Представления.Добавить(); + СтрокаТекущегоЯзыка.КодЯзыка = КодЯзыка; + + КонецЕсли; + + СтрокаТекущегоЯзыка[МультиязычныйРеквизит] = ЗначениеЗаполнения; + +КонецПроцедуры + +Функция НачальноеЗначениеРеквизита(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемыйОбъект, КодЯзыка) + + ЗначениеЗаполнения = ""; + + Если ПараметрыЗаполнения.ПредопределенныеДанные.Количество() > 0 Тогда + + ДанныеЗаполнения = Неопределено; + + Настройки = ПараметрыЗаполнения.НастройкиПредопределенныхЭлементов; + + ИмяКлючевогоРеквизита = Настройки.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита; + ЗначениеКлючевогоРеквизита = ИзменяемыйОбъект[ИмяКлючевогоРеквизита]; + Если ЗначениеЗаполнено(ЗначениеКлючевогоРеквизита) Тогда + ДанныеЗаполнения = ПараметрыЗаполнения.ПредопределенныеДанные.Найти(ЗначениеКлючевогоРеквизита, ИмяКлючевогоРеквизита); + + ИначеЕсли Настройки.ЕстьКолонкаИмяПредопределенныхДанных Тогда + ЗначениеКлючевогоРеквизита = ИзменяемыйОбъект["ИмяПредопределенныхДанных"]; + ДанныеЗаполнения = ПараметрыЗаполнения.ПредопределенныеДанные.Найти(ЗначениеКлючевогоРеквизита, "ИмяПредопределенныхДанных"); + КонецЕсли; + + Если ТипЗнч(ДанныеЗаполнения) = Тип("СтрокаТаблицыЗначений") Тогда + + ЗначениеЗаполнения = ?(ЗначениеЗаполнено(КодЯзыка), ДанныеЗаполнения[МультиязычныйРеквизит + "_" + КодЯзыка], + ДанныеЗаполнения[МультиязычныйРеквизит]); + + КонецЕсли; + + КонецЕсли; + + Возврат ЗначениеЗаполнения; + +КонецФункции + +Процедура ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов) + + УстановитьПривилегированныйРежим(Истина); + Если ДанныеДляИзмененияМультиязычныхРеквизитов.Объекты.Количество() = 0 Тогда + УпакованноеЗначение = Неопределено; + Иначе + УпакованноеЗначение = Новый ХранилищеЗначения(ДанныеДляИзмененияМультиязычныхРеквизитов); + КонецЕсли; + + Константы.ДанныеДляИзмененияМультиязычныхРеквизитов.Установить(УпакованноеЗначение); + +КонецПроцедуры + +Процедура ИзменитьЯзыкВПодчиненныхРегистрахСведений(ОбъектМетаданных, ДанныеОбъекта, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения, Периодический = Ложь) + + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + + МультиязычныеРеквизиты = ДанныеОбъекта.ЯзыковыеПоля; + ЗначенияЯзыковыхКонстант = ДанныеДляИзмененияМультиязычныхРеквизитов.НастройкиИзмененияЯзыков; + + ИмяТаблицы = СтрЗаменить(ПолноеИмя, ".", ""); + + ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000 + | ИмяТаблицы.Регистратор КАК РегистраторРеквизитСсылка + |ИЗ + | &ОбъектМетаданных КАК ИмяТаблицы + |ГДЕ + | ИмяТаблицы.Регистратор > &Регистратор + |УПОРЯДОЧИТЬ ПО + | ИмяТаблицы.Регистратор"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОбъектМетаданных", ПолноеИмя); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяТаблицы", ИмяТаблицы); + + Запрос = Новый Запрос(ТекстЗапроса); + Если ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Неопределено Тогда + Запрос.УстановитьПараметр("Регистратор", Неопределено); + Иначе + Отбор = ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты; + Запрос.УстановитьПараметр("Регистратор", Отбор["Регистратор"]); + КонецЕсли; + + Результат = Запрос.Выполнить().Выгрузить(); + + Пока Результат.Количество() > 0 Цикл + + Для Каждого СтрокаРезультата Из Результат Цикл + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмя + "." + "НаборЗаписей"); + + ТекущийНаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); + ТекущийНаборЗаписей.Отбор.Регистратор.Установить(СтрокаРезультата.РегистраторРеквизитСсылка); + + ЭлементБлокировки.УстановитьЗначение("Регистратор", СтрокаРезультата.РегистраторРеквизитСсылка); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + ТекущийНаборЗаписей.Прочитать(); + + Если ТекущийНаборЗаписей.Количество() = 0 Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + + Для Каждого ИзменяемаяЗапись Из ТекущийНаборЗаписей Цикл + + Для Каждого МультиязычныйРеквизит Из МультиязычныеРеквизиты Цикл + + // Сохраняем старые значения + ЗначенияРеквизита = Новый Соответствие; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1СтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит + СуффиксПервогоЯзыка()]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2СтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит + СуффиксВторогоЯзыка()]; + + ЗначениеПоУмолчанию = Строка(ИзменяемаяЗапись[МультиязычныйРеквизит]); + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ОсновнойЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение); + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ПервыйДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение); + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ВторойДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ТекущийНаборЗаписей); + + Отбор = Новый Структура(); + Отбор.Вставить("Регистратор", СтрокаРезультата.РегистраторРеквизитСсылка); + + ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Отбор; + + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЦикла; + + Запрос.УстановитьПараметр("Регистратор", СтрокаРезультата.РегистраторРеквизитСсылка); + + Результат = Запрос.Выполнить().Выгрузить(); + + КонецЦикла; + + ДанныеДляИзмененияМультиязычныхРеквизитов.Объекты.Удалить(ПолноеИмя); + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + +КонецПроцедуры + +Процедура ИзменитьЯзыкВНезависимыхРегистрахСведений(ОбъектМетаданных, ДанныеОбъекта, ДанныеДляИзмененияМультиязычныхРеквизитов, ПараметрыЗаполнения, Периодический = Ложь) + + ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); + МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + + МультиязычныеРеквизиты = ДанныеОбъекта.ЯзыковыеПоля; + ЗначенияЯзыковыхКонстант = ДанныеДляИзмененияМультиязычныхРеквизитов.НастройкиИзмененияЯзыков; + + ИмяТаблицы = СтрЗаменить(ПолноеИмя, ".", ""); + ШаблонПолейВыборки = "ИмяТаблицы.[ИмяПоля] КАК [ИмяПоля]ИзмерениеСсылка"; + + Измерения = ОбъектМетаданных.Измерения;// Массив из ОбъектМетаданныхИзмерение + + НаборПолейВыборки = Новый Массив; + НаборУсловий = Новый Массив; + НаборПолейУпорядочивания = Новый Массив; + + Если Периодический Тогда + НаборПолейУпорядочивания.Добавить(ИмяТаблицы + "." + "Период"); + НаборУсловий.Добавить("ИмяТаблицы.Период > &Период"); + НаборПолейВыборки.Добавить("ИмяТаблицы.Период КАК Период"); + КонецЕсли; + + Для Каждого Измерение Из Измерения Цикл + НаборДополнительныхУсловий = Новый Массив; + + Если НаборУсловий.Количество() > 0 Тогда + НаборДополнительныхУсловий.Добавить(СтрЗаменить(НаборУсловий.Получить(НаборУсловий.ВГраница()), ">", "=")); + КонецЕсли; + НаборДополнительныхУсловий.Добавить(ИмяТаблицы + "." + Измерение.Имя + " > &" + Измерение.Имя); + + НаборУсловий.Добавить(СтрСоединить(НаборДополнительныхУсловий, " И ")); + + НаборПолейУпорядочивания.Добавить(ИмяТаблицы + "." + Измерение.Имя); + НаборПолейВыборки.Добавить(СтрЗаменить(ШаблонПолейВыборки, "[ИмяПоля]", Измерение.Имя)); + + КонецЦикла; + + УсловиеПоИзмерениям = СтрСоединить(НаборУсловий, " ИЛИ "); + ПоляУпорядочивания = СтрСоединить(НаборПолейУпорядочивания, ", " + Символы.ПС); + ПоляВыборки = СтрСоединить(НаборПолейВыборки, ", " + Символы.ПС); + + ТекстЗапроса = + "ВЫБРАТЬ ПЕРВЫЕ 1000 + | &ПоляВыборки КАК ПоляВыборки + |ИЗ + | &ОбъектМетаданных КАК ИмяТаблицы + |ГДЕ + | &Условие + | + |УПОРЯДОЧИТЬ ПО + | &ПоляУпорядочивания"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие", УсловиеПоИзмерениям); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляУпорядочивания", ПоляУпорядочивания); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляВыборки КАК ПоляВыборки", ПоляВыборки); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОбъектМетаданных", ПолноеИмя); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяТаблицы", ИмяТаблицы); + + Запрос = Новый Запрос(ТекстЗапроса); + Если ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Неопределено Тогда + + Если Периодический Тогда + Запрос.УстановитьПараметр("Период", Дата("00010101")); + + КонецЕсли; + Для Каждого Измерение Из Измерения Цикл + Запрос.УстановитьПараметр(Измерение.Имя, Неопределено); + КонецЦикла; + + Иначе + Отбор = ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты; + + Для Каждого Измерение Из Измерения Цикл + Запрос.УстановитьПараметр(Измерение.Имя, Отбор[Измерение.Имя]); + КонецЦикла; + + Если Периодический Тогда + Запрос.УстановитьПараметр("Период", Отбор["Период"]); + КонецЕсли; + + КонецЕсли; + + Результат = Запрос.Выполнить().Выгрузить(); + + Пока Результат.Количество() > 0 Цикл + + Для Каждого СтрокаРезультата Из Результат Цикл + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(ПолноеИмя); + + + ТекущийНаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); + ОтборТекущегоНабора = ТекущийНаборЗаписей.Отбор; + + Если Периодический Тогда + ЭлементБлокировки.УстановитьЗначение("Период", СтрокаРезультата["Период"]); + ОтборТекущегоНабора.Период.Установить(СтрокаРезультата["Период"]); + КонецЕсли; + + Для Каждого Измерение Из Измерения Цикл + + ИмяИзмерения = Измерение.Имя; + ЗначениеИзмерения = СтрокаРезультата[ИмяИзмерения + "ИзмерениеСсылка"]; + Если Не ЗначениеЗаполнено(ЗначениеИзмерения) Тогда + Продолжить; + КонецЕсли; + + ОтборПоИзмерению = ОтборТекущегоНабора[ИмяИзмерения];// ЭлементОтбора + ОтборПоИзмерению.Установить(ЗначениеИзмерения); + + ЭлементБлокировки.УстановитьЗначение(ИмяИзмерения, ЗначениеИзмерения); + + КонецЦикла; + + ОписаниеКлючаЗаписи = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаРезультата); + КлючЗаписи = МенеджерРегистра.СоздатьКлючЗаписи(ОписаниеКлючаЗаписи); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + ТекущийНаборЗаписей.Прочитать(); + ЗаблокироватьДанныеДляРедактирования(КлючЗаписи); + + Если ТекущийНаборЗаписей.Количество() = 0 Тогда + ОтменитьТранзакцию(); + Продолжить; + КонецЕсли; + + ИзменяемаяЗапись = ТекущийНаборЗаписей.Получить(0); + + Для Каждого МультиязычныйРеквизит Из МультиязычныеРеквизиты Цикл + + // Сохраняем старые значения + ЗначенияРеквизита = Новый Соответствие; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкСтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1СтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит + СуффиксПервогоЯзыка()]; + ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2СтароеЗначение] = ИзменяемаяЗапись[МультиязычныйРеквизит + СуффиксВторогоЯзыка()]; + + ЗначениеПоУмолчанию = ИзменяемаяЗапись[МультиязычныйРеквизит]; + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ОсновнойЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ОсновнойЯзыкНовоеЗначение); + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ПервыйДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык1НовоеЗначение); + КонецЕсли; + + Если ДанныеДляИзмененияМультиязычныхРеквизитов.ВторойДополнительныйЯзыкИзменен Тогда + НовоеЗначение = ЗначенияРеквизита[ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение]; + ЗаполнитьРеквизитИТЧПредставления(ПараметрыЗаполнения, МультиязычныйРеквизит, ИзменяемаяЗапись, НовоеЗначение, ЗначениеПоУмолчанию, + ЗначенияЯзыковыхКонстант.ДополнительныйЯзык2НовоеЗначение); + КонецЕсли; + + КонецЦикла; + + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ТекущийНаборЗаписей); + + Отбор = Новый Структура(); + Для Каждого Измерение Из Измерения Цикл + Отбор.Вставить(Измерение.Имя, СтрокаРезультата[Измерение.Имя + "ИзмерениеСсылка"]); + КонецЦикла; + + Если Периодический Тогда + Отбор.Вставить("Период", СтрокаРезультата["Период"]); + КонецЕсли; + + ДанныеОбъекта.СсылкаНаПоследнийОбработанныйОбъекты = Отбор; + + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + + ЗафиксироватьТранзакцию(); + + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЦикла; + + Если Периодический Тогда + Запрос.УстановитьПараметр("Период", СтрокаРезультата["Период"]); + КонецЕсли; + + Для Каждого Измерение Из Измерения Цикл + Запрос.УстановитьПараметр(Измерение.Имя, СтрокаРезультата[Измерение.Имя + "ИзмерениеСсылка"]); + КонецЦикла; + + Результат = Запрос.Выполнить().Выгрузить(); + + КонецЦикла; + + ДанныеДляИзмененияМультиязычныхРеквизитов.Объекты.Удалить(ПолноеИмя); + ЗаписатьДанныеДляИзмененияМультиязычныхРеквизитов(ДанныеДляИзмененияМультиязычныхРеквизитов); + +КонецПроцедуры + +Процедура СкопироватьМультиязычныеЗначенияВРеквизитыШапки(ТекущийОбъект, ИменаЛокализуемыхРеквизитов, КодЯзыка) + + СуффиксЯзыка = СуффиксЯзыка(КодЯзыка); + Если ПустаяСтрока(СуффиксЯзыка) Тогда + Возврат; + КонецЕсли; + + Представления = ТекущийОбъект.Представления; // ТабличнаяЧасть + + Отбор = Новый Структура("КодЯзыка", КодЯзыка); + + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НайденаСтрока = НайденныеСтроки[0]; + Для Каждого Реквизит Из ИменаЛокализуемыхРеквизитов Цикл + Если ЗначениеЗаполнено(НайденаСтрока[Реквизит.Ключ]) Тогда + ТекущийОбъект[Реквизит.Ключ + СуффиксЯзыка] = НайденаСтрока[Реквизит.Ключ]; + Иначе + ТекущийОбъект[Реквизит.Ключ + СуффиксЯзыка] = ТекущийОбъект[Реквизит.Ключ]; + КонецЕсли; + КонецЦикла; + Иначе + Для Каждого Реквизит Из ИменаЛокализуемыхРеквизитов Цикл + ТекущийОбъект[Реквизит.Ключ + СуффиксЯзыка] = ТекущийОбъект[Реквизит.Ключ]; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + + +Функция СуффиксПервогоЯзыка() Экспорт + Возврат "Язык1"; +КонецФункции + +Функция СуффиксВторогоЯзыка() Экспорт + Возврат "Язык2"; +КонецФункции + +#КонецОбласти + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/НапоминанияПользователя/Module.bsl b/SSL/src/CommonModules/НапоминанияПользователя/Module.bsl index 2dcd03b49..324a8d2a7 100644 --- a/SSL/src/CommonModules/НапоминанияПользователя/Module.bsl +++ b/SSL/src/CommonModules/НапоминанияПользователя/Module.bsl @@ -91,4 +91,16 @@ КонецПроцедуры +// Проверяет возможность использования напоминаний пользователя. +// +// Возвращаемое значение: +// Булево - используются напоминания пользователя +// +Функция ИспользуютсяНапоминанияПользователя() Экспорт + + Возврат ПолучитьФункциональнуюОпцию("ИспользоватьНапоминанияПользователя") + И ПравоДоступа("Изменение", Метаданные.РегистрыСведений.НапоминанияПользователя); + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl b/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl index 57ea66363..301cde9df 100644 --- a/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl +++ b/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl @@ -45,6 +45,42 @@ КонецПроцедуры +// Изменить текст напоминаний по предмету. +// +// Параметры: +// Предмет - ЛюбаяСсылка - предмет напоминания; +// Идентификатор - Строка - уточняет предмет напоминания, например, "ДеньРождения". +// НовыйТекст - Строка - текст напоминания; +// +Процедура ИзменитьТекстНапоминанийПоПредмету(Предмет, Идентификатор, НовыйТекст) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | НапоминанияПользователя.Пользователь, + | НапоминанияПользователя.ВремяСобытия, + | НапоминанияПользователя.Источник + |ИЗ + | РегистрСведений.НапоминанияПользователя КАК НапоминанияПользователя + |ГДЕ + | НапоминанияПользователя.Идентификатор = &Идентификатор + | И НапоминанияПользователя.Источник = &Источник"; + + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Запрос.УстановитьПараметр("Источник", Предмет); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + МенеджерЗаписи = РегистрыСведений.НапоминанияПользователя.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ВыборкаДетальныеЗаписи); + МенеджерЗаписи.Прочитать(); + МенеджерЗаписи.Описание = НовыйТекст; + МенеджерЗаписи.Записать(); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/SSL/src/CommonModules/ОбменДаннымиXDTOСервер/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиXDTOСервер/Module.bsl index 62626fd50..5d6d90363 100644 --- a/SSL/src/CommonModules/ОбменДаннымиXDTOСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиXDTOСервер/Module.bsl @@ -965,10 +965,13 @@ ЕстьРасширенияXDTO = Ложь; КонецЕсли; - + ЗначениеXDTO = ФабрикаXDTO.Создать(Свойство.Тип); + ТипТаблицы = Свойство.Тип.Свойства[0].Тип; + ИмяСвойстваСтроки = Свойство.Тип.Свойства[0].Имя; + СписокXDTO = ЗначениеXDTO[ИмяСвойстваСтроки]; // СписокXDTO Для Каждого ИсточникСтрока Из ЗначениеСвойства Цикл @@ -2677,7 +2680,7 @@ РасширенияВерсии = Новый Массив; Для Каждого Расширение Из НастройкиПланаОбмена.РасширенияФорматаОбмена Цикл - Если Расширение.Значение = Версия Тогда + Если Расширение.Значение = Версия.Ключ Тогда РасширенияВерсии.Добавить(Расширение.Ключ); КонецЕсли; КонецЦикла; @@ -3350,6 +3353,13 @@ КомпонентыОбмена.МенеджерОбмена.ЗаполнитьПравилаОбработкиДанных(КомпонентыОбмена.НаправлениеОбмена, ПравилаОбработкиДанных); + ЕстьРасширения = Ложь; + Если ТипЗнч(КомпонентыОбмена.РасширенияФормата) = Тип("Соответствие") Тогда + + ЕстьРасширения = (КомпонентыОбмена.РасширенияФормата.Количество() > 0); + + КонецЕсли; + КоличествоСтрок = ПравилаОбработкиДанных.Количество(); Для НомерИтерации = 1 По КоличествоСтрок Цикл @@ -3359,10 +3369,17 @@ Если КомпонентыОбмена.НаправлениеОбмена = "Получение" Тогда ТипXDTO = ФабрикаXDTO.Тип(XMLСхема, ПОД.ОбъектВыборкиФормат); + Если ТипXDTO = Неопределено ИЛИ ЕстьРасширения Тогда + + ТипXDTOПравилаОбработкиИзРасширенийПакетаXDTO(КомпонентыОбмена, ПОД, ТипXDTO); + + КонецЕсли; Если ТипXDTO = Неопределено Тогда + ПравилаОбработкиДанных.Удалить(ПОД); Продолжить; + КонецЕсли; КлючевыеСвойства = ТипXDTO.Свойства.Получить(КлассКлючевыеСвойства()); @@ -3538,27 +3555,27 @@ ЕстьРасширения = ПравилоКонвертации.Расширения.Количество() > 0; Если ЗначениеЗаполнено(ПравилоКонвертации.ОбъектФормата) Тогда + ПравилоКонвертации.ТипXDTO = ФабрикаXDTO.Тип(ПространствоИмен, ПравилоКонвертации.ОбъектФормата); + Если ПравилоКонвертации.ТипXDTO = Неопределено И ЕстьРасширения Тогда + + ТипXDTOПравилаКонвертацииИзРасширенийПакетаXDTO(ПравилоКонвертации); + + КонецЕсли; + Если ПравилоКонвертации.ТипXDTO = Неопределено Тогда + ПравилаКонвертации.Удалить(ПравилоКонвертации); Продолжить; + КонецЕсли; + КонецЕсли; Если ЭтоБазоваяСхема И ЕстьРасширения Тогда - РасширенияКУдалению = Новый Массив; - Для Каждого Расширение Из ПравилоКонвертации.Расширения Цикл - ТипXDTO = ФабрикаXDTO.Тип(Расширение.Ключ, ПравилоКонвертации.ОбъектФормата); - Если ТипXDTO = Неопределено Тогда - РасширенияКУдалению.Добавить(Расширение.Ключ); - Иначе - Расширение.Значение.ТипXDTO = ТипXDTO; - КонецЕсли; - КонецЦикла; - Для Каждого РасширениеКУдалению Из РасширенияКУдалению Цикл - ПравилоКонвертации.Расширения.Удалить(РасширениеКУдалению); - КонецЦикла; + УдалитьИзбыточныеРасширенияПравилаКонвертации(ПравилоКонвертации); + КонецЕсли; Если КомпонентыОбмена.НаправлениеОбмена = "Получение" Тогда @@ -3872,6 +3889,68 @@ КонецПроцедуры // АПК:299-вкл +Процедура ТипXDTOПравилаОбработкиИзРасширенийПакетаXDTO(КомпонентыОбмена, ПОД, ТипXDTO) + + Для каждого ОписаниеРасширения Из КомпонентыОбмена.РасширенияФормата Цикл + + ПространствоИменРасширения = ОписаниеРасширения.Ключ; + ТипXDTO = ФабрикаXDTO.Тип(ПространствоИменРасширения, ПОД.ОбъектВыборкиФормат); + Если ТипXDTO <> Неопределено Тогда + + // Установили пренадлежность к расширению схемы XDTO + Прервать; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ТипXDTOПравилаКонвертацииИзРасширенийПакетаXDTO(ПравилоКонвертации) + + Для каждого РасширениеФорматаИзПравилаКонвертации Из ПравилоКонвертации.Расширения Цикл + + ПространствоИменРасширения = РасширениеФорматаИзПравилаКонвертации.Ключ; + ПравилоКонвертации.ТипXDTO = ФабрикаXDTO.Тип(ПространствоИменРасширения, ПравилоКонвертации.ОбъектФормата); + Если ПравилоКонвертации.ТипXDTO <> Неопределено Тогда + + // Установили пренадлежность к расширению схемы XDTO + Прервать; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура УдалитьИзбыточныеРасширенияПравилаКонвертации(ПравилоКонвертации) + + РасширенияКУдалению = Новый Массив; + Для Каждого РасширениеПакетаXDTO Из ПравилоКонвертации.Расширения Цикл + + ПространствоИменРасширенияФормата = РасширениеПакетаXDTO.Ключ; + + ТипXDTO = ФабрикаXDTO.Тип(ПространствоИменРасширенияФормата, ПравилоКонвертации.ОбъектФормата); + Если ТипXDTO = Неопределено Тогда + + РасширенияКУдалению.Добавить(ПространствоИменРасширенияФормата); + + Иначе + + РасширениеПакетаXDTO.Значение.ТипXDTO = ТипXDTO; + + КонецЕсли; + + КонецЦикла; + + Для Каждого РасширениеКУдалению Из РасширенияКУдалению Цикл + + ПравилоКонвертации.Расширения.Удалить(РасширениеКУдалению); + + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область ОтправкаДанных @@ -4379,7 +4458,7 @@ КонецЦикла; Если НоваяТЧПриемника.Колонки.Количество() > 0 Тогда - + НоваяТЧПриемника.Колонки.Добавить("Расширения"); КонецЕсли; @@ -4907,6 +4986,13 @@ Функция ТипЗначенияСвойстваXDTO(Знач КомпонентыОбмена, Знач СвойствоXDTO, ЗначениеXDTO) Результат = ЗначениеXDTO.Тип(); + Если СвойствоXDTO.ОбъектВладелец = Неопределено Тогда + + // Владельца может не быть у полностью нового объекта, который добавляется расширением + // Например, работаем со справочником, который отсутствует в типовой конфигурации. + Возврат Результат; + + КонецЕсли; ПространствоИменСвойства = СвойствоXDTO.URIПространстваИмен; Если ЭтоБазоваяСхема(КомпонентыОбмена, ПространствоИменСвойства) Тогда @@ -4935,6 +5021,7 @@ КонецЕсли; + КонецЕсли; Возврат Результат; @@ -5913,13 +6000,17 @@ Для Каждого ПодчиненноеПолеИзРасширения Из ПолеИзРасширения.Тип.Свойства Цикл КолонкаТаблицыПоПолюИзРасширения(ТаблицаОбъекта, ПодчиненноеПолеИзРасширения.Имя); + + КонецЦикла; Иначе КолонкаТаблицыПоПолюИзРасширения(ТаблицаОбъекта, ПолеИзРасширения.Имя); + + КонецЕсли; КонецЦикла; @@ -7538,8 +7629,9 @@ Возврат ?(КомпонентыОбмена.ЭтоОбменЧерезПланОбмена И КомпонентыОбмена.ПропускатьОбъектыСОшибкамиПроверкиПоСхеме, УровеньЖурналаРегистрации.Предупреждение, УровеньЖурналаРегистрации.Ошибка); - ИначеЕсли ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных - Или ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных Тогда + ИначеЕсли ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения + ИЛИ ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных + ИЛИ ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных Тогда Возврат УровеньЖурналаРегистрации.Ошибка; ИначеЕсли ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты Или ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент Тогда diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl index 11c75782e..bdf1c5a27 100644 --- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl @@ -786,7 +786,9 @@ КонецЕсли; - ЗаписатьXML(Получатель.ДополнительныеСвойства.ВыгруженныеДанные, ЭлементДанных); + АвтономнаяРаботаСлужебный.ОткрытьЗаписьДанныхНачальногоОбраза(Получатель); + АвтономнаяРаботаСлужебный.ЗаписатьЭлементДанныхНачальногоОбраза(ЭлементДанных, СвойстваМетаданных, Получатель); + АвтономнаяРаботаСлужебный.ЗакрытьЗаписьДанныхНачальногоОбраза(Получатель); КонецЕсли; diff --git a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl index 380a55766..73ebd7ea9 100644 --- a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl @@ -27,8 +27,6 @@ // Элементами массива являются объекты метаданных планов обмена. // // Пример: -// ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменБезИспользованияПравилКонвертации); -// ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменСБиблиотекойСтандартныхПодсистем); // ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.РаспределеннаяИнформационнаяБаза); // Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт @@ -227,12 +225,10 @@ // общему модулю, в котором находятся обработчики выгрузки/загрузки для данной версии. // // Пример: -// ВерсииФормата.Вставить("1.2", <ИмяОбщегоМодуляСПравиламиКонвертации>); +// ВерсииФормата.Вставить("1.2", МенеджерОбменаЧерезУниверсальныйФормат); // Процедура ПриПолученииДоступныхВерсийФормата(ВерсииФормата) Экспорт - - - + КонецПроцедуры // Получает доступные для использования расширения универсального формата EnterpriseData. @@ -241,6 +237,8 @@ // РасширенияФормата - Соответствие из КлючИЗначение: // * Ключ - Строка - URI пространства имен схемы расширения формата. // * Значение - Строка - номер расширяемой версии формата. +// Пример: +// РасширенияФормата.Вставить("http://v8.1c.ru/edi/edi_stnd/_DemoEnterpriseDataExt/1.1", "1.8"); // Процедура ПриПолученииДоступныхРасширенийФормата(РасширенияФормата) Экспорт diff --git a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl index c3a6a6d90..63501f2f4 100644 --- a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl @@ -505,6 +505,38 @@ КонецФункции +// Определяет наличие менеджера регистрации у плана обмена. +// +// Параметры: +// ИмяПланаОбмена - Строка - имя плана обмена, как оно задано в конфигураторе. +// +// Возвращаемое значение: +// Булево - Истина - у плана обмена есть модуль регистрации, иначе Ложь. +// +Функция ПравилаРегистрацииВМенеджере(Знач ИмяПланаОбмена) Экспорт + + НастройкиПланаОбмена = ОбменДаннымиСервер.НастройкиПланаОбмена(ИмяПланаОбмена, "", "", Неопределено); + + Возврат НастройкиПланаОбмена.ПравилаРегистрацииВМенеджере; + +КонецФункции + +// Возвращает имя менеджера регистрации (имя общего модуля) для плана обмена +// +// Параметры: +// ИмяПланаОбмена - Строка - имя плана обмена, как оно задано в конфигураторе. +// +// Возвращаемое значение: +// Булево - Истина - у плана обмена есть модуль регистрации, иначе Ложь. +// +Функция ИмяМенеджераРегистрации(Знач ИмяПланаОбмена) Экспорт + + НастройкиПланаОбмена = ОбменДаннымиСервер.НастройкиПланаОбмена(ИмяПланаОбмена, "", "", Неопределено); + + Возврат НастройкиПланаОбмена.ИмяМенеджераРегистрации; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -1488,36 +1520,29 @@ // Функция КаталогВременногоХранилищаФайлов(БезопасныйРежим = Неопределено) Экспорт - // Если файловая база, то возвращается КаталогВременныхФайлов. - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() И НЕ ОбщегоНазначения.РежимОтладки() Тогда + Возврат СокрЛП(КаталогВременныхФайлов()); + КонецЕсли; - ОбщийТипПлатформы = "Windows"; - УстановитьПривилегированныйРежим(Истина); - Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда - - Результат = Константы.КаталогСообщенийОбменаДаннымиДляWindows.Получить(); - - ИначеЕсли ОбщегоНазначения.ЭтоLinuxСервер() Тогда - + ОбщийТипПлатформы = ""; + Если ОбщегоНазначения.ЭтоLinuxСервер() Тогда + Результат = Константы.КаталогСообщенийОбменаДаннымиДляLinux.Получить(); ОбщийТипПлатформы = "Linux"; Иначе Результат = Константы.КаталогСообщенийОбменаДаннымиДляWindows.Получить(); + ОбщийТипПлатформы = "Windows"; КонецЕсли; УстановитьПривилегированныйРежим(Ложь); - ПредставлениеКонстанты = ?(ОбщийТипПлатформы = "Linux", - Метаданные.Константы.КаталогСообщенийОбменаДаннымиДляLinux.Представление(), - Метаданные.Константы.КаталогСообщенийОбменаДаннымиДляWindows.Представление()); - Если ПустаяСтрока(Результат) Тогда Результат = СокрЛП(КаталогВременныхФайлов()); @@ -1530,10 +1555,15 @@ Каталог = Новый Файл(Результат); Если Не Каталог.Существует() Тогда + ПредставлениеКонстанты = ?(ОбщийТипПлатформы = "Linux", + Метаданные.Константы.КаталогСообщенийОбменаДаннымиДляLinux.Представление(), + Метаданные.Константы.КаталогСообщенийОбменаДаннымиДляWindows.Представление()); + ШаблонСообщения = НСтр("ru = 'Каталог временных файлов не существует. |Необходимо убедиться, что в настройках программы задано правильное значение параметра - |""%1"".'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, ПредставлениеКонстанты); + |""%1"".'", ОбщегоНазначения.КодОсновногоЯзыка()); + + ТекстСообщения = СтрШаблон(ШаблонСообщения, ПредставлениеКонстанты); ВызватьИсключение(ТекстСообщения); КонецЕсли; @@ -1544,4 +1574,28 @@ КонецФункции +// Инициализирует колонки таблицы правил регистрации по свойствам. +// +// Возвращаемое значение: +// ДеревоЗначений +// +Функция ИнициализацияТаблицыОтборПоСвойствамПланаОбмена() Экспорт + + Обработка = Обработки.ЗагрузкаПравилРегистрацииОбъектов; + Возврат Обработка.ИнициализацияТаблицыОтборПоСвойствамПланаОбмена(); + +КонецФункции + +// Инициализирует колонки таблицы правил регистрации по свойствам. +// +// Возвращаемое значение: +// ДеревоЗначений +// +Функция ИнициализацияТаблицыОтборПоСвойствамОбъекта() Экспорт + + Обработка = Обработки.ЗагрузкаПравилРегистрацииОбъектов; + Возврат Обработка.ИнициализацияТаблицыОтборПоСвойствамОбъекта(); + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl index 4be4e9a30..47f0eb01d 100644 --- a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl @@ -2950,7 +2950,9 @@ Параметры.Вставить("НазначениеПланаОбмена", НазначениеПланаОбмена); Параметры.Вставить("НаличиеПравилКонвертацииОбязательно", Истина); Параметры.Вставить("Алгоритмы", Алгоритмы); - + Параметры.Вставить("ПравилаРегистрацииВМенеджере", Ложь); + Параметры.Вставить("ИмяМенеджераРегистрации", ""); + Возврат Параметры; КонецФункции @@ -3905,6 +3907,33 @@ КонецЕсли; + ИначеЕсли ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + НомерОбластиДанных = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(); + + Если МодульРаботаВМоделиСервиса.СтатусОбластиДанных(НомерОбластиДанных) <> Перечисления["СтатусыОбластейДанных"]["Используется"] Тогда + + ТекстИсключения = НСтр("ru = 'Синхронизация невозможна, потому что область данных отмечена как не рабочая. + |Необходимо обратиться к администратору системы или в службу поддержки сервиса.'", ОбщегоНазначения.КодОсновногоЯзыка()); + + ОбщиеНастройкиУзлов = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.Выбрать(); + Пока ОбщиеНастройкиУзлов.Следующий() Цикл + + РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьАдминистративнуюОшибку(ОбщиеНастройкиУзлов.УзелИнформационнойБазы, ТекстИсключения); + + КонецЦикла; + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Ошибка, , , ТекстИсключения); + ВызватьИсключение ТекстИсключения; + + КонецЕсли; + + КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -4198,6 +4227,28 @@ КонецФункции +// Инициализирует колонки таблицы правил регистрации по свойствам. +// +// Возвращаемое значение: +// ДеревоЗначений +// +Функция ИнициализацияТаблицыОтборПоСвойствамПланаОбмена() Экспорт + + Возврат ОбменДаннымиПовтИсп.ИнициализацияТаблицыОтборПоСвойствамПланаОбмена(); + +КонецФункции + +// Инициализирует колонки таблицы правил регистрации по свойствам. +// +// Возвращаемое значение: +// ДеревоЗначений +// +Функция ИнициализацияТаблицыОтборПоСвойствамОбъекта() Экспорт + + Возврат ОбменДаннымиПовтИсп.ИнициализацияТаблицыОтборПоСвойствамОбъекта(); + +КонецФункции + #КонецОбласти #Область ОбработчикиСобытийПодсистемКонфигурации @@ -8469,30 +8520,55 @@ // Возвращаемое значение функции. ПравилаРегистрацииОбъектов = ИнициализацияТаблицыПравилРегистрацииОбъектов(); - ТекстЗапроса = " - |ВЫБРАТЬ - | ПравилаДляОбменаДанными.ПравилаЗачитанные КАК ПравилаЗачитанные - |ИЗ - | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными - |ГДЕ - | ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов) - | И ПравилаДляОбменаДанными.ПравилаЗагружены - |"; + ТекстЗапроса = + "ВЫБРАТЬ + | Правила.ПравилаЗачитанные КАК ПравилаЗачитанные, + | Правила.ИмяПланаОбмена КАК ИмяПланаОбмена, + | Правила.ИсточникПравил КАК ИсточникПравил, + | Правила.ИмяМенеджераРегистрации КАК ИмяМенеджераРегистрации + |ИЗ + | РегистрСведений.ПравилаДляОбменаДанными КАК Правила + |ГДЕ + | (Правила.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов) + | И Правила.ПравилаЗагружены + | ИЛИ Правила.ИсточникПравил В (&ИсточникиПравилМенеджеры))"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; + ИсточникиПравилМенеджеры = Новый Массив; + ИсточникиПравилМенеджеры.Добавить(Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой); + ИсточникиПравилМенеджеры.Добавить(Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский); + + Запрос.УстановитьПараметр("ИсточникиПравилМенеджеры", ИсточникиПравилМенеджеры); + Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - ПравилаЗачитанные = Выборка.ПравилаЗачитанные.Получить(); - Если ПравилаЗачитанные = Неопределено Тогда - Продолжить; + Если Выборка.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой + Или Выборка.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский Тогда + + Если Выборка.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой Тогда + ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Выборка.ИмяПланаОбмена); + Иначе + ИмяМенеджераРегистрации = Выборка.ИмяМенеджераРегистрации; + КонецЕсли; + + Менеджер = ОбщегоНазначения.ОбщийМодуль(ИмяМенеджераРегистрации); + Менеджер.ИнициализацияПравилРегистрации(ПравилаРегистрацииОбъектов, ИмяМенеджераРегистрации); + + Иначе + + ПравилаЗачитанные = Выборка.ПравилаЗачитанные.Получить(); + Если ПравилаЗачитанные = Неопределено Тогда + Продолжить; + КонецЕсли; + + ЗаполнитьЗначенияСвойствДляТаблицыЗначенийПРО(ПравилаРегистрацииОбъектов, ПравилаЗачитанные); + КонецЕсли; - ЗаполнитьЗначенияСвойствДляТаблицыЗначенийПРО(ПравилаРегистрацииОбъектов, ПравилаЗачитанные); - КонецЦикла; Возврат ПравилаРегистрацииОбъектов; @@ -8580,6 +8656,9 @@ // добавляем индекс Правила.Индексы.Добавить("ИмяПланаОбмена, ОбъектМетаданныхИмя"); + Колонки.Добавить("ОтборПоСвойствамПланаОбмена", Новый ОписаниеТипов("ДеревоЗначений")); + Колонки.Добавить("ИмяМенеджераРегистрации"); + Возврат Правила; КонецФункции @@ -10167,82 +10246,6 @@ Возврат Результат; КонецФункции -// Останавливает выполнение кода на заданное время. -// Метод продублирован из БТС, т.к. п/с может использоваться без указанной библиотеки. -// -// Параметры: -// Секунд - Число - время ожидания в секундах. -// -Процедура Пауза(Секунд) Экспорт - - ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); - ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); - - Если ФоновоеЗадание = Неопределено Тогда - - Параметры = Новый Массив; - Параметры.Добавить(Секунд); - ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.Пауза", Параметры); - - КонецЕсли; - - ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд); - -КонецПроцедуры - -Процедура ОжиданиеЗавершенияОперации(СтруктураНастроекОбмена, ПараметрыОбмена, Прокси, ДействиеПриОбменеВЭтойИБ = Неопределено) - - Если ПараметрыОбмена.ИнтервалОжиданияНаСервере = 0 Тогда - - Если ДействиеПриОбменеВЭтойИБ <> Неопределено Тогда - - // В этой ИБ "Загрузка", значит в корреспонденте "Выгрузка" - Если ДействиеПриОбменеВЭтойИБ = Перечисления.ДействияПриОбмене.ЗагрузкаДанных Тогда - - ДействиеВКорреспондентеСтрокой = НСтр("ru ='выгрузка'", ОбщегоНазначения.КодОсновногоЯзыка()); - - Иначе - - ДействиеВКорреспондентеСтрокой = НСтр("ru ='загрузка'", ОбщегоНазначения.КодОсновногоЯзыка()); - - КонецЕсли; - - ШаблонСообщения = НСтр("ru = 'Ожидание выполнения операции (%1 данных в базе-корреспонденте)...'", ОбщегоНазначения.КодОсновногоЯзыка()); - ЗаписьЖурналаРегистрацииОбменаДанными(СтрШаблон(ШаблонСообщения, ДействиеВКорреспондентеСтрокой), СтруктураНастроекОбмена); - - КонецЕсли; - - Возврат; - - КонецЕсли; - - Пока ПараметрыОбмена.ДлительнаяОперация Цикл // Замена рекурсии - - Пауза(ПараметрыОбмена.ИнтервалОжиданияНаСервере); - - СтрокаСообщенияОбОшибке = ""; - СостояниеОперации = Прокси.GetContinuousOperationStatus(ПараметрыОбмена.ИдентификаторОперации, СтрокаСообщенияОбОшибке); - - Если СостояниеОперации = "Active" Тогда - - ПараметрыОбмена.ИнтервалОжиданияНаСервере = Мин(ПараметрыОбмена.ИнтервалОжиданияНаСервере + 30, 180); - - ИначеЕсли СостояниеОперации = "Completed" Тогда - - ПараметрыОбмена.ИнтервалОжиданияНаСервере = 15; - ПараметрыОбмена.ДлительнаяОперация = Ложь; - ПараметрыОбмена.ИдентификаторОперации = Неопределено; - - Иначе - - ВызватьИсключение СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"), Символы.ПС, СтрокаСообщенияОбОшибке);; - - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - // Процедура удаляет неактуальные записи в регистре сведений. // Запись считается неактуальной, если план обмена, для которого была создана запись, // был переименован или удален. @@ -10552,7 +10555,7 @@ | ВЫБОР | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.НепроведенныйДокумент), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных)) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных) - | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта)) + | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта)) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных) | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК ДействиеПриОбмене, @@ -10568,7 +10571,7 @@ | ВЫБОР | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.НепроведенныйДокумент), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных)) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных) - | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта)) + | КОГДА РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта)) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных) | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ"; @@ -12307,6 +12310,37 @@ КонецПроцедуры +Процедура ЗагрузитьМенеджерРегистрацииОбменаДанными(Отказ, + Знач ИмяПланаОбмена, + Знач ВидПравил) + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("ИмяПланаОбмена", ИмяПланаОбмена); + СтруктураЗаписи.Вставить("ВидПравил", ВидПравил); + СтруктураЗаписи.Вставить("ИсточникПравил", Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой); + СтруктураЗаписи.Вставить("ИспользоватьФильтрВыборочнойРегистрацииОбъектов", Истина); + + ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(ИмяПланаОбмена); + СтруктураЗаписи.Вставить("ИмяМенеджераРегистрации", ИмяМенеджераРегистрации); + + Менеджер = ОбщегоНазначения.ОбщийМодуль(ИмяМенеджераРегистрации); + СтруктураЗаписи.Вставить("ИнформацияОПравилах", Менеджер.ИнформацияОПравилах()); + + // Получаем набор записей регистра. + НаборЗаписей = ОбменДаннымиСлужебный.СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, "ПравилаДляОбменаДанными"); + + // Добавляем только одну запись в новый набор записей. + НоваяЗапись = НаборЗаписей.Добавить(); + + // Заполняем значения свойств записи из структуры. + ЗаполнитьЗначенияСвойств(НоваяЗапись, СтруктураЗаписи); + + Если Не Отказ Тогда + НаборЗаписей.Записать(); + КонецЕсли; + +КонецПроцедуры + Процедура ВыполнитьОбновлениеВерсииТиповыхПравилДляОбменаДанными(ПравилаОбменаЗагруженныеИзФайла, ПравилаРегистрацииЗагруженныеИзФайла) Отказ = Ложь; @@ -12380,7 +12414,8 @@ КонецЕсли; - Если ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(ИмяПланаОбмена, "ПравилаРегистрации") Тогда + Если ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(ИмяПланаОбмена, "ПравилаРегистрации") + И Не ОбменДаннымиПовтИсп.ПравилаРегистрацииВМенеджере(ИмяПланаОбмена) Тогда Если ПравилаРегистрацииЗагруженныеИзФайла.Найти(ИмяПланаОбмена) = Неопределено Тогда @@ -12404,13 +12439,30 @@ КонецЕсли; - Иначе + ИначеЕсли Не ОбменДаннымиПовтИсп.ПравилаРегистрацииВМенеджере(ИмяПланаОбмена) Тогда СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( "СтандартныеПодсистемы.ОбменДанными.ПравилаРегистрации." + ИмяПланаОбмена, Ложь); КонецЕсли; + Если ОбменДаннымиПовтИсп.ПравилаРегистрацииВМенеджере(ИмяПланаОбмена) Тогда + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполняется обновление правил регистрации данных для плана обмена %1'"), ИмяПланаОбмена); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), + УровеньЖурналаРегистрации.Информация,,, ТекстСообщения); + + ЗагрузитьМенеджерРегистрацииОбменаДанными(Отказ, ИмяПланаОбмена, Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов); + + Если Не Отказ Тогда + ВыполненоОбновлениеПравил = Истина; + СтандартныеПодсистемыСервер.ОбновитьПараметрРаботыПрограммы( + "СтандартныеПодсистемы.ОбменДанными.ПравилаРегистрации." + ИмяПланаОбмена, Истина); + КонецЕсли; + + КонецЕсли; + КонецЦикла; Если Отказ Тогда @@ -13503,6 +13555,82 @@ КонецФункции +// Останавливает выполнение кода на заданное время. +// Метод продублирован из БТС, т.к. п/с может использоваться без указанной библиотеки. +// +// Параметры: +// Секунд - Число - время ожидания в секундах. +// +Процедура Пауза(Секунд) Экспорт + + ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); + ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); + + Если ФоновоеЗадание = Неопределено Тогда + + Параметры = Новый Массив; + Параметры.Добавить(Секунд); + ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.Пауза", Параметры); + + КонецЕсли; + + ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд); + +КонецПроцедуры + +Процедура ОжиданиеЗавершенияОперации(СтруктураНастроекОбмена, ПараметрыОбмена, Прокси, ДействиеПриОбменеВЭтойИБ = Неопределено) + + Если ПараметрыОбмена.ИнтервалОжиданияНаСервере = 0 Тогда + + Если ДействиеПриОбменеВЭтойИБ <> Неопределено Тогда + + // В этой ИБ "Загрузка", значит в корреспонденте "Выгрузка" + Если ДействиеПриОбменеВЭтойИБ = Перечисления.ДействияПриОбмене.ЗагрузкаДанных Тогда + + ДействиеВКорреспондентеСтрокой = НСтр("ru ='выгрузка'", ОбщегоНазначения.КодОсновногоЯзыка()); + + Иначе + + ДействиеВКорреспондентеСтрокой = НСтр("ru ='загрузка'", ОбщегоНазначения.КодОсновногоЯзыка()); + + КонецЕсли; + + ШаблонСообщения = НСтр("ru = 'Ожидание выполнения операции (%1 данных в базе-корреспонденте)...'", ОбщегоНазначения.КодОсновногоЯзыка()); + ЗаписьЖурналаРегистрацииОбменаДанными(СтрШаблон(ШаблонСообщения, ДействиеВКорреспондентеСтрокой), СтруктураНастроекОбмена); + + КонецЕсли; + + Возврат; + + КонецЕсли; + + Пока ПараметрыОбмена.ДлительнаяОперация Цикл // Замена рекурсии + + Пауза(ПараметрыОбмена.ИнтервалОжиданияНаСервере); + + СтрокаСообщенияОбОшибке = ""; + СостояниеОперации = Прокси.GetContinuousOperationStatus(ПараметрыОбмена.ИдентификаторОперации, СтрокаСообщенияОбОшибке); + + Если СостояниеОперации = "Active" Тогда + + ПараметрыОбмена.ИнтервалОжиданияНаСервере = Мин(ПараметрыОбмена.ИнтервалОжиданияНаСервере + 30, 180); + + ИначеЕсли СостояниеОперации = "Completed" Тогда + + ПараметрыОбмена.ИнтервалОжиданияНаСервере = 15; + ПараметрыОбмена.ДлительнаяОперация = Ложь; + ПараметрыОбмена.ИдентификаторОперации = Неопределено; + + Иначе + + ВызватьИсключение СтрШаблон(НСтр("ru = 'Ошибка в базе-корреспонденте:%1 %2'"), Символы.ПС, СтрокаСообщенияОбОшибке);; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область РаботаСКонстантойСообщениеОбменаИзГлавногоУзла diff --git a/SSL/src/CommonModules/ОбменДаннымиСлужебный/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСлужебный/Module.bsl index d72033996..70162b3a6 100644 --- a/SSL/src/CommonModules/ОбменДаннымиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиСлужебный/Module.bsl @@ -291,7 +291,7 @@ Если Не ЗначениеЗаполнено(ИдентификаторФайла) Тогда СообщениеОбОшибке = НСтр("ru = 'Не указан идентификатор загружаемого файла. Дальнейшее выполнение метода невозможно. - |Назначьте уникальный идентификатор для загружаемого файла.'"); + |Назначьте уникальный идентификатор для загружаемого файла.'"); ВызватьИсключение (СообщениеОбОшибке); КонецЕсли; @@ -378,8 +378,8 @@ Иначе ШаблонСообщения = НСтр("ru = 'Не найден ни один фрагмент сессии передачи с идентификатором %1. - |Убедитесь, что в настройках программы заданы параметры - |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'"); + |Убедитесь, что в настройках программы заданы параметры + |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'"); СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Строка( ИдентификаторФайла)); ВызватьИсключение (СообщениеОбОшибке); diff --git a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl index 730b11417..6052b7d68 100644 --- a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl @@ -496,13 +496,10 @@ Иначе РежимВыгрузкиОбъекта = ОбменДаннымиПовтИсп.РежимВыгрузкиОбъекта(Данные.Метаданные().ПолноеИмя(), Получатель); - Если РежимВыгрузкиОбъекта = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости Тогда + Если РежимВыгрузкиОбъекта = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости + И ОбщегоНазначения.ЗначениеСсылочногоТипа(Данные) Тогда - Если ОбщегоНазначения.ЗначениеСсылочногоТипа(Данные) Тогда - ЭтоНовыйОбъект = Данные.Пустая(); - Иначе - ЭтоНовыйОбъект = Данные.ЭтоНовый(); - КонецЕсли; + ЭтоНовыйОбъект = Данные.Пустая(); Если ЭтоНовыйОбъект Тогда ВызватьИсключение НСтр("ru = 'Регистрация незаписанных объектов, выгружаемых по ссылке, не поддерживается.'"); @@ -2674,7 +2671,12 @@ Если ПРО.ЕстьОбработчикПередОбработкой Тогда Попытка - Выполнить(ПРО.ПередОбработкой); + Если ЗначениеЗаполнено(ПРО.ИмяМенеджераРегистрации) Тогда + Менеджер = ОбщегоНазначения.ОбщийМодуль(ПРО.ИмяМенеджераРегистрации); + Менеджер.ПередОбработкой(ПРО, Отказ, Объект, ОбъектМетаданных, Выгрузка); + Иначе + Выполнить(ПРО.ПередОбработкой); + КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибкиВыполненияОбработчика( "ПередОбработкой", @@ -2698,7 +2700,12 @@ Если ПРО.ЕстьОбработчикПриОбработке Тогда Попытка - Выполнить(ПРО.ПриОбработке); + Если ЗначениеЗаполнено(ПРО.ИмяМенеджераРегистрации) Тогда + Менеджер = ОбщегоНазначения.ОбщийМодуль(ПРО.ИмяМенеджераРегистрации); + Менеджер.ПриОбработке(Отказ, ПРО, Объект, ТекстЗапроса, ПараметрыЗапроса, ИспользоватьКэш, Выгрузка, ДополнительныеСвойства); + Иначе + Выполнить(ПРО.ПриОбработке); + КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибкиВыполненияОбработчика( "ПриОбработке", @@ -2720,7 +2727,12 @@ Если ПРО.ЕстьОбработчикПриОбработкеДополнительный Тогда Попытка - Выполнить(ПРО.ПриОбработкеДополнительный); + Если ЗначениеЗаполнено(ПРО.ИмяМенеджераРегистрации) Тогда + Менеджер = ОбщегоНазначения.ОбщийМодуль(ПРО.ИмяМенеджераРегистрации); + Менеджер.ПриОбработкеДополнительный(Отказ, ПРО, Объект, ТекстЗапроса, ПараметрыЗапроса, ИспользоватьКэш, ДополнительныеСвойства); + Иначе + Выполнить(ПРО.ПриОбработкеДополнительный); + КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибкиВыполненияОбработчика( "ПриОбработкеДополнительный", @@ -2738,7 +2750,12 @@ Если ПРО.ЕстьОбработчикПослеОбработки Тогда Попытка - Выполнить(ПРО.ПослеОбработки); + Если ЗначениеЗаполнено(ПРО.ИмяМенеджераРегистрации) Тогда + Менеджер = ОбщегоНазначения.ОбщийМодуль(ПРО.ИмяМенеджераРегистрации); + Менеджер.ПослеОбработки(ПРО, Отказ, Объект, ОбъектМетаданных, Получатели, Выгрузка); + Иначе + Выполнить(ПРО.ПослеОбработки); + КонецЕсли; Исключение ВызватьИсключение ПодробноеПредставлениеОшибкиВыполненияОбработчика( "ПослеОбработки", @@ -3675,7 +3692,7 @@ Если Не ЭтоУдалениеОбъекта И ЭлементДанных.ДополнительныеСвойства.Свойство("УдалятьСозданныеПоКлючевымСвойствам") Тогда - Возврат; + Возврат; КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl index 8bb987da8..710bc0f6e 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl @@ -219,6 +219,7 @@ КонецЕсли; Форма.ТолькоПросмотр = Истина; + Форма.Команды.Добавить("ОбновлениеВерсииИБ_ОбъектЗаблокирован"); ОбщегоНазначения.СообщитьПользователю(Результат.ТекстИсключения); Возврат; КонецЕсли; @@ -293,6 +294,7 @@ СведенияОБлокируемыхОбъектах = ОбновлениеИнформационнойБазыСлужебный.СведенияОБлокируемыхОбъектах(); + МетаданныеИОтбор = Неопределено; Если ТипЗнч(Данные) = Тип("Строка") Тогда ПолноеИмя = Данные; Иначе @@ -300,6 +302,14 @@ ПолноеИмя = МетаданныеИОтбор.Метаданные.ПолноеИмя(); КонецЕсли; + РазблокированныеОбъекты = СведенияОБлокируемыхОбъектах.РазблокированныеОбъекты; + ДоступныеДляРедактирования = РазблокированныеОбъекты[ПолноеИмя]; + Если МетаданныеИОтбор <> Неопределено + И ДоступныеДляРедактирования <> Неопределено + И ДоступныеДляРедактирования.Найти(МетаданныеИОтбор.Отбор) <> Неопределено Тогда + Возврат Результат; // Объект разблокирован для редактирования. + КонецЕсли; + БлокироватьИзменение = Ложь; ТекстСообщения = ""; ОбновлениеИнформационнойБазыПереопределяемый.ПриВыполненииПроверкиОбъектОбработан(ПолноеИмя, БлокироватьИзменение, ТекстСообщения); @@ -333,9 +343,16 @@ КонецЦикла; Если НезавершенныеОбработчики.Количество() > 0 Тогда - ТекстИсключения = НСтр("ru = 'Действия с объектом временно запрещены, так как не завершен переход на новую версию программы. - |Это плановый процесс, который скоро завершится. - |Остались следующие процедуры обработки данных:'"); + + ЧастиИсключения = Новый Массив; + ЧастиИсключения.Добавить(НСтр("ru = 'Действия с объектом временно запрещены, так как не завершен переход на новую версию программы. + |Это плановый процесс, который скоро завершится.'")); + ЧастиИсключения.Добавить(СтрСоединить(СтрРазделить(НСтр("ru = 'Для включения возможности редактирования можно нажать Еще - Разблокировать. + |Разблокировку следует применять только в крайних случаях, так как документ может быть + |записан некорректно.'"), Символы.ПС), " ")); + ЧастиИсключения.Добавить(НСтр("ru = 'Следующие процедуры обработки данных не завершены'")); + + ТекстИсключения = СтрСоединить(ЧастиИсключения, Символы.ПС + Символы.ПС) + ":"; НевыполненныеОбработчикиСтрокой = ""; Для Каждого НезавершенныйОбработчик Из НезавершенныеОбработчики Цикл @@ -446,9 +463,11 @@ Набор = Данные; КонецЕсли; + ЗаписатьПрогрессВыполненияОбработчика(Данные, Узел, МетаданныеОбъекта); ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор); КопияДанных = Набор; Иначе + ЗаписатьПрогрессВыполненияОбработчика(Данные, Узел, МетаданныеОбъекта); УдалитьРегистрациюИзмененийОбъекта(Узел, Данные); КонецЕсли; @@ -501,6 +520,7 @@ Параметры = Новый Структура; Параметры.Вставить("Очередь", 0); + Параметры.Вставить("ИмяОбработчика", ""); Параметры.Вставить("ПовторнаяРегистрация", Ложь); Параметры.Вставить("ПараметрыВыборки"); @@ -716,7 +736,12 @@ КонецЕсли; - Узел = ОчередьСсылкой(ОсновныеПараметры.Очередь); + Если ОсновныеПараметры.Свойство("ПерезапускОбновления") + И ОсновныеПараметры.ПерезапускОбновления = Истина Тогда + Узел = ОчередьСсылкой(ОсновныеПараметры.Очередь, Истина); + Иначе + Узел = ОчередьСсылкой(ОсновныеПараметры.Очередь); + КонецЕсли; Если ДополнительныеПараметры.ЭтоДвижения Тогда @@ -3585,16 +3610,56 @@ // Заполняет предопределенные элементы объекта в обработчике обновления поставляемыми данными. // // Параметры: -// Параметры -Структура- служебные параметры обработчика обновления. -// ОбъектМетаданных - ОбъектМетаданных - заполняемый объект. -// ОбновитьМультиязычныеСтроки - Булево - если Истина, то будет обновлены только мультиязычные строки. +// Параметры - Структура- служебные параметры обработчика обновления. +// ОбъектМетаданных - ОбъектМетаданных - заполняемый объект. +// НастройкиЗаполнения - см. НастройкиЗаполнения // -Процедура ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, ОбновитьМультиязычныеСтроки = Ложь) Экспорт +Процедура ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, НастройкиЗаполнения = Неопределено) Экспорт - ОбновлениеИнформационнойБазыСлужебный.ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, ОбновитьМультиязычныеСтроки); + // Обратная совместимость + Если ТипЗнч(НастройкиЗаполнения) = Тип("Булево") Тогда + ОбновитьМультиязычныеСтроки = НастройкиЗаполнения; + НастройкиЗаполнения = НастройкиЗаполнения(); + НастройкиЗаполнения.ОбновитьТолькоМультиязычныеСтроки = ОбновитьМультиязычныеСтроки; + ИначеЕсли НастройкиЗаполнения = Неопределено Тогда + НастройкиЗаполнения = НастройкиЗаполнения(); + КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, НастройкиЗаполнения); КонецПроцедуры +// Заполнить объект предопределенными данными из кода начального заполнения +// +// Параметры: +// ЗаполняемыйОбъект - СправочникОбъект +// - ПланВидовХарактеристикОбъект - заполняемый объект +// НастройкиЗаполнения - см. НастройкиЗаполнения +// +Процедура ЗаполнитьОбъектНачальнымиДанными(ЗаполняемыйОбъект, НастройкиЗаполнения) Экспорт + + ОбновлениеИнформационнойБазыСлужебный.ЗаполнитьОбъектНачальнымиДанными(ЗаполняемыйОбъект, НастройкиЗаполнения); + +КонецПроцедуры + + +// Настройки заполнения предопределенных и поставляемых элементов. +// +// Возвращаемое значение: +// Структура: +// * ОбновитьТолькоМультиязычныеСтроки - Булево - если Истина, то будет обновлены только мультиязычные строки. +// * Реквизиты - Строка - список реквизитов через запятую, которые будут обновлены. Например, "Наименование,Комментарий". +// +Функция НастройкиЗаполнения() Экспорт + + Результат = Новый Структура; + Результат.Вставить("ОбновитьТолькоМультиязычныеСтроки", Ложь); + Результат.Вставить("Реквизиты", ""); + + Возврат Результат; + +КонецФункции + #КонецОбласти #Область УстаревшиеПроцедурыИФункции @@ -3616,6 +3681,327 @@ #КонецОбласти + +// Записывает в журнал регистрации событие при выполнении обработчика обновления. +// При записи ошибки или предупреждения сохраняет эту информацию в сведениях об обработчике +// обновления для дальнейшей индикации в интерфейсах механизма обновления. +// +// Параметры: +// Комментарий - Строка - текст сообщения, записываемый в журнал регистрации. +// Уровень - УровеньЖурналаРегистрации - уровень важности события. +// Если не указано, то записывается событие с уровнем Ошибка. +// Параметры - Структура - параметры, переданные на вход обработчика обновления. +// +Процедура ЗаписатьСобытиеВЖурналРегистрации(Комментарий, Уровень = Неопределено, Параметры = Неопределено) Экспорт + + Если ТипЗнч(Параметры) = Тип("Структура") + И Параметры.Свойство("ИмяОбработчика") Тогда + ИмяОбработчика = Параметры.ИмяОбработчика; + Иначе + ИмяОбработчика = ПараметрыСеанса.ПараметрыОбработчикаОбновления.ИмяОбработчика; + КонецЕсли; + + Если Уровень = УровеньЖурналаРегистрации.Ошибка + Или Уровень = Неопределено Тогда + ОбновлениеИнформационнойБазыСлужебный.ДобавитьИнформациюОбОшибкеВОбработчике(ИмяОбработчика); + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьОшибку(Комментарий); + ИначеЕсли Уровень = УровеньЖурналаРегистрации.Предупреждение Тогда + ОбновлениеИнформационнойБазыСлужебный.ДобавитьИнформациюОбОшибкеВОбработчике(ИмяОбработчика); + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПредупреждение(Комментарий); + Иначе + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьИнформацию(Комментарий); + КонецЕсли; + +КонецПроцедуры + +// Выполняет перезапуск отложенного обновления в базе, где уже выполнились +// монопольные и оперативные обработчики обновления. +// Может быть применимо для случаев, когда вносились исправления в процедурах +// регистрации или самих обработчиках обновления и нужно запустить отложенное обновление +// с начала. +// +// Выполняет следующие действия: +// - останавливает выполнение регламентного задания по отложенному обновлению. +// - делает повторную регистрацию обновляемых данных: +// - (по умолчанию)для обработчиков которые еще не выполнились на момент перезапуска. +// - для переданных обработчиков обновления из списка зарегистрированных к обновлению +// на текущую версию. Для этого требуется передать в отборе параметр Обработчики. +// - обработчиков подсистем с указанной версии, в т.ч. тех, которые уже выполнены. +// Для этого необходимо передать в отборе параметр Подсистемы, в котором указать имя подсистемы +// и номер версии, с которого требуется отобрать обработчики обновления. +// - включает регламентное задание отложенного обновления. +// +// Параметры: +// Отбор - Структура: +// * Ключ - Строка - имя подсистемы. +// * Значение - Строка - номер версии +// - Массив - имена обработчиков обновления, которые требуется перезапустить. +// +Процедура ПерезапуститьОтложенноеОбновление(Отбор = Неопределено) Экспорт + + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + Возврат; + КонецЕсли; + + Если ТипЗнч(Отбор) = Тип("Структура") + И Отбор.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'В отборе не указан список подсистем, для которых требуется перезапустить отложенные обработчики.'"); + КонецЕсли; + + // Отключение отложенного обновления. + ОбновлениеИнформационнойБазыСлужебный.ПриВключенииОтложенногоОбновления(Ложь); + + Если Не ОбщегоНазначения.РазделениеВключено() Тогда + ОтборЗаданий = Новый Структура; + ОтборЗаданий.Вставить("ИмяМетода", "ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновление"); + ОтборЗаданий.Вставить("Состояние", СостояниеФоновогоЗадания.Активно); + НайденныеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(ОтборЗаданий); + Для Каждого ЗаданиеОбновления Из НайденныеЗадания Цикл + Если ЗаданиеОбновления.Состояние = СостояниеФоновогоЗадания.Активно Тогда + ЗаданиеОбновления.Отменить(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Группы = ОбновлениеИнформационнойБазыСлужебный.НовоеОписаниеГруппПотоковОбработчиковОтложенногоОбновления(); + ОбновлениеИнформационнойБазыСлужебный.ОтменитьВыполнениеВсехПотоков(Группы); + + // Повторная регистрация данных. + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ОбновлениеИнформационнойБазы.Ссылка КАК Ссылка + |ИЗ + | ПланОбмена.ОбновлениеИнформационнойБазы КАК ОбновлениеИнформационнойБазы + |ГДЕ + | ОбновлениеИнформационнойБазы.Временная = ИСТИНА"; + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("ПланОбмена.ОбновлениеИнформационнойБазы"); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + ВременныеОчереди = Запрос.Выполнить().Выгрузить(); + Для Каждого ВременнаяОчередь Из ВременныеОчереди Цикл + ПланыОбмена.УдалитьРегистрациюИзменений(ВременнаяОчередь.Ссылка); + КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + СведенияОБлокируемыхОбъектах = ОбновлениеИнформационнойБазыСлужебный.СведенияОБлокируемыхОбъектах(); + ПараметрыРегистрации = Новый Структура; + ПараметрыРегистрации.Вставить("ПриЗапускеКлиентскогоПриложения", Ложь); + ПараметрыРегистрации.Вставить("ПерезапускОбновления", Истина); + + // Список обработчиков, которые не завершены на данный момент. + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполненияОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно); + Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.Текст = + "ВЫБРАТЬ + | ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОбработчика + | И ОбработчикиОбновления.Статус <> &Статус"; + + Если ТипЗнч(Отбор) = Тип("Массив") Тогда + ПараметрыРегистрации.Вставить("РегистрируемыеОбработчики", Отбор); + Для Каждого Обработчик Из Отбор Цикл + СброситьСостояниеОбработчика(Обработчик); + + СведенияОбОбработчике = СведенияОБлокируемыхОбъектах.Обработчики[Обработчик]; + Если СведенияОбОбработчике <> Неопределено Тогда + СведенияОБлокируемыхОбъектах.Обработчики[Обработчик].Выполнен = Ложь; + КонецЕсли; + КонецЦикла; + + НезавершенныеОбработчики = Запрос.Выполнить().Выгрузить(); + Для Каждого НезавершенныйОбработчик Из НезавершенныеОбработчики Цикл + СброситьСостояниеОбработчика(НезавершенныйОбработчик.ИмяОбработчика); + + СведенияОбОбработчике = СведенияОБлокируемыхОбъектах.Обработчики[Обработчик]; + Если СведенияОбОбработчике <> Неопределено Тогда + СведенияОБлокируемыхОбъектах.Обработчики[Обработчик].Выполнен = Ложь; + КонецЕсли; + КонецЦикла; + ИначеЕсли ТипЗнч(Отбор) = Тип("Структура") Тогда + ИтерацииОбновления = ОбновлениеИнформационнойБазыСлужебный.ИтерацииОбновления(); + Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + Если Отбор.Свойство(ИтерацияОбновления.Подсистема) Тогда + ИтерацияОбновления.ПредыдущаяВерсия = Отбор[ИтерацияОбновления.Подсистема]; + КонецЕсли; + КонецЦикла; + + Обработки.ОписаниеОбработчиковОбновления.ЗаполнитьНомерОчереди(ИтерацииОбновления); + ОбновлениеИнформационнойБазыСлужебный.ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления, Ложь, "Отложенные"); + + КонецЕсли; + + Если ТипЗнч(Отбор) = Тип("Массив") Тогда + // При передаче отбора по подсистемам незавершенные обработчики добавляются заново. + + КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОБлокируемыхОбъектах(СведенияОБлокируемыхОбъектах); + ОбновлениеИнформационнойБазыСлужебный.ЗаполнитьДанныеДляПараллельногоОтложенногоОбновления(ПараметрыРегистрации); + + // Перенос очередей. + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировки = БлокировкаДанных.Добавить("ПланОбмена.ОбновлениеИнформационнойБазы"); + ЭлементБлокировки.ИсточникДанных = ВременныеОчереди; + ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Ссылка", "Ссылка"); + НачатьТранзакцию(); + Попытка + БлокировкаДанных.Заблокировать(); + + Для Каждого ВременнаяОчередь Из ВременныеОчереди Цикл + ВременнаяОчередьОбъект = ВременнаяОчередь.Ссылка.ПолучитьОбъект(); + Очередь = ВременнаяОчередьОбъект.Очередь; + + ОсновнаяОчередь = ОчередьСсылкой(Очередь); + ОсновнаяОчередьОбъект = ОсновнаяОчередь.ПолучитьОбъект(); + + ВременнаяОчередьОбъект.Наименование = XMLСтрока(Очередь); + ВременнаяОчередьОбъект.Временная = Ложь; + + ОсновнаяОчередьОбъект.Наименование = XMLСтрока(Очередь) + " " + НСтр("ru = 'Старая после перезапуска'"); + ОсновнаяОчередьОбъект.Временная = Истина; + + ВременнаяОчередьОбъект.Записать(); + ОсновнаяОчередьОбъект.Записать(); + + ПланыОбмена.УдалитьРегистрациюИзменений(ОсновнаяОчередь); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено; + СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = Неопределено; + СведенияОбОбновлении.ТекущаяИтерацияОбновления = 1; + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + Константы.ОтложенноеОбновлениеЗавершеноУспешно.Установить(Ложь); + Если Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + Константы.ОтложенноеОбновлениеВГлавномУзлеЗавершеноУспешно.Установить(Ложь); + КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебный.ПриВключенииОтложенногоОбновления(Истина); + +КонецПроцедуры + +// Выполняет перезапуск монопольных и оперативных обработчиков обновления в базе, где уже выполнилась +// монопольная (оперативная) часть обновления. +// +// Параметры: +// Отбор - Структура: +// * Ключ - Строка - имя подсистемы. +// * Значение - Строка - номер версии. +// +Процедура ПерезапуститьМонопольноеОбновление(Отбор) Экспорт + + ИтерацииОбновления = ОбновлениеИнформационнойБазыСлужебный.ИтерацииОбновления(); + ВерсииУстановлены = Ложь; + Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + Если Отбор.Свойство(ИтерацияОбновления.Подсистема) Тогда + ИтерацияОбновления.ПредыдущаяВерсия = Отбор[ИтерацияОбновления.Подсистема]; + ВерсииУстановлены = Истина; + КонецЕсли; + КонецЦикла; + + Если Не ВерсииУстановлены Тогда + Возврат; + КонецЕсли; + + Обработки.ОписаниеОбработчиковОбновления.ЗаполнитьНомерОчереди(ИтерацииОбновления); + ОбновлениеИнформационнойБазыСлужебный.ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления, Ложь, "Монопольные"); + + ХодВыполненияОбработчиков = Новый Структура; + ХодВыполненияОбработчиков.Вставить("ВсегоОбработчиков", 0); + ХодВыполненияОбработчиков.Вставить("ВыполненоОбработчиков", 0); + + Параметры = Новый Структура; + Параметры.Вставить("ХодВыполненияОбработчиков", ХодВыполненияОбработчиков); + Параметры.Вставить("ОперативноеОбновление", Ложь); + Параметры.Вставить("ВФоне", Ложь); + Параметры.Вставить("ОтметитьРегистрациюДанных", Истина); + + Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + ОбновлениеИнформационнойБазыСлужебный.ВыполнитьИтерациюОбновления(ИтерацияОбновления, Параметры); + КонецЦикла; + +КонецПроцедуры + +// Регистрирует проблему с данными, выявленную при выполнении обработчика обновления в подсистеме +// КонтрольВеденияУчета. +// +// Параметры: +// ПроблемныйОбъект - ЛюбаяСсылка - объект, в котором обнаружена проблема. +// УточнениеПроблемы - Строка - описание выявленной проблемы. +// Параметры - Структура - параметры, переданные на вход обработчика обновления. +// +Процедура ЗарегистрироватьПроблемуСДанными(ПроблемныйОбъект, УточнениеПроблемы, Параметры = Неопределено) Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда + Возврат; + КонецЕсли; + + Если ТипЗнч(Параметры) = Тип("Структура") + И Параметры.Свойство("ИмяОбработчика") Тогда + ИмяОбработчика = Параметры.ИмяОбработчика; + Иначе + ИмяОбработчика = ПараметрыСеанса.ПараметрыОбработчикаОбновления.ИмяОбработчика; + КонецЕсли; + + МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета"); + МодульКонтрольВеденияУчетаСлужебный = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчетаСлужебный"); + + ПараметрыВыполненияПроверки = МодульКонтрольВеденияУчета.ПараметрыВыполненияПроверки("ОбновлениеВерсииИБ", ИмяОбработчика); + ВидПроверки = МодульКонтрольВеденияУчета.ВидПроверки(ПараметрыВыполненияПроверки); + Проверка = МодульКонтрольВеденияУчета.ПроверкаПоИдентификатору("ОбновлениеИнформационнойБазыПроблемаСДанными"); + + ПараметрыПроверки = МодульКонтрольВеденияУчетаСлужебный.ПодготовитьПараметрыПроверки(Проверка, Неопределено); + + Проблема = МодульКонтрольВеденияУчета.ОписаниеПроблемы(ПроблемныйОбъект, ПараметрыПроверки); + Проблема.ВидПроверки = ВидПроверки; + Проблема.УточнениеПроблемы = УточнениеПроблемы; + + ШаблонЗаписиВЖурнал = НСтр("ru = 'При выполнении обработчика ""%1"" обнаружена проблема с данными в объекте ""%2"". + |Уточнение проблемы: + |%3'"); + + ТекстДляЗаписиВЖурнал = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаписиВЖурнал, + ИмяОбработчика, ПроблемныйОбъект, УточнениеПроблемы); + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПредупреждение(ТекстДляЗаписиВЖурнал); + + МодульКонтрольВеденияУчета.ЗаписатьПроблему(Проблема, ПараметрыПроверки); + +КонецПроцедуры + +// Позволяет включить или отключить отложенное обновление. В коробке управляет флагом Использование +// у регламентного задания ОтложенноеОбновлениеИБ, в в модели сервиса заданием очереди. +// +// Параметры: +// Использование - Булево - Истина, если требуется включить отложенное обновление. +// +Процедура ВключитьОтключитьОтложенноеОбновление(Использование) Экспорт + + ОбновлениеИнформационнойБазыСлужебный.ПриВключенииОтложенногоОбновления(Использование); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -4134,6 +4520,7 @@ Набор = ПолучитьПереиспользуемыйНабор(ПараметрыУдаления.ПереиспользуемыеНаборы); Набор.Отбор.Регистратор.Установить(Регистратор); + ЗаписатьПрогрессВыполненияОбработчика(Набор, Узел); УдалитьРегистрациюИзмененийЭлементаДанных(Набор, ПараметрыУдаления); КонецЦикла; @@ -4162,6 +4549,7 @@ Набор.Отбор[Колонка.Имя].Использование = Истина; КонецЦикла; + ЗаписатьПрогрессВыполненияОбработчика(Набор, Узел, МетаданныеРегистра); УдалитьРегистрациюИзмененийЭлементаДанных(Набор, ПараметрыУдаления); КонецЦикла; @@ -4482,8 +4870,8 @@ Возврат ПланыОбмена.ОбновлениеИнформационнойБазы.УзлыМеньшейОчереди(Очередь); КонецФункции -Функция ОчередьСсылкой(Очередь) - Возврат ПланыОбмена.ОбновлениеИнформационнойБазы.УзелПоОчереди(Очередь); +Функция ОчередьСсылкой(Очередь, Временная = Ложь) + Возврат ПланыОбмена.ОбновлениеИнформационнойБазы.УзелПоОчереди(Очередь, Временная); КонецФункции // Контекст построения выборки при помощи таких функций, как: @@ -5962,4 +6350,84 @@ КонецФункции +Процедура СброситьСостояниеОбработчика(Обработчик) + + ОбработчикОбновления = РегистрыСведений.ОбработчикиОбновления.СоздатьМенеджерЗаписи(); + ОбработчикОбновления.ИмяОбработчика = Обработчик; + ОбработчикОбновления.Прочитать(); + + ОбработчикОбновления.Статус = Перечисления.СтатусыОбработчиковОбновления.НеВыполнялся; + ОбработчикОбновления.ДлительностьОбработки = 0; + ОбработчикОбновления.ЧислоПопыток = 0; + ОбработчикОбновления.СтатистикаВыполнения = Новый ХранилищеЗначения(Новый Соответствие); + ОбработчикОбновления.ИнформацияОбОшибке = ""; + ОбработчикОбновления.ОбработкаПорцииЗавершена = Истина; + + ОбработчикОбновления.Записать(); + +КонецПроцедуры + +Процедура ЗаписатьПрогрессВыполненияОбработчика(Данные, Узел, МетаданныеОбъекта = Неопределено) + + ОбъектовОбработано = 0; + Если (ТипЗнч(Данные) = Тип("Массив") + Или ТипЗнч(Данные) = Тип("ТаблицаЗначений")) Тогда + ОбъектовОбработано = Данные.Количество(); + Иначе + Если МетаданныеОбъекта = Неопределено Тогда + ТипЗначенияОбъекта = ТипЗнч(Данные); + МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗначенияОбъекта); + КонецЕсли; + Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта) Тогда + ПолноеИмя = МетаданныеОбъекта.ПолноеИмя(); + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Узел", Узел); + Запрос.УстановитьПараметр("Ссылка", Данные.Ссылка); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | &ИмяТаблицыИзменений КАК ТаблицаИзменения + |ГДЕ + | ТаблицаИзменения.Узел = &Узел + | И ТаблицаИзменения.Ссылка = &Ссылка"; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяТаблицыИзменений", ПолноеИмя + ".Изменения"); // @query-part + Если Не Запрос.Выполнить().Пустой() Тогда + ОбъектовОбработано = 1; + КонецЕсли; + Иначе + Если Данные.Количество() = 0 Тогда + ОбъектовОбработано = 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..67ae965b6 --- /dev/null +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСД/Module.bsl @@ -0,0 +1,260 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +//////////////////////////////////////////////////////////////////////////////// +// Сведения о библиотеке (или конфигурации). + +// Заполняет основные сведения о библиотеке или основной конфигурации. +// Библиотека, имя которой имя совпадает с именем конфигурации в метаданных, определяется как основная конфигурация. +// +// Параметры: +// Описание - Структура: +// +// * Имя - Строка - имя библиотеки, например, "СтандартныеПодсистемы". +// * Версия - Строка - версия в формате из 4-х цифр, например, "2.1.3.1". +// +// * ИдентификаторИнтернетПоддержки - Строка - уникальное имя программы в сервисах Интернет-поддержки. +// * ТребуемыеПодсистемы - Массив - имена других библиотек (Строка), от которых зависит данная библиотека. +// Обработчики обновления таких библиотек должны быть вызваны ранее +// обработчиков обновления данной библиотеки. +// При циклических зависимостях или, напротив, отсутствии каких-либо зависимостей, +// порядок вызова обработчиков обновления определяется порядком добавления модулей +// в процедуре ПриДобавленииПодсистем общего модуля +// ПодсистемыКонфигурацииПереопределяемый. +// * РежимВыполненияОтложенныхОбработчиков - Строка - "Последовательно" - отложенные обработчики обновления выполняются +// последовательно в интервале от номера версии информационной базы до номера +// версии конфигурации включительно или "Параллельно" - отложенный обработчик после +// обработки первой порции данных передает управление следующему обработчику, а после +// выполнения последнего обработчика цикл повторяется заново. +// +Процедура ПриДобавленииПодсистемы(Описание) Экспорт + + Описание.Имя = "БиблиотекаСинхронизацииДанных"; + Описание.Версия = "1.0.1.19"; + Описание.ИдентификаторИнтернетПоддержки = "DSL"; + Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; + Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "1.0.1.1"; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики обновления информационной базы. + +// Добавляет в список процедуры-обработчики обновления данных ИБ +// для всех поддерживаемых версий библиотеки или конфигурации. +// Вызывается перед началом обновления данных ИБ для построения плана обновления. +// +// Параметры: +// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления +// +// Пример: +// Для добавления своей процедуры-обработчика в список: +// Обработчик = Обработчики.Добавить(); +// Обработчик.Версия = "1.1.0.0"; +// Обработчик.Процедура = "ОбновлениеИБ.ПерейтиНаВерсию_1_1_0_0"; +// Обработчик.РежимВыполнения = "Оперативно"; +// +Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт + + + +КонецПроцедуры + +// См. ОбновлениеИнформационнойБазыПереопределяемый.ПередОбновлениемИнформационнойБазы. +Процедура ПередОбновлениемИнформационнойБазы() Экспорт + +КонецПроцедуры + +// Вызывается после завершения обновления данных ИБ. +// В зависимости от тех или иных условий можно отключить штатное открытие формы +// с описанием изменений в новой версии программы при первом входе в нее (после обновления), +// а также выполнить другие действия. +// +// Не рекомендуется выполнять в данной процедуре какую-либо обработку данных. +// Такие процедуры следует оформлять штатными обработчиками обновления, выполняемыми на каждую версию "*". +// +// Параметры: +// ПредыдущаяВерсия - Строка - версия до обновления. "0.0.0.0" для "пустой" ИБ. +// ТекущаяВерсия - Строка - версия после обновления. Как правило, соответствует Метаданные.Версия. +// ВыполненныеОбработчики - ДеревоЗначений: +// * НачальноеЗаполнение - Булево - если Истина, то обработчик должен срабатывать при запуске на "пустой" базе. +// * Версия - Строка - например, "2.1.3.39". Номер версии конфигурации, при переходе +// на которую должна быть выполнена процедура-обработчик обновления. +// Если указана пустая строка, то это обработчик только для начального заполнения +// (должно быть указано свойство НачальноеЗаполнение). +// * Процедура - Строка - полное имя процедуры-обработчика обновления/начального заполнения. +// Например, "ОбновлениеИнформационнойБазыУПП.ЗаполнитьНовыйРеквизит" +// Обязательно должна быть экспортной. +// * РежимВыполнения - Строка - режим выполнения обработчика обновления. Допустимые значения: +// Монопольно, Отложенно, Оперативно. Если значение не заполнено, обработчик +// считается монопольным. +// * ОбщиеДанные - Булево - если Истина, то обработчик должен срабатывать до +// выполнения любых обработчиков, использующих разделенные данные. +// Допустимо указывать только для обработчиков с режимом выполнения Монопольно и Оперативно. +// Если указать значение Истина для обработчика с режимом +// выполнения Отложенно, будет выдано исключение. +// * УправлениеОбработчиками - Булево - если Истина, то обработчик должен иметь параметр типа Структура, в котором +// есть свойство РазделенныеОбработчики - таблица значений со структурой, +// возвращаемой этой функцией. +// При этом колонка Версия игнорируется. В случае необходимости выполнения +// разделенного обработчика в данную таблицу необходимо добавить строку с +// описанием процедуры обработчика. +// Имеет смысл только для обязательных (Версия = *) обработчиков обновления +// с установленным флагом ОбщиеДанные. +// * Комментарий - Строка - описание действий, выполняемых обработчиком обновления. +// * Идентификатор - УникальныйИдентификатор - необходимо заполнять для обработчиков отложенного обновления, +// для остальных заполнение не требуется. Требуется для идентификации +// обработчика в случае его переименования. +// +// * БлокируемыеОбъекты - Строка - необходимо заполнять для обработчиков отложенного обновления, +// для остальных заполнение не требуется. Полные имена объектов через запятую, +// которые следует блокировать от изменения до завершения процедуры обработки данных. +// Если заполнено, то также требуется заполнить и свойство ПроцедураПроверки. +// * ПроцедураПроверки - Строка - необходимо заполнять для обработчиков отложенного обновления, +// для остальных заполнение не требуется. Имя функции, которая для переданного объекта +// определяет, завершена ли для него процедура обработки данных. +// Если переданный объект обработан, то следует вернуть значение Истина. +// Вызывается из процедуры ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан. +// Параметры, передаваемые в функцию: +// Параметры - см. ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным. +// * ПроцедураЗаполненияДанныхОбновления - Строка - указывается процедура, которая регистрирует данные, +// подлежащие обновлению данным обработчиком. +// * ЗапускатьТолькоВГлавномУзле - Булево - только для обработчиков отложенного обновления с режимом выполнения Параллельно. +// Указать Истина, если обработчик обновления должен выполняться только в главном +// узле РИБ. +// * ЗапускатьИВПодчиненномУзлеРИБСФильтрами - Булево - только для обработчиков отложенного обновления с режимом +// выполнения Параллельно. +// Указать Истина, если обработчик обновления должен также выполняться в +// подчиненном узле РИБ с фильтрами. +// * ЧитаемыеОбъекты - Строка - объекты, которые обработчик обновления будет читать при обработке данных. +// * ИзменяемыеОбъекты - Строка - объекты, которые обработчик обновления будет изменять при обработке данных. +// * ПриоритетыВыполнения - ТаблицаЗначений - таблица приоритетов выполнения между отложенными обработчиками, +// изменяющими или читающими одни и те же данные. Подробнее см. в комментарии +// к функции ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика. +// * ВыполнятьВГруппеОбязательных - Булево - следует указывать, если обработчик требуется +// выполнять в одной группе с обработчиками на версии "*". +// При этом возможно менять порядок выполнения обработчика +// относительно других путем изменения приоритета. +// * Приоритет - Число - для внутреннего использования. +// * МонопольныйРежим - Неопределено +// - Булево - если указано Неопределено, то обработчик +// должен безусловно выполняться в монопольном режиме. +// Для обработчиков перехода на конкретную версию (версия <> *): +// Ложь - обработчик не требует монопольного режима для выполнения. +// Истина - обработчик требует монопольного режима для выполнения. +// Для обязательных обработчиков обновления (Версия = "*"): +// Ложь - обработчик не требует монопольного режима. +// Истина - обработчик может требовать монопольного режима для выполнения. +// В такие обработчики передается параметр типа структура +// со свойством МонопольныйРежим (типа Булево). +// При запуске обработчика в монопольном режиме передается +// значение Истина. В этом случае обработчик должен выполнить +// требуемые действия по обновлению. Изменение параметра +// в теле обработчика игнорируется. +// При запуске обработчика в немонопольном режиме передается +// значение Ложь. В этом случае обработчик не должен вносить никакие +// изменения в ИБ. +// Если в результате анализа выясняется, что обработчику требуется +// изменить данные ИБ, следует установить значение параметра в Истина +// и прекратить выполнение обработчика. +// В этом случае оперативное (немонопольное) обновление ИБ будет +// отменено и будет выдана ошибка с требованием выполнить обновление в +// монопольном режиме. +// ВыводитьОписаниеОбновлений - Булево - если установить Ложь, то не будет открыта форма +// с описанием изменений в новой версии программы. По умолчанию Истина. +// МонопольныйРежим - Булево - признак того, что обновление выполнилось в монопольном режиме. +// +Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия, Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, Знач МонопольныйРежим) Экспорт + + + +КонецПроцедуры + +// См. ОбновлениеИнформационнойБазыПереопределяемый.ПриПодготовкеМакетаОписанияОбновлений. +Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт + + + +КонецПроцедуры + +// Позволяет переопределить режим обновления данных информационной базы. +// Для использования в редких (нештатных) случаях перехода, не предусмотренных в +// стандартной процедуре определения режима обновления. +// +// Параметры: +// РежимОбновленияДанных - Строка - в обработчике можно присвоить одно из значений: +// "НачальноеЗаполнение" - если это первый запуск пустой базы (области данных); +// "ОбновлениеВерсии" - если выполняется первый запуск после обновление конфигурации базы данных; +// "ПереходСДругойПрограммы" - если выполняется первый запуск после обновление конфигурации базы данных, +// в которой изменилось имя основной конфигурации. +// +// СтандартнаяОбработка - Булево - если присвоить Ложь, то стандартная процедура +// определения режима обновления не выполняется, +// а используется значение РежимОбновленияДанных. +// +Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт + + + +КонецПроцедуры + +// Добавляет в список процедуры-обработчики перехода с другой программы (с другим именем конфигурации). +// Например, для перехода между разными, но родственными конфигурациями: базовая -> проф -> корп. +// Вызывается перед началом обновления данных ИБ. +// +// Параметры: +// Обработчики - ТаблицаЗначений: +// * ПредыдущееИмяКонфигурации - Строка - имя конфигурации, с которой выполняется переход; +// или "*", если нужно выполнять при переходе с любой конфигурации. +// * Процедура - Строка - полное имя процедуры-обработчика перехода с программы +// ПредыдущееИмяКонфигурации. +// Например, "ОбновлениеИнформационнойБазыУПП.ЗаполнитьУчетнуюПолитику" +// Обязательно должна быть экспортной. +// +// Пример: +// Обработчик = Обработчики.Добавить(); +// Обработчик.ПредыдущееИмяКонфигурации = "УправлениеТорговлей"; +// Обработчик.Процедура = "ОбновлениеИнформационнойБазыУПП.ЗаполнитьУчетнуюПолитику"; +// +Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт + + + +КонецПроцедуры + +// Вызывается после выполнения всех процедур-обработчиков перехода с другой программы (с другим именем конфигурации), +// и до начала выполнения обновления данных ИБ. +// +// Параметры: +// ПредыдущееИмяКонфигурации - Строка - имя конфигурации до перехода. +// ПредыдущаяВерсияКонфигурации - Строка - имя предыдущей конфигурации (до перехода). +// Параметры - Структура: +// * ВыполнитьОбновлениеСВерсии - Булево - по умолчанию Истина. Если установить Ложь, +// то будут выполнена только обязательные обработчики обновления (с версией "*"). +// * ВерсияКонфигурации - Строка - номер версии после перехода. +// По умолчанию, равен значению версии конфигурации в свойствах метаданных. +// Для того чтобы выполнить, например, все обработчики обновления с версии ПредыдущаяВерсияКонфигурации, +// следует установить значение параметра в ПредыдущаяВерсияКонфигурации. +// Для того чтобы выполнить вообще все обработчики обновления, установить значение "0.0.0.1". +// * ОчиститьСведенияОПредыдущейКонфигурации - Булево - по умолчанию Истина. +// Для случаев когда предыдущая конфигурация совпадает по имени с подсистемой текущей конфигурации, следует +// указать Ложь. +// +Процедура ПриЗавершенииПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации, ПредыдущаяВерсияКонфигурации, Параметры) Экспорт + + + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСД/ОбновлениеИнформационнойБазыБСД.mdo b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСД/ОбновлениеИнформационнойБазыБСД.mdo new file mode 100644 index 000000000..536f999ba --- /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 fc96e6f75..d77ec72e5 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl @@ -41,7 +41,7 @@ Процедура ПриДобавленииПодсистемы(Описание) Экспорт Описание.Имя = "СтандартныеПодсистемы"; - Описание.Версия = "3.1.5.289"; + Описание.Версия = "3.1.6.62"; Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl index 3eed8a4d3..62fa73a17 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl @@ -16,7 +16,7 @@ ПараметрыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске(); Если ПараметрыКлиента.Свойство("ПоказатьСообщениеОбОшибочныхОбработчиках") Тогда - ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы"); Иначе ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены(); КонецЕсли; diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl index 910b4817b..1975ef34d 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl @@ -159,10 +159,138 @@ КонецПроцедуры +// Параметры: +// ФормаОтчета - ФормаКлиентскогоПриложения: +// * ОтчетТабличныйДокумент - ТабличныйДокумент +// Команда - КомандаФормы +// Результат - Булево +// +Процедура ПриОбработкеКоманды(ФормаОтчета, Команда, Результат) Экспорт + + Если ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.ПрогрессОтложенногоОбновления" Тогда + Расшифровка = ФормаОтчета.ОтчетТабличныйДокумент.ТекущаяОбласть.Расшифровка; + Кеш = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Кеш"); + КешПриоритетов = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КешПриоритетов"); + ЗначениеРасшифровки = ОбновлениеИнформационнойБазыСлужебныйВызовСервера.ДанныеРасшифровкиОтчета( + ФормаОтчета.ОтчетДанныеРасшифровки, + Расшифровка, + Кеш.Значение, + КешПриоритетов.Значение); + + Если ЗначениеРасшифровки = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Команда.Имя = "ПрогрессОтложенногоОбновленияЗависимости" + И ЗначениеРасшифровки.ИмяПоля = "ОбработчикОбновления" Тогда + ОткрытьФорму("Отчет.ПрогрессОтложенногоОбновления.Форма.ЗависимостьОбработчика", ЗначениеРасшифровки); + ИначеЕсли Команда.Имя = "ПрогрессОтложенногоОбновленияОшибки" Тогда + ОтборЖурнала = Новый Структура; + ОтборЖурнала.Вставить("Уровень", "Ошибка"); + ОтборЖурнала.Вставить("СобытиеЖурналаРегистрации", НСтр("ru = 'Обновление информационной базы'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка())); + ОтборЖурнала.Вставить("ДатаНачала", ЗначениеРасшифровки.НачалоОбновления); + ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ОтборЖурнала); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Обработчик двойного щелчка мыши, нажатия клавиши Enter или гиперссылки в табличном документе формы отчета. +// См. "Расширение поля формы для поля табличного документа.Выбор" в синтакс-помощнике. +// +// Параметры: +// ФормаОтчета - ФормаКлиентскогоПриложения - форма отчета. +// Элемент - ПолеФормы - табличный документ. +// Область - ОбластьЯчеекТабличногоДокумента - выбранное значение. +// СтандартнаяОбработка - Булево - признак выполнения стандартной обработки события. +// +Процедура ПриОбработкеВыбораТабличногоДокумента(ФормаОтчета, Элемент, Область, СтандартнаяОбработка) Экспорт + + Если ФормаОтчета.НастройкиОтчета.ПолноеИмя <> "Отчет.ПрогрессОтложенногоОбновления" Тогда + Возврат; + КонецЕсли; + + Расшифровка = Область.Расшифровка; + + Расшифровка = ФормаОтчета.ОтчетТабличныйДокумент.ТекущаяОбласть.Расшифровка; + ЗначениеРасшифровки = ОбновлениеИнформационнойБазыСлужебныйВызовСервера.ДанныеРасшифровкиОтчета( + ФормаОтчета.ОтчетДанныеРасшифровки, + Расшифровка); + + Если ЗначениеРасшифровки <> Неопределено Тогда + Если ЗначениеРасшифровки.ИмяПоля = "ЕстьОшибки" Тогда + Значение = ЗначениеРасшифровки.Значение; + Если Значение.Количество() <> 3 Тогда + Возврат; + КонецЕсли; + + ЕстьОшибки = Значение[1]; + Если ЕстьОшибки = Истина Тогда + СтандартнаяОбработка = Ложь; + ОтборЖурнала = Новый Структура; + ОтборЖурнала.Вставить("Уровень", "Ошибка"); + ОтборЖурнала.Вставить("СобытиеЖурналаРегистрации", НСтр("ru = 'Обновление информационной базы'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка())); + ОтборЖурнала.Вставить("ДатаНачала", ЗначениеРасшифровки.НачалоОбновления); + ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ОтборЖурнала); + КонецЕсли; + ИначеЕсли ЗначениеРасшифровки.ИмяПоля = "ПроблемаВДанных" Тогда + Значение = ЗначениеРасшифровки.Значение; + Если Значение.Количество() <> 3 Тогда + Возврат; + КонецЕсли; + + ЕстьОшибки = Значение[2]; + Если ЕстьОшибки = Истина Тогда + СтандартнаяОбработка = Ложь; + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда + МодульКонтрольВеденияУчетаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольВеденияУчетаКлиент"); + МодульКонтрольВеденияУчетаКлиент.ОткрытьОтчетПоПроблемам("ОбновлениеВерсииИБ", Ложь); + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции +Процедура РазблокироватьОбъектДляРедактирования(МассивОбъектов, ДополнительныеПараметры) Экспорт + + ТекстВопроса = НСтр("ru = 'Данные объекта заблокированы, т.к. не завершен переход на новую версию программы. + |Разблокировку рекомендуется применять только в крайних случаях, т.к. данные могут быть записаны некорректно. + | + |Разблокировать для редактирования?'"); + Параметры = Новый Структура; + Параметры.Вставить("МассивОбъектов", МассивОбъектов); + Параметры.Вставить("Форма", Неопределено); + Если ДополнительныеПараметры.Свойство("Форма") Тогда + Параметры.Форма = ДополнительныеПараметры.Форма; + КонецЕсли; + ОписаниеОповещения = Новый ОписаниеОповещения("РазблокироватьОбъектДляРедактированияПослеВопроса", ЭтотОбъект, Параметры); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + +КонецПроцедуры + +Процедура РазблокироватьОбъектДляРедактированияПослеВопроса(Результат, Параметры) Экспорт + Если Результат <> КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазыСлужебныйВызовСервера.РазблокироватьОбъектДляРедактирования(Параметры.МассивОбъектов); + + Если Параметры.Форма <> Неопределено Тогда + Параметры.Форма.ТолькоПросмотр = Ложь; + ОчиститьСообщения(); + Иначе + ТекстСообщения = НСтр("ru = 'Данные разблокированы. Для редактирования необходимо переоткрыть карточку объекта.'"); + ПоказатьПредупреждение(, ТекстСообщения); + КонецЕсли; + +КонецПроцедуры + // Для процедуры ОбновитьИнформационнуюБазу. Процедура ЗакрытьФормуИндикацииХодаОбновленияЕслиОткрыта(Параметры) @@ -185,7 +313,7 @@ Форма = ПараметрыПриложения.Получить(ИмяПараметра); Если Форма = Неопределено Тогда - ИмяФормы = "Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОбновленияИБ"; + ИмяФормы = "Обработка.РезультатыОбновленияПрограммы.Форма.ОбновлениеВерсииПрограммы"; Форма = ОткрытьФорму(ИмяФормы,,,,,, Новый ОписаниеОповещения( "ПослеЗакрытияФормыИндикацияХодаОбновленияИБ", ЭтотОбъект, Параметры)); ПараметрыПриложения.Вставить(ИмяПараметра, Форма); @@ -198,7 +326,7 @@ // Только для внутреннего использования. Продолжение процедуры ПередНачаломРаботыПрограммы. Процедура ЗагрузитьОбновитьПараметрыРаботыПрограммы(Параметры, Контекст) Экспорт - ИмяФормы = "Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОбновленияИБ"; + ИмяФормы = "Обработка.РезультатыОбновленияПрограммы.Форма.ОбновлениеВерсииПрограммы"; Форма = ОткрытьФорму(ИмяФормы,,,,,, Новый ОписаниеОповещения( "ПослеЗакрытияФормыИндикацияХодаОбновленияИБ", ЭтотОбъект, Параметры)); ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ОбновлениеВерсииИБ.ФормаИндикацияХодаОбновленияИБ", Форма); @@ -285,7 +413,7 @@ // Только для внутреннего использования. Продолжение процедуры ПередНачаломРаботыСистемы. Процедура ИнициироватьОбновлениеОбласти(Параметры, ОписаниеПредупреждения) Экспорт - ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ОбновлениеДляНеполноправногоПользователя"); + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.СообщениеДляНеполноправногоПользователя"); КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl index 4f1e7239a..7a44d5601 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl @@ -182,6 +182,23 @@ +КонецПроцедуры + +// Вызывается после формирования порядка обновления типов метаданных (Константы, Справочники, Документы и т.д.). +// Используется для переопределения порядка обновления для какого-то конкретного объекта метаданных. +// +// Параметры: +// ПриоритетыТиповМетаданных - Соответствие из КлючИЗначение - порядок обновления типов метаданных: +// * Ключ - имя типа метаданного в единственном числе или полное имя конкретного типа метаданного +// * Значение - Число - порядок обновления +// +// Пример: +// ПриоритетыТиповМетаданных.Вставить("РегистрСведений.РеестрДокументов", 120); +// +Процедура ПриЗаполненииПриоритетовТиповМетаданных(ПриоритетыТиповМетаданных) Экспорт + + + КонецПроцедуры // Вызывается при выполнении функции ОбновлениеИнформационнойБазы.ОбъектОбработан. @@ -201,6 +218,8 @@ КонецПроцедуры // Определяет настройки начального заполнения элементов +// Позволяет задать общие настройки заполнение поставляемых данных для объектов, недоступных для изменения, +// стоящих на поддержке у другой библиотеки. // // Параметры: // ПолноеИмяОбъекта - Строка - имя объекта, для которого вызывается заполнение. @@ -214,6 +233,8 @@ КонецПроцедуры // Вызывается при начальном заполнении объектов. +// Позволяет описать заполнение поставляемых данных для объектов, +// недоступных для изменения, например стоящих на поддержке у другой библиотеки. // // Параметры: // ПолноеИмяОбъекта - Строка - имя объекта, для которого вызывается заполнение. @@ -232,6 +253,8 @@ КонецПроцедуры // Вызывается при начальном заполнении создаваемого объекта. +// Позволяет описать дополнительное заполнение или проверку поставляемого объекта, +// недоступного для изменения, например стоящего на поддержке у другой библиотеки. // // Параметры: // ПолноеИмяОбъекта - Строка - имя объекта, для которого вызывается заполнение. diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl index 0ce6f2122..3568885c6 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl @@ -157,8 +157,9 @@ // ИдентификаторБиблиотеки - Строка - имя конфигурации или родительской конфигурации (библиотеки), // НомерВерсии - Строка - номер версии. // ЭтоОсновнаяКонфигурация - Булево - признак, что ИдентификаторБиблиотеки соответствует имени конфигурации. +// ВыполненаРегистрация - Булево - признак, что выполнена регистрация данных для отложенного обновления. // -Процедура УстановитьВерсиюИБ(Знач ИдентификаторБиблиотеки, Знач НомерВерсии, Знач ЭтоОсновнаяКонфигурация) Экспорт +Процедура УстановитьВерсиюИБ(Знач ИдентификаторБиблиотеки, Знач НомерВерсии, Знач ЭтоОсновнаяКонфигурация, ВыполненаРегистрация = Неопределено) Экспорт СтандартнаяОбработка = Истина; @@ -180,6 +181,9 @@ НоваяЗапись.ИмяПодсистемы = ИдентификаторБиблиотеки; НоваяЗапись.Версия = НомерВерсии; НоваяЗапись.ЭтоОсновнаяКонфигурация = ЭтоОсновнаяКонфигурация; + Если ВыполненаРегистрация <> Неопределено Тогда + НоваяЗапись.ВыполненаРегистрацияОтложенныхОбработчиков = ВыполненаРегистрация; + КонецЕсли; НаборЗаписей.Записать(); @@ -880,6 +884,7 @@ КонецЕсли; ПараметрыОбработчикаСтруктура.Очередь = Обработчик.ОчередьОтложеннойОбработки; + ПараметрыОбработчикаСтруктура.ИмяОбработчика = Обработчик.ИмяОбработчика; ПараметрыОбработчикаСтруктура.Вставить("ДанныеОбработчика", Новый Соответствие); Если Обработчик.Многопоточный Тогда @@ -1084,25 +1089,73 @@ // Обновляет список выполняемых обработчиков обновления в регистрах сведений // ОбработчикиОбновления и ОбработчикиОбновленияОбщихДанных. // -Процедура ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления, ПервыйОбменВРИБ = Ложь) Экспорт +Процедура ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления, ПервыйОбменВРИБ = Ложь, ТипыОбработчиков = Неопределено) Экспорт - СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); - НезавершенныеОтложенныеОбработчики = НезавершенныеОтложенныеОбработчики(СведенияОбОбновлении); + ТолькоОтложенные = (ТипыОбработчиков = "Отложенные"); + ТолькоМонопольные = (ТипыОбработчиков = "Монопольные"); + + Если Не ТолькоМонопольные Тогда + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + НезавершенныеОтложенныеОбработчики = НезавершенныеОтложенныеОбработчики(СведенияОбОбновлении); + КонецЕсли; НачатьТранзакцию(); Попытка - СброситьСведенияОбОбновлении(СведенияОбОбновлении); + Если Не ТолькоМонопольные Тогда + ВерсииПодсистемНаНачалоОбновления = Новый Соответствие; + ОтложенноеОбновлениеЗавершеноУспешно = Неопределено; + ЗаполнитьВерсииПодсистем = Ложь; + Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + ОтложенноеОбновлениеЗавершеноУспешно = Константы.ОтложенноеОбновлениеЗавершеноУспешно.Получить(); + ВерсииПодсистемНаНачалоОбновления = СведенияОбОбновлении.ВерсииПодсистемНаНачалоОбновления; + ЗаполнитьВерсииПодсистем = Истина; + КонецЕсли; + + Если ОтложенноеОбновлениеЗавершеноУспешно = Истина Тогда + ВерсииПодсистемНаНачалоОбновления.Очистить(); + КонецЕсли; + + СброситьСведенияОбОбновлении(СведенияОбОбновлении); + + ПроверитьУникальностьИдентификаторовОтложенныхОбработчиков(ИтерацииОбновления); + КонецЕсли; + // АПК:1327-выкл нет конкурентной работы с регистром Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда - НаборРазделенныхОбработчиков = РегистрыСведений.ОбработчикиОбновления.СоздатьНаборЗаписей(); + НаборРазделенныхОбработчиков = РегистрыСведений.ОбработчикиОбновления.СоздатьНаборЗаписей(); + Если ТолькоМонопольные Тогда + // Остаются только отложенные обработчики, монопольные и оперативные добавляются заново. + НаборРазделенныхОбработчиков.Прочитать(); + ТаблицаОбработчиков = НаборРазделенныхОбработчиков.Выгрузить(); + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно); + ТаблицаОбработчиков = ТаблицаОбработчиков.Скопировать(ПараметрыОтбора); + + НаборРазделенныхОбработчиков.Загрузить(ТаблицаОбработчиков); + ИначеЕсли ТолькоОтложенные Тогда + // Монопольные и оперативные обработчики остаются, т.к. повторно регистрируются только отложенные. + НаборРазделенныхОбработчиков.Прочитать(); + ТаблицаОбработчиков = НаборРазделенныхОбработчиков.Выгрузить(); + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Монопольно); + МонопольныеОбработчики = ТаблицаОбработчиков.Скопировать(ПараметрыОтбора); + + ПараметрыОтбора.Вставить("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Оперативно); + ОперативныеОбработчики = ТаблицаОбработчиков.Скопировать(ПараметрыОтбора); + + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(МонопольныеОбработчики, ОперативныеОбработчики); + + НаборРазделенныхОбработчиков.Загрузить(ОперативныеОбработчики); + КонецЕсли; НаборРазделенныхОбработчиков.Записать(); КонецЕсли; - Если Не ОбщегоНазначения.РазделениеВключено() Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Если Не ТолькоОтложенные И Не ОбщегоНазначения.РазделениеВключено() Или Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда НаборНеразделенныхОбработчиков = РегистрыСведений.ОбработчикиОбновленияОбщихДанных.СоздатьНаборЗаписей(); НаборНеразделенныхОбработчиков.Записать(); КонецЕсли; - - ПроверитьУникальностьИдентификаторовОтложенныхОбработчиков(ИтерацииОбновления); + // АПК:1327-вкл ОписанияБиблиотек = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем().ПоИменам; ГруппаОбновления = 1; @@ -1110,33 +1163,50 @@ ДобавленныеОбработчики = Новый Массив; Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + Если Не ТолькоМонопольные И ЗаполнитьВерсииПодсистем Тогда + СохраненнаяВерсия = ВерсииПодсистемНаНачалоОбновления[ИтерацияОбновления.Подсистема]; + Если СохраненнаяВерсия = Неопределено Тогда + ВерсииПодсистемНаНачалоОбновления.Вставить(ИтерацияОбновления.Подсистема, ИтерацияОбновления.ПредыдущаяВерсия); + Иначе + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СохраненнаяВерсия, ИтерацияОбновления.ПредыдущаяВерсия) > 0 Тогда + ВерсииПодсистемНаНачалоОбновления.Вставить(ИтерацияОбновления.Подсистема, ИтерацияОбновления.ПредыдущаяВерсия); + КонецЕсли; + КонецЕсли; + КонецЕсли; + // Добавление монопольных и оперативных обработчиков обновления. ИмяБиблиотеки = ИтерацияОбновления.Подсистема; - Если Не ПервыйОбменВРИБ Тогда - ПредыдущаяВерсия = ИтерацияОбновления.ПредыдущаяВерсия; - ВерсияМетаданных = ИтерацияОбновления.Версия; - Если ПустаяСтрока(ВерсияМетаданных) Тогда - ВерсияМетаданных = "0.0.0.0"; - КонецЕсли; - - ОбработчикиПоВерсиям = Неопределено; - Если ПредыдущаяВерсия <> "0.0.0.0" - И ОбщегоНазначения.РазделениеВключено() - И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда - ОбработчикиПоВерсиям = ПолучитьПланОбновления(ИтерацияОбновления.Подсистема, ПредыдущаяВерсия, ВерсияМетаданных); - КонецЕсли; - - Если ОбработчикиПоВерсиям = Неопределено Тогда - ОбработчикиПоВерсиям = ОбработчикиОбновленияВИнтервале(ИтерацияОбновления.Обработчики, - ПредыдущаяВерсия, ИтерацияОбновления.Версия); - КонецЕсли; - - Если ОбработчикиПоВерсиям.Строки.Количество() <> 0 Тогда - ОбработчикиПоВерсиям.Колонки.Процедура.Имя = "ИмяОбработчика"; - ДобавитьОбработчики(ИмяБиблиотеки, ОбработчикиПоВерсиям.Строки, ДобавленныеОбработчики); + Если Не ТолькоОтложенные Тогда + Если Не ПервыйОбменВРИБ Тогда + ПредыдущаяВерсия = ИтерацияОбновления.ПредыдущаяВерсия; + ВерсияМетаданных = ИтерацияОбновления.Версия; + Если ПустаяСтрока(ВерсияМетаданных) Тогда + ВерсияМетаданных = "0.0.0.0"; + КонецЕсли; + + ОбработчикиПоВерсиям = Неопределено; + Если ПредыдущаяВерсия <> "0.0.0.0" + И ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + ОбработчикиПоВерсиям = ПолучитьПланОбновления(ИтерацияОбновления.Подсистема, ПредыдущаяВерсия, ВерсияМетаданных); + КонецЕсли; + + Если ОбработчикиПоВерсиям = Неопределено Тогда + ОбработчикиПоВерсиям = ОбработчикиОбновленияВИнтервале(ИтерацияОбновления.Обработчики, + ПредыдущаяВерсия, ИтерацияОбновления.Версия); + КонецЕсли; + + Если ОбработчикиПоВерсиям.Строки.Количество() <> 0 Тогда + ОбработчикиПоВерсиям.Колонки.Процедура.Имя = "ИмяОбработчика"; + ДобавитьОбработчики(ИмяБиблиотеки, ОбработчикиПоВерсиям.Строки, ДобавленныеОбработчики); + КонецЕсли; КонецЕсли; КонецЕсли; + Если ТолькоМонопольные Тогда + Продолжить; + КонецЕсли; + // Добавление отложенных обработчиков обновления. Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда // Обработка сценария получения первого сообщения обмена от подчиненного узла после обновления. @@ -1191,6 +1261,12 @@ Если ЗначениеЗаполнено(ТекстОшибок) Тогда ВызватьИсключение ТекстОшибок; КонецЕсли; + + Если Не ТолькоМонопольные И ЗаполнитьВерсииПодсистем Тогда + СведенияОбОбновлении.ВерсииПодсистемНаНачалоОбновления = ВерсииПодсистемНаНачалоОбновления; + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + КонецЕсли; + ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); @@ -1357,8 +1433,12 @@ КонецЦикла; // Установка номера версии информационной базы. + ОтметитьРегистрациюДанных = Неопределено; + Если Параметры.Свойство("ОтметитьРегистрациюДанных") Тогда + ОтметитьРегистрациюДанных = Параметры.ОтметитьРегистрациюДанных; + КонецЕсли; Если ВерсияИБ(ИдентификаторБиблиотеки) <> ВерсияМетаданныхИБ Тогда - УстановитьВерсиюИБ(ИдентификаторБиблиотеки, ВерсияМетаданныхИБ, ИтерацияОбновления.ЭтоОсновнаяКонфигурация); + УстановитьВерсиюИБ(ИдентификаторБиблиотеки, ВерсияМетаданныхИБ, ИтерацияОбновления.ЭтоОсновнаяКонфигурация, ОтметитьРегистрациюДанных); КонецЕсли; Если ТекущаяВерсияИБ <> "0.0.0.0" Тогда @@ -1554,7 +1634,7 @@ Дело.ЕстьДела = (ЕстьОбработчикиСОшибкой Или ЕстьНеВыполненныеОбработчики Или ЕстьПриостановленныеОбработчики); Дело.Важное = ЕстьОбработчикиСОшибкой; Дело.Представление = НСтр("ru = 'Обновление программы не завершено'"); - Дело.Форма = "Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"; + Дело.Форма = "Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы"; Дело.Владелец = Раздел; КонецЦикла; @@ -1616,6 +1696,57 @@ КонецЕсли; КонецПроцедуры +// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииКомандПодключенныхКОбъекту +Процедура ПриОпределенииКомандПодключенныхКОбъекту(НастройкиФормы, Источники, ПодключенныеОтчетыИОбработки, Команды) Экспорт + + Команда = Команды.Добавить(); + Команда.Вид = "ОбновлениеВерсииИБ"; + Команда.Представление = НСтр("ru = 'Разблокировать объект для редактирования'"); + Команда.РежимЗаписи = "НеЗаписывать"; + Команда.Назначение = "ДляОбъекта"; + Команда.ТолькоВоВсехДействиях = Истина; + Команда.Обработчик = "ОбновлениеИнформационнойБазыКлиент.РазблокироватьОбъектДляРедактирования"; + + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, "ОбновлениеВерсииИБ_ОбъектЗаблокирован"); + +КонецПроцедуры + +// См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииВидовПодключаемыхКоманд +Процедура ПриОпределенииВидовПодключаемыхКоманд(ВидыПодключаемыхКоманд) Экспорт + + Вид = ВидыПодключаемыхКоманд.Добавить(); + Вид.Имя = "ОбновлениеВерсииИБ"; + Вид.Заголовок = НСтр("ru = 'Разблокировка объекта'"); + Вид.Отображение = ОтображениеКнопки.КартинкаИТекст; + +КонецПроцедуры + +// См. ОчередьЗаданийПереопределяемый.ПриОпределенииПсевдонимовОбработчиков. +Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт + + СоответствиеИменПсевдонимам.Вставить("ОбновлениеИнформационнойБазы.ПерезапуститьОтложенноеОбновление"); + +КонецПроцедуры + +// См. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок. +Процедура ПриОпределенииПроверок(ГруппыПроверок, Проверки) Экспорт + + Проверка = Проверки.Добавить(); + Проверка.ИдентификаторГруппы = "СистемныеПроверки"; + Проверка.Наименование = НСтр("ru = 'Проблема с данными при обновлении на новую версию'"); + Проверка.Причины = НСтр("ru = 'Некорректная синхронизация данных с другими программами или импорт данных, + |ошибки в сторонних инструментах (например, внешних обработках или расширениях) или сбои в работе оборудования.'"); + Проверка.Рекомендация = НСтр("ru = 'Если не заполнены обязательные реквизиты, то заполнить их вручную. + |Восстановить отсутствующие данные из резервной копии.'"); + Проверка.Идентификатор = "ОбновлениеИнформационнойБазыПроблемаСДанными"; + Проверка.ОбработчикПроверки = "ОбновлениеИнформационнойБазыСлужебный.ОбработчикПроверкиВеденияУчета"; + Проверка.ЗапрещеноИзменениеВажности = Ложь; + Проверка.КонтекстПроверокВеденияУчета = "ОбновлениеВерсииИБ"; + Проверка.Отключена = Истина; + +КонецПроцедуры + Функция НастройкиПодсистемы() Экспорт ПараметрыСообщенияОНевыполненныхОтложенныхОбработчиках = Новый Структура; @@ -1658,7 +1789,7 @@ // Функция ОбъектыСНачальнымЗаполнениемСтрокой() Экспорт - ОбъектыСНачальнымЗаполнением =ОбъектыСНачальнымЗаполнением(); + ОбъектыСНачальнымЗаполнением = ОбъектыСНачальнымЗаполнением(); Список = Новый Массив; Для каждого ОбъектСПредопределеннымиЭлементами Из ОбъектыСНачальнымЗаполнением Цикл Список.Добавить(ОбъектСПредопределеннымиЭлементами.ПолноеИмя()); @@ -1670,16 +1801,41 @@ Функция НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные) Экспорт - НастройкиЗаполненияЭлементов = Новый Структура; - НастройкиЗаполненияЭлементов.Вставить("ПриНачальномЗаполненииЭлемента", Ложь); - НастройкиЗаполненияЭлементов.Вставить("ДополнительныеПараметры", Новый Структура); - НастройкиЗаполненияЭлементов.ДополнительныеПараметры.Вставить("ПредопределенныеДанные", ПредопределенныеДанные); + ПользовательскиеНастройкиЗаполненияЭлементов = ПользовательскиеНастройкиЗаполненияЭлементов(); + ПользовательскиеНастройкиЗаполненияЭлементов.ДополнительныеПараметры.Вставить("ПредопределенныеДанные", ПредопределенныеДанные); ПолноеИмяОбъекта = МенеджерОбъекта.ПустаяСсылка().Метаданные().ПолноеИмя(); - МенеджерОбъекта.ПриНастройкеНачальногоЗаполненияЭлементов(НастройкиЗаполненияЭлементов); + МенеджерОбъекта.ПриНастройкеНачальногоЗаполненияЭлементов(ПользовательскиеНастройкиЗаполненияЭлементов); ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов(ПолноеИмяОбъекта, - НастройкиЗаполненияЭлементов); + ПользовательскиеНастройкиЗаполненияЭлементов); + + НастройкиЗаполненияЭлементов = НастройкиЗаполненияЭлементов(); + ЗаполнитьЗначенияСвойств(НастройкиЗаполненияЭлементов.ПереопределяемыеНастройки, ПользовательскиеНастройкиЗаполненияЭлементов); + + НастройкиЗаполненияЭлементов.ЕстьКолонкаИмяПредопределенныхДанных = + ПредопределенныеДанные.Колонки.Найти("ИмяПредопределенныхДанных") <> Неопределено; + + НастройкиЗаполненияЭлементов.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита = + ?(ЗначениеЗаполнено(НастройкиЗаполненияЭлементов.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита), + НастройкиЗаполненияЭлементов.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита, "ИмяПредопределенныхДанных"); + + Возврат НастройкиЗаполненияЭлементов; + +КонецФункции + +// Описание настроек заполнения элементов +// +// Возвращаемое значение: +// Структура: +// * ПереопределяемыеНастройки - см. ПользовательскиеНастройкиЗаполненияЭлементов +// * ЕстьКолонкаИмяПредопределенныхДанных - Булево +// +Функция НастройкиЗаполненияЭлементов() Экспорт + + НастройкиЗаполненияЭлементов = Новый Структура; + НастройкиЗаполненияЭлементов.Вставить("ПереопределяемыеНастройки", ПользовательскиеНастройкиЗаполненияЭлементов()); + НастройкиЗаполненияЭлементов.Вставить("ЕстьКолонкаИмяПредопределенныхДанных", Ложь); Возврат НастройкиЗаполненияЭлементов; @@ -1738,6 +1894,16 @@ МенеджерОбъекта.ПриНачальномЗаполненииЭлементов(Языки, ПредопределенныеДанные, ТабличныеЧасти); ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов(МетаданныеОбъекта.ПолноеИмя(), Языки, ПредопределенныеДанные, ТабличныеЧасти); + Если ПредопределенныеДанные.Колонки.Найти("Ссылка") <> Неопределено Тогда + Для Каждого СтрокаПредопределенныхДанных Из ПредопределенныеДанные Цикл + Если ТипЗнч(СтрокаПредопределенныхДанных.Ссылка) = Тип("УникальныйИдентификатор") Тогда + СтрокаПредопределенныхДанных.Ссылка = МенеджерОбъекта.ПолучитьСсылку(СтрокаПредопределенныхДанных.Ссылка); + ИначеЕсли ТипЗнч(СтрокаПредопределенныхДанных.Ссылка) = Тип("Строка") Тогда + СтрокаПредопределенныхДанных.Ссылка = МенеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаПредопределенныхДанных.Ссылка)); + КонецЕсли; + КонецЦикла; + КонецЕсли; + Возврат ПредопределенныеДанные; КонецФункции @@ -1758,19 +1924,16 @@ Для Каждого МетаданныеОбъекта Из ОбъектыСНачальнымЗаполнением Цикл - ЛокализуемыеРеквизитыОбъекта = Новый Соответствие; - - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда - МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); - МодульМультиязычностьСервер.ПриПолученииПараметровЗаполненияОбъекта(МетаданныеОбъекта, ПараметрыЗаполнения); - ЛокализуемыеРеквизитыОбъекта = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(МетаданныеОбъекта); - КонецЕсли; - - ПараметрыЗаполнения.Вставить("ЛокализуемыеРеквизитыОбъекта", ЛокализуемыеРеквизитыОбъекта); - МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя()); - ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта); - НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные); + ПараметрыЗаполнения = НаборПараметровДляЗаполненияОбъекта(МетаданныеОбъекта); + МенеджерОбъекта = ПараметрыЗаполнения.МенеджерОбъекта; + ПредопределенныеДанные = ПараметрыЗаполнения.ПредопределенныеДанные; + НастройкиЗаполнения = ПараметрыЗаполнения.НастройкиПредопределенныхЭлементов; + + ИмяКлючевогоРеквизита = НастройкиЗаполнения.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита; + + СуществующиеЭлементы = СуществующиеПоставляемыеЭлементы(ПредопределенныеДанные, НастройкиЗаполнения, МенеджерОбъекта, МетаданныеОбъекта); + ТабличныеЧасти = Новый Массив; ОбъектМетаданныхТабличныеЧасти = МетаданныеОбъекта.ТабличныеЧасти; // КоллекцияОбъектовМетаданных из ОбъектМетаданныхТабличнаяЧасть Для Каждого ТабличнаяЧасть Из ОбъектМетаданныхТабличныеЧасти Цикл @@ -1785,6 +1948,7 @@ КонецЕсли; ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено; + РеквизитыИсключения.Вставить("Родитель", Истина); // Поле заполняется отдельно РеквизитыИсключенияСЭлементами = Новый Соответствие; Если ПоддерживаетсяИерархия Тогда @@ -1797,14 +1961,24 @@ КонецЦикла; КонецЕсли; + ЕстьКолонкаСсылка = ПредопределенныеДанные.Колонки.Найти("Ссылка") <> Неопределено; + НачатьТранзакцию(); Попытка Для каждого СтрокаТаблицы Из ПредопределенныеДанные Цикл - Если ЗначениеЗаполнено(СтрокаТаблицы.ИмяПредопределенныхДанных) Тогда + СсылкаНаОбъект = Неопределено; + + Если НастройкиЗаполнения.ЕстьКолонкаИмяПредопределенныхДанных Тогда + СсылкаНаОбъект = СуществующиеЭлементы[СтрокаТаблицы.ИмяПредопределенныхДанных]; + КонецЕсли; + + Если СсылкаНаОбъект = Неопределено И ЗначениеЗаполнено(СтрокаТаблицы[ИмяКлючевогоРеквизита]) Тогда + СсылкаНаОбъект = СуществующиеЭлементы[СтрокаТаблицы[ИмяКлючевогоРеквизита]]; + КонецЕсли; - СсылкаНаОбъект = МенеджерОбъекта[СтрокаТаблицы.ИмяПредопределенныхДанных]; + Если СсылкаНаОбъект <> Неопределено Тогда БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(МетаданныеОбъекта.ПолноеИмя()); @@ -1813,27 +1987,53 @@ ЗаполняемыйЭлемент = СсылкаНаОбъект.ПолучитьОбъект(); - ИначеЕсли Не ОбновитьМультиязычныеСтроки Тогда + Иначе + Если ПоддерживаетсяИерархия И СтрокаТаблицы.ЭтоГруппа = Истина Тогда ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьГруппу(); Иначе ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьЭлемент(); КонецЕсли; - Иначе - Продолжить; + + Если ЕстьКолонкаСсылка И ЗначениеЗаполнено(СтрокаТаблицы.Ссылка) Тогда + ЗаполняемыйЭлемент.УстановитьСсылкуНового(СтрокаТаблицы.Ссылка); + Иначе + НоваяСсылка = МенеджерОбъекта.ПолучитьСсылку(); + ЗаполняемыйЭлемент.УстановитьСсылкуНового(НоваяСсылка); + КонецЕсли; + + СуществующиеЭлементы.Вставить(СтрокаТаблицы[ИмяКлючевогоРеквизита], НоваяСсылка); + КонецЕсли; Если Не ОбновитьМультиязычныеСтроки Тогда + Если ПоддерживаетсяИерархия И ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда + + Если ИмяКлючевогоРеквизита = "Ссылка" Тогда + Если ТипЗнч(СтрокаТаблицы.Родитель) = Тип("Строка") Тогда + ЗаполняемыйЭлемент.Родитель = МенеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаТаблицы.Родитель)); + ИначеЕсли ТипЗнч(СтрокаТаблицы.Родитель) = Тип("УникальныйИдентификатор") Тогда + ЗаполняемыйЭлемент.Родитель = МенеджерОбъекта.ПолучитьСсылку(СтрокаТаблицы.Родитель); + Иначе + ЗаполняемыйЭлемент.Родитель = СтрокаТаблицы.Родитель; + КонецЕсли; + ИначеЕсли ТипЗнч(СтрокаТаблицы.Родитель) = Тип("Строка") Тогда + ЗаполняемыйЭлемент.Родитель = СуществующиеЭлементы[СтрокаТаблицы.Родитель]; + Иначе + ЗаполняемыйЭлемент.Родитель = СтрокаТаблицы.Родитель; + КонецЕсли; + + КонецЕсли; + ПоляИсключения =?(ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа, РеквизитыИсключенияСЭлементами, РеквизитыИсключения); - ДанныеЗаполнения = ОпределитьДанныеЗаполнения(ПредопределенныеДанные, - СтрокаТаблицы, ПоляИсключения); + ДанныеЗаполнения = ОпределитьДанныеЗаполнения(ПредопределенныеДанные, СтрокаТаблицы, ПоляИсключения); ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, ДанныеЗаполнения); - Если НЕ (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда + Если Не (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда Для Каждого ИмяТабличнойЧасти Из ТабличныеЧасти Цикл Если СтрокаТаблицы[ИмяТабличнойЧасти].Количество() > 0 Тогда ЗаполняемыйЭлемент[ИмяТабличнойЧасти].Загрузить(СтрокаТаблицы[ИмяТабличнойЧасти]); @@ -1843,24 +2043,25 @@ КонецЕсли; - Если ЛокализуемыеРеквизитыОбъекта.Количество() > 0 И ЛокализуемыеРеквизитыОбъекта["Наименование"] <> Неопределено Тогда + Если ПараметрыЗаполнения.ЛокализуемыеРеквизитыОбъекта.Количество() > 0 И ПараметрыЗаполнения.ЛокализуемыеРеквизитыОбъекта["Наименование"] <> Неопределено Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); МодульМультиязычностьСервер.НачальноеЗаполнениеПредопределенныхДанныхЛокализуемыеРеквизиты( ЗаполняемыйЭлемент, ПоддерживаетсяИерархия, СтрокаТаблицы, ПараметрыЗаполнения); + ИначеЕсли ПараметрыЗаполнения.ОбъектСодержитТЧПредставления Тогда + НачальноеЗаполнениеТЧПредставления(ЗаполняемыйЭлемент, СтрокаТаблицы, ПараметрыЗаполнения); КонецЕсли; ИначеЕсли ОбновитьМультиязычныеСтроки И ПредопределенныеДанные.Колонки.Найти("Наименование") <> Неопределено И ЗначениеЗаполнено(СтрокаТаблицы["Наименование"]) Тогда ЗаполняемыйЭлемент["Наименование"] = СтрокаТаблицы["Наименование"]; КонецЕсли; - - Если Не ОбновитьМультиязычныеСтроки И НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда + Если Не ОбновитьМультиязычныеСтроки И НастройкиЗаполнения.ПереопределяемыеНастройки.ПриНачальномЗаполненииЭлемента Тогда - МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиПредопределенныхЭлементов.ДополнительныеПараметры); + МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиЗаполнения.ПереопределяемыеНастройки.ДополнительныеПараметры); ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлемента(МетаданныеОбъекта.ПолноеИмя(), - ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиПредопределенныхЭлементов.ДополнительныеПараметры); + ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиЗаполнения.ПереопределяемыеНастройки.ДополнительныеПараметры); КонецЕсли; @@ -1888,6 +2089,101 @@ КонецПроцедуры +Процедура НачальноеЗаполнениеТЧПредставления(ЗаполняемыйЭлемент, СтрокаТаблицы, ПараметрыЗаполнения) Экспорт + + Языки = СтандартныеПодсистемыСервер.ЯзыкиКонфигурации(); + ЛокализуемыеРеквизитыОбъекта = ПараметрыЗаполнения.ЛокализуемыеРеквизитыОбъекта; + + Для каждого КодЯзыка Из Языки Цикл + Если СтрСравнить(КодЯзыка, ОбщегоНазначения.КодОсновногоЯзыка()) = 0 Тогда + Продолжить; + КонецЕсли; + ПредставленияОбъекта = ЗаполняемыйЭлемент.Представления; // ТаблицаЗначений + НовоеПредставление = ПредставленияОбъекта.Добавить(); + НовоеПредставление.КодЯзыка = КодЯзыка; + Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл + Значение = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка]; + НовоеПредставление[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +Функция НаборПараметровДляЗаполненияОбъекта(МетаданныеОбъекта) Экспорт + + Результат = Новый Структура; + + ОбъектыСНачальнымЗаполнением = ОбъектыСНачальнымЗаполнением(); + ЕстьПредопределенныеДанные = ОбъектыСНачальнымЗаполнением.Найти(МетаданныеОбъекта) <> Неопределено; + + ЛокализуемыеРеквизитыОбъекта = Новый Соответствие; + МультиязычныеСтрокиВРеквизитах = Ложь; + ОбъектСодержитТЧПредставления = Ложь; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + ЛокализуемыеРеквизитыОбъекта = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(МетаданныеОбъекта); + МультиязычныеСтрокиВРеквизитах = МодульМультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(МетаданныеОбъекта); + ОбъектСодержитТЧПредставления = МодульМультиязычностьСервер.ОбъектСодержитТЧПредставления(МетаданныеОбъекта.ПолноеИмя()); + КонецЕсли; + + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя()); + + Если ЕстьПредопределенныеДанные Тогда + ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта); + НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные); + Иначе + ПредопределенныеДанные = Новый ТаблицаЗначений(); + НастройкиПредопределенныхЭлементов = Новый Структура; + КонецЕсли; + + ТабличныеЧасти = Новый Массив; + ОбъектМетаданныхТабличныеЧасти = МетаданныеОбъекта.ТабличныеЧасти; // КоллекцияОбъектовМетаданных из ОбъектМетаданныхТабличнаяЧасть + Для Каждого ТабличнаяЧасть Из ОбъектМетаданныхТабличныеЧасти Цикл + Если ПредопределенныеДанные.Колонки.Найти(ТабличнаяЧасть.Имя) <> Неопределено Тогда + ТабличныеЧасти.Добавить(ТабличнаяЧасть.Имя); + КонецЕсли; + КонецЦикла; + + РеквизитыИсключения = ?(СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик"), "ТипЗначения", ""); + ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено; + + ТЧПредставленияИспользуетсяДляГрупп = Ложь; + Если ОбъектСодержитТЧПредставления И ПоддерживаетсяИерархия Тогда + + Если МетаданныеОбъекта.ТабличныеЧасти.Представления.Использование = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппыИЭлемента + Или МетаданныеОбъекта.ТабличныеЧасти.Представления.Использование = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппы Тогда + ТЧПредставленияИспользуетсяДляГрупп = Истина; + КонецЕсли; + + КонецЕсли; + + РеквизитыСЭлементами = Новый Массив; + Если ПоддерживаетсяИерархия Тогда + ДляЭлемента = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента; + Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл + Если Реквизит.Использование = ДляЭлемента Тогда + РеквизитыСЭлементами.Добавить(Реквизит.Имя); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Результат.Вставить("НастройкиПредопределенныхЭлементов", НастройкиПредопределенныхЭлементов); + Результат.Вставить("ПредопределенныеДанные", ПредопределенныеДанные); + Результат.Вставить("РеквизитыИсключения", РеквизитыИсключения); + Результат.Вставить("ПоддерживаетсяИерархия", ПоддерживаетсяИерархия); + Результат.Вставить("ТабличныеЧасти", ТабличныеЧасти); + Результат.Вставить("ЛокализуемыеРеквизитыОбъекта", ЛокализуемыеРеквизитыОбъекта); + Результат.Вставить("МультиязычныеСтрокиВРеквизитах", МультиязычныеСтрокиВРеквизитах); + Результат.Вставить("ОбъектСодержитТЧПредставления", ОбъектСодержитТЧПредставления); + Результат.Вставить("ТЧПредставленияИспользуетсяДляГрупп", ТЧПредставленияИспользуетсяДляГрупп); + Результат.Вставить("МенеджерОбъекта", МенеджерОбъекта); + Результат.Вставить("РеквизитыСЭлементами", РеквизитыСЭлементами); + + Возврат Результат; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -2079,6 +2375,8 @@ ОбновлениеИнформационнойБазыПереопределяемый.ПередФормированиеСпискаОтложенныхОбработчиков(ИтерацииОбновления); Обработки.ОписаниеОбработчиковОбновления.ЗаполнитьНомерОчереди(ИтерацииОбновления); ОбновитьСписокВыполняемыхОбработчиковОбновления(ИтерацииОбновления); + СброситьПрогрессВыполненияОбработчиков(); + ОчиститьЗарегистрированныеПроблемыСДанными(); Если ПараметрыОбновления.ВФоне Тогда ДлительныеОперации.СообщитьПрогресс(10); @@ -3098,6 +3396,7 @@ СведенияОбОбновлении.НомерСеанса = Новый СписокЗначений; КонецЕсли; СведенияОбОбновлении.НомерСеанса.Добавить(НомерСеансаИнформационнойБазы()); + СведенияОбОбновлении.ДатаНачалаСеансаОбновления = ТекущаяДатаСеанса(); ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); // В сеансе регламентного задания проверка дат запрета изменения и загрузки отключается. @@ -3108,6 +3407,7 @@ ОбработчикиВыполнялись = Истина; + ДатаПоследнейПроверки = Неопределено; Попытка Если ФорсироватьОбновление(СведенияОбОбновлении) Тогда Группы = НовоеОписаниеГруппПотоковОбработчиковОтложенногоОбновления(); @@ -3126,6 +3426,12 @@ Прервать; КонецЕсли; + Если ДатаПоследнейПроверки = Неопределено + Или ТекущаяДатаСеанса() - ДатаПоследнейПроверки > 600 Тогда + ДатаПоследнейПроверки = ТекущаяДатаСеанса(); + ОчиститьПрогрессОбработкиЗаИнтервалыПредыдущегоДня(); + КонецЕсли; + Задание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); ТребуетсяВыполнение = Задание.Расписание.ТребуетсяВыполнение(ТекущаяДатаСеанса()); @@ -3134,8 +3440,10 @@ УдалитьВсеПотокиОбновления(); Прервать; КонецЕсли; + КонецЦикла; Иначе + ОчиститьПрогрессОбработкиЗаИнтервалыПредыдущегоДня(); ОбработчикиВыполнялись = ВыполнитьОтложенныйОбработчикОбновления(); КонецЕсли; Исключение @@ -3151,12 +3459,48 @@ КонецПроцедуры -Функция ОбработчикиДляОтложеннойРегистрацииДанных(БезФильтра = Ложь) Экспорт +Процедура ОчиститьПрогрессОбработкиЗаИнтервалыПредыдущегоДня() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИнтервалЧас", НачалоДня(ТекущаяДатаСеанса())); + Запрос.Текст = + "ВЫБРАТЬ + | ПрогрессОбновления.ИмяОбработчика КАК ИмяОбработчика, + | ПрогрессОбновления.ИнтервалЧас КАК ИнтервалЧас, + | ПрогрессОбновления.КлючЗаписи КАК КлючЗаписи + |ИЗ + | РегистрСведений.ПрогрессОбновления КАК ПрогрессОбновления + |ГДЕ + | ПрогрессОбновления.ИнтервалЧас < &ИнтервалЧас"; + Результат = Запрос.Выполнить().Выгрузить(); + + Для Каждого Строка Из Результат Цикл + МенеджерЗаписи = РегистрыСведений.ПрогрессОбновления.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.ИмяОбработчика = Строка.ИмяОбработчика; + МенеджерЗаписи.ИнтервалЧас = Строка.ИнтервалЧас; + МенеджерЗаписи.КлючЗаписи = Строка.КлючЗаписи; + МенеджерЗаписи.Удалить(); + КонецЦикла; + +КонецПроцедуры + +Функция ОбработчикиДляОтложеннойРегистрацииДанных(БезФильтра = Ложь, ПерезапускОбновления = Ложь, РегистрируемыеОбработчики = Неопределено) Экспорт + + Если РегистрируемыеОбработчики = Неопределено Тогда + РегистрируемыеОбработчики = Новый Массив; + КонецЕсли; + + ЭтоПодчиненныйУзелРИБСФильтром = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБСФильтром(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("РежимВыполненияОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно); Запрос.УстановитьПараметр("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно); Запрос.УстановитьПараметр("БезФильтра", БезФильтра); + Запрос.УстановитьПараметр("ЭтоПодчиненныйУзелРИБСФильтром", ЭтоПодчиненныйУзелРИБСФильтром); + // Отборы для перезапуска отложенного обновления. + Запрос.УстановитьПараметр("СтатусОбработчика", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.УстановитьПараметр("РегистрируемыеОбработчики", РегистрируемыеОбработчики); + Запрос.УстановитьПараметр("ОтключитьОтбор", (Не ПерезапускОбновления Или РегистрируемыеОбработчики.Количество() = 0)); Запрос.Текст = "ВЫБРАТЬ | ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика, @@ -3165,13 +3509,21 @@ | ОбработчикиОбновления.ПроцедураЗаполненияДанныхОбновления КАК ПроцедураЗаполненияДанныхОбновления, | ОбработчикиОбновления.ОчередьОтложеннойОбработки КАК ОчередьОтложеннойОбработки, | ОбработчикиОбновления.Многопоточный КАК Многопоточный, - | ОбработчикиОбновления.ОбрабатываемыеДанные КАК ОбрабатываемыеДанные + | ОбработчикиОбновления.ОбрабатываемыеДанные КАК ОбрабатываемыеДанные, + | ОбработчикиОбновления.Статус КАК Статус |ИЗ | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления |ГДЕ | ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения | И (ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОбработчика | ИЛИ &БезФильтра) + | И (ОбработчикиОбновления.Статус <> &СтатусОбработчика + | ИЛИ ОбработчикиОбновления.ИмяОбработчика В(&РегистрируемыеОбработчики) + | ИЛИ &ОтключитьОтбор) + | И (&ЭтоПодчиненныйУзелРИБСФильтром + | И ОбработчикиОбновления.ЗапускатьИВПодчиненномУзлеРИБСФильтрами + | ИЛИ НЕ &ЭтоПодчиненныйУзелРИБСФильтром) + | |УПОРЯДОЧИТЬ ПО | ОбработчикиОбновления.ОчередьОтложеннойОбработки"; Обработчики = Запрос.Выполнить().Выгрузить(); @@ -3228,7 +3580,8 @@ | ОбработчикиОбновления.ИтерацияЗапуска КАК ИтерацияЗапуска, | ОбработчикиОбновления.ОбрабатываемыеДанные КАК ОбрабатываемыеДанные, | ОбработчикиОбновления.СтатистикаВыполнения КАК СтатистикаВыполнения, - | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика КАК РежимВыполненияОтложенногоОбработчика + | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика КАК РежимВыполненияОтложенногоОбработчика, + | ОбработчикиОбновления.ИзменяемыеОбъекты КАК ИзменяемыеОбъекты |ИЗ | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления |ГДЕ @@ -3955,7 +4308,7 @@ // Возвращаемое значение: // см. НовоеОписаниеПотоков // -Функция НовоеОписаниеГруппПотоковОбработчиковОтложенногоОбновления() +Функция НовоеОписаниеГруппПотоковОбработчиковОтложенногоОбновления() Экспорт ГруппаОбновления = НовоеОписаниеГруппыПотоков(); ГруппаОбновления.Процедура = @@ -4377,6 +4730,8 @@ // * ПропуститьПроверкуОбработанныхДанных - Булево - пропустить проверку в подчиненном узле РИБ. // * ТекущаяИтерацияОбновления - Число - номер текущей итерации обновления. // * ТранзакцияАктивнаНаНачалоВыполнения - Булево - состояние активности транзакции перед выполнением обработчика. +// * ВерсияПодсистемыНаНачалоОбновления - Строка - версия подсистемы, к которой относится обработчик обновления, +// на момент начала обновления. // Функция НовыйКонтекстОбработчика() @@ -4403,6 +4758,7 @@ КонтекстОбработчика.Вставить("ПропуститьПроверкуОбработанныхДанных", Ложь); КонтекстОбработчика.Вставить("ТекущаяИтерацияОбновления"); КонтекстОбработчика.Вставить("ТранзакцияАктивнаНаНачалоВыполнения"); + КонтекстОбработчика.Вставить("ВерсияПодсистемыНаНачалоОбновления"); Возврат КонтекстОбработчика; @@ -5477,7 +5833,7 @@ КонецФункции -// Вырезать фрагмент таблицы значений в новую таблицу значений. +// Вырезать СуществующиеПоставляемыеЭлементы таблицы значений в новую таблицу значений. // // Параметры: // Таблица - ТаблицаЗначений - таблица из которой вырезаются строки. @@ -5921,12 +6277,10 @@ Продолжить; КонецЕсли; - НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные); - ДанныеЗапроса = РезультатЗапроса.Выбрать(); Пока ДанныеЗапроса.Следующий() Цикл - ПоставляемыеСведения = НастройкиПредопределенныхЭлементов.ДополнительныеПараметры.ПредопределенныеДанные.Найти(ДанныеЗапроса.ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных"); + ПоставляемыеСведения = ПредопределенныеДанные.Найти(ДанныеЗапроса.ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных"); Если ПоставляемыеСведения <> Неопределено Тогда @@ -5961,30 +6315,68 @@ КонецПроцедуры -Процедура ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, ОбновитьМультиязычныеСтроки = Ложь) Экспорт +// Заполнить объект начальными данными. +// +// Параметры: +// ЗаполняемыйОбъект - СправочникОбъект +// - ПланВидовХарактеристикОбъект +// НастройкиЗаполнения - см. ОбновлениеИнформационнойБазы.НастройкиЗаполнения +// +Процедура ЗаполнитьОбъектНачальнымиДанными(ЗаполняемыйОбъект, НастройкиЗаполнения) Экспорт + + Если ТипЗнч(ЗаполняемыйОбъект) = Тип("ДанныеФормыСтруктура") Тогда + Если ЗаполняемыйОбъект.Свойство("ИсходныйКлючЗаписи") Тогда + ТипОбъекта = ТипЗнч(ЗаполняемыйОбъект.ИсходныйКлючЗаписи); + Иначе + ТипОбъекта = ТипЗнч(ЗаполняемыйОбъект.Ссылка); + КонецЕсли; + Иначе + ТипОбъекта = ТипЗнч(ЗаполняемыйОбъект); + КонецЕсли; + + МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипОбъекта); + + НаборПараметровЗаполнения = НаборПараметровДляЗаполненияОбъекта(МетаданныеОбъекта); + + ЗаполнитьРеквизитыНачальнымиДанными(ЗаполняемыйОбъект, НаборПараметровЗаполнения, НастройкиЗаполнения); + +КонецПроцедуры + +Функция ИмяКлючевогоРеквизита(НаборДанныхДляЗаполнения) + + ИмяКлючевогоРеквизита = НаборДанныхДляЗаполнения.НастройкиПредопределенныхЭлементов.ИмяКлючевогоРеквизита; + Если Не ЗначениеЗаполнено(ИмяКлючевогоРеквизита) Тогда + ИмяКлючевогоРеквизита = "ИмяПредопределенныхДанных"; + КонецЕсли; + + Возврат ИмяКлючевогоРеквизита; + +КонецФункции + +Процедура ЗаполнитьЭлементыНачальнымиДанными(Параметры, ОбъектМетаданных, НастройкиЗаполнения) Экспорт СсылкиНаОбъекты = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ОбъектМетаданных.ПолноеИмя()); - Если ОбновитьМультиязычныеСтроки Тогда + Если НастройкиЗаполнения.ОбновитьТолькоМультиязычныеСтроки Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); Результат = МодульМультиязычностьСервер.ОбновитьМультиязычныеСтрокиПредопределенныхЭлементов(СсылкиНаОбъекты, ОбъектМетаданных); КонецЕсли; Иначе - Результат = ОбновитьЭлементыПредопределенныхЭлементов(СсылкиНаОбъекты, ОбъектМетаданных) + Результат = ОбновитьЭлементыПредопределенныхЭлементов(СсылкиНаОбъекты, ОбъектМетаданных, НастройкиЗаполнения); КонецЕсли; Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ОбъектМетаданных.ПолноеИмя()); Если Результат.ОбъектовОбработано = 0 И Результат.ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ОбновитьПредставленияПредопределенныхЭлементов не удалось обработать некоторые элементы(пропущены): %1'"), - Результат.ПроблемныхОбъектов); + НСтр("ru = 'Не удалось заполнить начальными данными некоторые элементы (пропущены): %1'"), + Результат.ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - ОбъектМетаданных,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура ОбновитьПредставленияПредопределенныхЭлементов обработала очередную порцию элементов: %1'"), + ОбъектМетаданных,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция элементов: %1'"), Результат.ОбъектовОбработано)); КонецЕсли; @@ -6055,55 +6447,118 @@ КонецФункции -Функция ОбновитьЭлементыПредопределенныхЭлементов(СсылкиНаОбъекты, МетаданныеОбъекта) +// Общие для начального заполнения + + +// Переопределяемые настройки заполнения элементов +// +// Возвращаемое значение: +// Структура: +// * ПриНачальномЗаполненииЭлемента - Булево +// * ИмяКлючевогоРеквизита - Строка +// * ДополнительныеПараметры - Структура +// +Функция ПользовательскиеНастройкиЗаполненияЭлементов() + + НастройкиЗаполненияЭлементов = Новый Структура; + НастройкиЗаполненияЭлементов.Вставить("ПриНачальномЗаполненииЭлемента", Ложь); + НастройкиЗаполненияЭлементов.Вставить("ИмяКлючевогоРеквизита", "ИмяПредопределенныхДанных"); + НастройкиЗаполненияЭлементов.Вставить("ДополнительныеПараметры", Новый Структура); + + Возврат НастройкиЗаполненияЭлементов; + +КонецФункции + +Процедура ЗаполнитьРеквизитыНачальнымиДанными(ЗаполняемыйЭлемент, НаборДанныхДляЗаполнения, НастройкиЗаполнения) + + ИмяКлючевогоРеквизита = ИмяКлючевогоРеквизита(НаборДанныхДляЗаполнения); + + ЗначениеКлючаОбъекта = ЗаполняемыйЭлемент[ИмяКлючевогоРеквизита]; + МенеджерОбъекта = НаборДанныхДляЗаполнения.МенеджерОбъекта; + + Если Не ЗначениеЗаполнено(ЗначениеКлючаОбъекта) Тогда + Возврат; + КонецЕсли; + + СтрокаТаблицы = НаборДанныхДляЗаполнения.ПредопределенныеДанные.Найти(ЗначениеКлючаОбъекта, ИмяКлючевогоРеквизита); + Если СтрокаТаблицы = Неопределено Тогда + Возврат; + КонецЕсли; + + КромеРеквизитов = НаборДанныхДляЗаполнения.РеквизитыИсключения; + Если НаборДанныхДляЗаполнения.ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа Тогда + КромеРеквизитов = НаборДанныхДляЗаполнения.РеквизитыИсключения + + ?(ПустаяСтрока(НаборДанныхДляЗаполнения.РеквизитыИсключения), "", ",") + СтрСоединить(НаборДанныхДляЗаполнения.РеквизитыСЭлементами, ","); + КонецЕсли; + + Если Не НастройкиЗаполнения.ОбновитьТолькоМультиязычныеСтроки Тогда + + Если ЗначениеЗаполнено(НастройкиЗаполнения.Реквизиты) Тогда + ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиЗаполнения.Реквизиты); + Иначе + ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, КромеРеквизитов); + КонецЕсли; + + Если НЕ (НаборДанныхДляЗаполнения.ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда + Для Каждого ИмяТабличнойЧасти Из НаборДанныхДляЗаполнения.ТабличныеЧасти Цикл + ЗаполняемыйЭлемент[ИмяТабличнойЧасти].Загрузить(СтрокаТаблицы[ИмяТабличнойЧасти]); + КонецЦикла; + КонецЕсли; + + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ЗаполнитьЭлементыМультиязычнымиНачальнымиДанными(ЗаполняемыйЭлемент, + НаборДанныхДляЗаполнения.ЛокализуемыеРеквизитыОбъекта, НаборДанныхДляЗаполнения.МультиязычныеСтрокиВРеквизитах, + НаборДанныхДляЗаполнения.ПоддерживаетсяИерархия, СтрокаТаблицы); + КонецЕсли; + + Если НаборДанныхДляЗаполнения.НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда + МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НаборДанныхДляЗаполнения.НастройкиПредопределенныхЭлементов.ДополнительныеПараметры); + КонецЕсли; + +КонецПроцедуры + + +// Обновить элементы предопределенных элементов в обработчиках обновления +// +// Параметры: +// СсылкиНаОбъекты - ВыборкаИзРезультатаЗапроса - ссылки на объекты: +// * Ссылка - ЛюбаяСсылка +// МетаданныеОбъекта - ОбъектМетаданных +// НастройкиЗаполнения - см. ОбновлениеИнформационнойБазы.НастройкиЗаполнения +// +// Возвращаемое значение: +// Структура - обновить элементы предопределенных элементов: +// * ПроблемныхОбъектов - Число +// * ОбъектовОбработано - Число +// +Функция ОбновитьЭлементыПредопределенныхЭлементов(СсылкиНаОбъекты, МетаданныеОбъекта, НастройкиЗаполнения) Результат = Новый Структура(); Результат.Вставить("ПроблемныхОбъектов", 0); Результат.Вставить("ОбъектовОбработано", 0); - ЛокализуемыеРеквизитыОбъекта = Новый Соответствие; - МультиязычныеСтрокиВРеквизитах = Ложь; - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда - МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); - ЛокализуемыеРеквизитыОбъекта = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(МетаданныеОбъекта); - МультиязычныеСтрокиВРеквизитах = МодульМультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(МетаданныеОбъекта); - КонецЕсли; + ПараметрыДляЗаполненияОбъекта = НаборПараметровДляЗаполненияОбъекта(МетаданныеОбъекта); - МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя()); - ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта); - НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные); - - ТабличныеЧасти = Новый Массив; - ОбъектМетаданныхТабличныеЧасти = МетаданныеОбъекта.ТабличныеЧасти; // КоллекцияОбъектовМетаданных из ОбъектМетаданныхТабличнаяЧасть - Для Каждого ТабличнаяЧасть Из ОбъектМетаданныхТабличныеЧасти Цикл - Если ПредопределенныеДанные.Колонки.Найти(ТабличнаяЧасть.Имя) <> Неопределено Тогда - ТабличныеЧасти.Добавить(ТабличнаяЧасть.Имя); - КонецЕсли; - КонецЦикла; - - РеквизитыИсключения = ?(СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик"), "ТипЗначения", ""); - ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено; - - РеквизитыСЭлементами = Новый Массив; - Если ПоддерживаетсяИерархия Тогда - ДляЭлемента = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента; - Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл - Если Реквизит.Использование = ДляЭлемента Тогда - РеквизитыСЭлементами.Добавить(Реквизит.Имя); - КонецЕсли; - КонецЦикла; - КонецЕсли; + ИмяКлючевогоРеквизита = ИмяКлючевогоРеквизита(ПараметрыДляЗаполненияОбъекта.НастройкиПредопределенныхЭлементов); + ПоддерживаетсяИерархия = ПараметрыДляЗаполненияОбъекта.ПоддерживаетсяИерархия; + РеквизитыИсключения = ПараметрыДляЗаполненияОбъекта.РеквизитыИсключения; + МенеджерОбъекта = ПараметрыДляЗаполненияОбъекта.МенеджерОбъекта; Пока СсылкиНаОбъекты.Следующий() Цикл - ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкиНаОбъекты.Ссылка, "ИмяПредопределенныхДанных"); - Если Не ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда + СсылкаНаОбъект = СсылкиНаОбъекты.Ссылка; + + ЗначениеКлючевогоРеквизита = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, ИмяКлючевогоРеквизита); + Если Не ЗначениеЗаполнено(ЗначениеКлючевогоРеквизита) Тогда Результат.ОбъектовОбработано = Результат.ОбъектовОбработано + 1; ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СсылкиНаОбъекты.Ссылка); Продолжить; КонецЕсли; - СтрокаТаблицы = ПредопределенныеДанные.Найти(ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных"); + СтрокаТаблицы = ПараметрыДляЗаполненияОбъекта.ПредопределенныеДанные.Найти(ЗначениеКлючевогоРеквизита, ИмяКлючевогоРеквизита); Если СтрокаТаблицы = Неопределено Тогда Результат.ОбъектовОбработано = Результат.ОбъектовОбработано + 1; ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СсылкиНаОбъекты.Ссылка); @@ -6124,13 +6579,17 @@ КромеРеквизитов = РеквизитыИсключения; Если ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа Тогда КромеРеквизитов = РеквизитыИсключения - + ?(ПустаяСтрока(РеквизитыИсключения), "", ",") + СтрСоединить(РеквизитыСЭлементами, ","); + + ?(ПустаяСтрока(РеквизитыИсключения), "", ",") + СтрСоединить(ПараметрыДляЗаполненияОбъекта.РеквизитыСЭлементами, ","); КонецЕсли; - ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, КромеРеквизитов); + Если ЗначениеЗаполнено(НастройкиЗаполнения.Реквизиты) Тогда + ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиЗаполнения.Реквизиты); + Иначе + ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, КромеРеквизитов); + КонецЕсли; Если НЕ (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда - Для Каждого ИмяТабличнойЧасти Из ТабличныеЧасти Цикл + Для Каждого ИмяТабличнойЧасти Из ПараметрыДляЗаполненияОбъекта.ТабличныеЧасти Цикл ЗаполняемыйЭлемент[ИмяТабличнойЧасти].Загрузить(СтрокаТаблицы[ИмяТабличнойЧасти]); КонецЦикла; КонецЕсли; @@ -6138,11 +6597,13 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); МодульМультиязычностьСервер.ЗаполнитьЭлементыМультиязычнымиНачальнымиДанными(ЗаполняемыйЭлемент, - ЛокализуемыеРеквизитыОбъекта, МультиязычныеСтрокиВРеквизитах, ПоддерживаетсяИерархия, СтрокаТаблицы); + ПараметрыДляЗаполненияОбъекта.ЛокализуемыеРеквизитыОбъекта, ПараметрыДляЗаполненияОбъекта.МультиязычныеСтрокиВРеквизитах, + ПоддерживаетсяИерархия, СтрокаТаблицы); КонецЕсли; - Если НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда - МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиПредопределенныхЭлементов.ДополнительныеПараметры); + Если ПараметрыДляЗаполненияОбъекта.НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда + МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, + ПараметрыДляЗаполненияОбъекта.НастройкиПредопределенныхЭлементов.ДополнительныеПараметры); КонецЕсли; ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ЗаполняемыйЭлемент); @@ -6169,25 +6630,135 @@ КонецФункции -// Общие для начального заполнения +Функция СуществующиеПоставляемыеЭлементы(ПредопределенныеДанные, НастройкиПредопределенныхЭлементов, Знач МенеджерОбъекта, МетаданныеОбъекта) + + Результат = Новый Соответствие(); + + ИмяКлючевогоРеквизита = НастройкиПредопределенныхЭлементов.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита; + ЕстьКолонкаИмяПредопределенныхДанных = НастройкиПредопределенныхЭлементов.ЕстьКолонкаИмяПредопределенныхДанных; + + ИменаПредопределенных = МетаданныеОбъекта.ПолучитьИменаПредопределенных(); + + НаборКлючей = Новый ТаблицаЗначений(); + Если ИмяКлючевогоРеквизита <> "Ссылка" Тогда + НаборКлючей.Колонки.Добавить("Ключ", ОбщегоНазначения.ОписаниеТипаСтрока(150)); + Иначе + + Массив = Новый Массив; + Массив.Добавить(ТипЗнч(МенеджерОбъекта.ПустаяСсылка())); + НаборКлючей.Колонки.Добавить("Ключ", Новый ОписаниеТипов(Массив)); + + КонецЕсли; + + Результат = Новый Соответствие(); + + Если СтрСравнить(ИмяКлючевогоРеквизита, "ИмяПредопределенныхДанных") <> 0 Тогда + + Для Каждого ПредопределенныйЭлемент Из ПредопределенныеДанные Цикл + + Если ЕстьКолонкаИмяПредопределенныхДанных + И ЗначениеЗаполнено(ПредопределенныйЭлемент.ИмяПредопределенныхДанных) + И ИменаПредопределенных.Найти(ПредопределенныйЭлемент.ИмяПредопределенныхДанных) <> Неопределено Тогда + Результат.Вставить(ПредопределенныйЭлемент.ИмяПредопределенныхДанных, МенеджерОбъекта[ПредопределенныйЭлемент.ИмяПредопределенныхДанных]); + Продолжить; + КонецЕсли; + + Если ЗначениеЗаполнено(ПредопределенныйЭлемент[ИмяКлючевогоРеквизита]) Тогда + + НоваяСтрока = НаборКлючей.Добавить(); + НоваяСтрока.Ключ = ПредопределенныйЭлемент[ИмяКлючевогоРеквизита]; + КонецЕсли; + + КонецЦикла; + + Если НаборКлючей.Количество() > 0 Тогда + + Запрос = Новый Запрос; + ТекстЗапроса = "ВЫБРАТЬ + | НаборКлючей.Ключ КАК ИмяКлючевогоРеквизита + |ПОМЕСТИТЬ НаборКлючей + |ИЗ + | &НаборКлючей КАК НаборКлючей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЕСТЬNULL(ТаблицаДанных.Ссылка, НЕОПРЕДЕЛЕНО) КАК Ссылка, + | НаборКлючей.ИмяКлючевогоРеквизита КАК ИмяКлючевогоРеквизита + |ИЗ + | НаборКлючей КАК НаборКлючей + | ЛЕВОЕ СОЕДИНЕНИЕ #Таблица КАК ТаблицаДанных + | ПО НаборКлючей.ИмяКлючевогоРеквизита = &ИмяПоля"; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяПоля", "ТаблицаДанных." + ИмяКлючевогоРеквизита); + Запрос.Текст = СтрЗаменить(ТекстЗапроса, "#Таблица", МетаданныеОбъекта.ПолноеИмя()); + Запрос.УстановитьПараметр("НаборКлючей", НаборКлючей); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Результат.Вставить(ВыборкаДетальныеЗаписи.ИмяКлючевогоРеквизита, ВыборкаДетальныеЗаписи.Ссылка); + КонецЦикла; + + КонецЕсли; + + ИначеЕсли ЕстьКолонкаИмяПредопределенныхДанных Тогда + + Для Каждого ПоставляемыйЭлемент Из ПредопределенныеДанные Цикл + + Если ЗначениеЗаполнено(ПоставляемыйЭлемент["ИмяПредопределенныхДанных"]) Тогда + Результат.Вставить(ПоставляемыйЭлемент["ИмяПредопределенныхДанных"], МенеджерОбъекта[ПоставляемыйЭлемент[ИмяКлючевогоРеквизита]]); + Продолжить; + КонецЕсли; + КонецЦикла; + + КонецЕсли; + + Возврат Результат; -// Общие для начального заполнения +КонецФункции Процедура ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизиты, Языки) - ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип); + Если СтрСравнить(Реквизит.Имя, "Родитель") = 0 Тогда + МассивТипов = Новый Массив; + Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл + МассивТипов.Добавить(ТипРеквизита); + КонецЦикла; + МассивТипов.Добавить(Тип("Строка")); + + ПараметрыСтроки = Новый КвалификаторыСтроки(150); + ТипРеквизита = Новый ОписаниеТипов(МассивТипов,, ПараметрыСтроки); + ИначеЕсли СтрСравнить(Реквизит.Имя, "Ссылка") = 0 Тогда + МассивТипов = Новый Массив; + Для Каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл + МассивТипов.Добавить(ТипРеквизита); + КонецЦикла; + МассивТипов.Добавить(Тип("Строка")); + МассивТипов.Добавить(Тип("УникальныйИдентификатор")); + + ПараметрыСтроки = Новый КвалификаторыСтроки(150); + ТипРеквизита = Новый ОписаниеТипов(МассивТипов,, ПараметрыСтроки); + Иначе + ТипРеквизита = Реквизит.Тип; + КонецЕсли; + + ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, ТипРеквизита); Если ЛокализуемыеРеквизиты[Реквизит.Имя] = Неопределено Тогда Возврат; КонецЕсли; - + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); Иначе Возврат; КонецЕсли; - - Для каждого Язык Из Языки Цикл - ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя + "_" + Язык, Реквизит.Тип, МодульМультиязычностьСервер.ПризнакЛокализуемогоРеквизита()); + + Для Каждого Язык Из Языки Цикл + ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя + "_" + Язык, Реквизит.Тип, + МодульМультиязычностьСервер.ПризнакЛокализуемогоРеквизита()); КонецЦикла; КонецПроцедуры @@ -7102,19 +7673,19 @@ //////////////////////////////////////////////////////////////////////////////// // Протоколирование хода обновления. -Процедура ЗаписатьИнформацию(Знач Текст) +Процедура ЗаписатьИнформацию(Знач Текст) Экспорт ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, Текст); КонецПроцедуры -Процедура ЗаписатьОшибку(Знач Текст) +Процедура ЗаписатьОшибку(Знач Текст) Экспорт ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, Текст); КонецПроцедуры -Процедура ЗаписатьПредупреждение(Знач Текст) +Процедура ЗаписатьПредупреждение(Знач Текст) Экспорт ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,,, Текст); @@ -7330,6 +7901,45 @@ //////////////////////////////////////////////////////////////////////////////// // Вспомогательные процедуры и функции отложенного обновления. +Процедура ОбработчикПроверкиВеденияУчета(Проверка, ПараметрыПроверки) Экспорт + + // Обработка не требуется, регистрация проблемных объектов выполняется + // из обработчиков обновления. + Возврат; + +КонецПроцедуры + +Функция КоличествоПроблемСДанными() Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда + Возврат 0; + КонецЕсли; + + МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета"); + Проверка = МодульКонтрольВеденияУчета.ПроверкаПоИдентификатору("ОбновлениеИнформационнойБазыПроблемаСДанными"); + КоличествоПроблем = МодульКонтрольВеденияУчета.КоличествоПроблемПоПравилуПроверки(Проверка); + + Возврат КоличествоПроблем; + +КонецФункции + +Процедура ОчиститьЗарегистрированныеПроблемыСДанными() + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета"); + + Проверка = МодульКонтрольВеденияУчета.ПроверкаПоИдентификатору("ОбновлениеИнформационнойБазыПроблемаСДанными"); + МодульКонтрольВеденияУчета.ОчиститьРезультатПоПроверке(Проверка); + +КонецПроцедуры + // Только для внутреннего использования. // Функция ВыполнитьОтложенныйОбработчикОбновления(ПараметрыОбновления = Неопределено) @@ -7519,6 +8129,8 @@ СведенияОбОбновлении.Вставить("СеансОбновления"); СведенияОбОбновлении.Вставить("ВерсияУдалениеПатчей"); СведенияОбОбновлении.Вставить("ЗависимостьГруппОбработчиков", Новый Соответствие); + СведенияОбОбновлении.Вставить("ВерсииПодсистемНаНачалоОбновления", Новый Соответствие); + СведенияОбОбновлении.Вставить("ДатаНачалаСеансаОбновления", Неопределено); Если ТипЗнч(СтарыеСведения) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(СведенияОбОбновлении, СтарыеСведения); @@ -7587,9 +8199,12 @@ КонтекстОбработчика.ЗаписыватьВЖурнал = Константы.ДетализироватьОбновлениеИБВЖурналеРегистрации.Получить(); КонтекстОбработчика.ТранзакцияАктивнаНаНачалоВыполнения = ТранзакцияАктивна(); - ИмяОбработчика = ОбработчикОбновления.ИмяОбработчика; Попытка + ИмяОбработчика = ОбработчикОбновления.ИмяОбработчика; + ВерсииПодсистемНаНачалоОбновления = СведенияОбОбновлении.ВерсииПодсистемНаНачалоОбновления; + ВерсияПодсистемыНаНачалоОбновления = ВерсииПодсистемНаНачалоОбновления[ОбработчикОбновления.ИмяБиблиотеки]; + КонтекстОбработчика.ЗапускВыполненБезОшибок = Истина; СообщениеОЗапущенномОбработчике = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Выполняется процедура обновления ""%1"".'"), ИмяОбработчика); ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), @@ -7619,7 +8234,9 @@ Параметры.Вставить("ОбработкаЗавершена", Истина); КонецЕсли; + Параметры.Вставить("ИмяОбработчика", ИмяОбработчика); Параметры.Вставить("ПрогрессВыполнения", ПрогрессВыполнения); + Параметры.Вставить("ВерсияПодсистемыНаНачалоОбновления", ВерсияПодсистемыНаНачалоОбновления); Параметры.Вставить("Очередь", ОбработчикОбновления.ОчередьОтложеннойОбработки); @@ -7882,6 +8499,7 @@ СведенияОБлокируемыхОбъектах = Новый Структура; СведенияОБлокируемыхОбъектах.Вставить("БлокируемыеОбъекты", Новый Соответствие); СведенияОБлокируемыхОбъектах.Вставить("Обработчики", Новый Соответствие); + СведенияОБлокируемыхОбъектах.Вставить("РазблокированныеОбъекты", Новый Соответствие); Если ТипЗнч(СтарыеСведения) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(СведенияОБлокируемыхОбъектах, СтарыеСведения); @@ -7905,7 +8523,7 @@ КонецПроцедуры -Процедура ЗаполнитьДанныеДляПараллельногоОтложенногоОбновления(Параметры) +Процедура ЗаполнитьДанныеДляПараллельногоОтложенногоОбновления(Параметры) Экспорт Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда ОтметитьРегистрациюОтложенныхОбработчиковОбновления(); @@ -7923,9 +8541,15 @@ КонецЕсли; КонецЕсли; + ПерезапускОбновления = Параметры.Свойство("ПерезапускОбновления"); + РегистрируемыеОбработчики = Новый Массив; + Если Параметры.Свойство("РегистрируемыеОбработчики") Тогда + РегистрируемыеОбработчики = Параметры.РегистрируемыеОбработчики; + КонецЕсли; + УдалитьВсеПотокиОбновления(); - Если Не (СтандартныеПодсистемыПовтИсп.ИспользуетсяРИБ("СФильтром") И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()) Тогда + Если Не (СтандартныеПодсистемыПовтИсп.ИспользуетсяРИБ("СФильтром") И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()) И Не ПерезапускОбновления Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ @@ -7949,7 +8573,7 @@ ПараметрыИнициализированы = Ложь; - Обработчики = ОбработчикиДляОтложеннойРегистрацииДанных(); + Обработчики = ОбработчикиДляОтложеннойРегистрацииДанных(Ложь, ПерезапускОбновления, РегистрируемыеОбработчики); Для Каждого Обработчик Из Обработчики Цикл @@ -7966,7 +8590,9 @@ КонецЕсли; ПараметрыОбработчикаСтруктура.Очередь = Обработчик.ОчередьОтложеннойОбработки; + ПараметрыОбработчикаСтруктура.ИмяОбработчика = Обработчик.ИмяОбработчика; ПараметрыОбработчикаСтруктура.Вставить("ДанныеОбработчика", Новый Соответствие); + ПараметрыОбработчикаСтруктура.Вставить("ПерезапускОбновления", ПерезапускОбновления); Если Обработчик.Многопоточный Тогда ПараметрыОбработчикаСтруктура.ПараметрыВыборки = @@ -7994,14 +8620,17 @@ КонецЕсли; // Запись прогресса обновления. - Если Параметры.ВФоне Тогда + Если Не ПерезапускОбновления И Параметры.ВФоне Тогда ХодВыполненияОбработчиков = Параметры.ХодВыполненияОбработчиков; ХодВыполненияОбработчиков.ВыполненоОбработчиков = ХодВыполненияОбработчиков.ВыполненоОбработчиков + 1; Прогресс = 10 + ХодВыполненияОбработчиков.ВыполненоОбработчиков / ХодВыполненияОбработчиков.ВсегоОбработчиков * 90; ДлительныеОперации.СообщитьПрогресс(Прогресс); КонецЕсли; Исключение - ОтметитьРегистрациюОтложенныхОбработчиковОбновления(Обработчик.ИмяБиблиотеки, Ложь); + Если Не ПерезапускОбновления Тогда + ОтметитьРегистрациюОтложенныхОбработчиковОбновления(Обработчик.ИмяБиблиотеки, Ложь); + КонецЕсли; + ЗаписатьОшибку(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При вызове процедуры заполнения данных |""%1"" @@ -8029,7 +8658,9 @@ КонецЦикла; - ОтметитьРегистрациюОтложенныхОбработчиковОбновления(); + Если Не ПерезапускОбновления Тогда + ОтметитьРегистрациюОтложенныхОбработчиковОбновления(); + КонецЕсли; Если ПараметрыИнициализированы И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); @@ -8097,6 +8728,7 @@ КонецЕсли; ПараметрыОтметкиКОбработке.Очередь = ОписаниеОбрабатываемыхДанных.Очередь; + ПараметрыОтметкиКОбработке.ИмяОбработчика = ОписаниеОбрабатываемыхДанных.ИмяОбработчика; ПараметрыОтметкиКОбработке.Вставить("ДанныеОбработчика", Новый Соответствие); МногопоточныйРежим = ЭтоОписаниеДанныхМногопоточногоОбработчика(ОписаниеОбрабатываемыхДанных); @@ -8177,14 +8809,20 @@ РежимВыполненияОтложенныхОбработчиков = "Последовательно"; КонецЕсли; + ПолучениеСвойств = Новый Структура; + ПолучениеСвойств.Вставить("ИзменяемыеОбъекты", ""); + ЗаполнитьЗначенияСвойств(ПолучениеСвойств, ОбработчикОбновления); + ПараметрыОбработчикаОбновления = НовыеПараметрыОбработчикаОбновления(); ПараметрыОбработчикаОбновления.ЗапускатьТолькоВГлавномУзле = ОбработчикОбновления.ЗапускатьТолькоВГлавномУзле; ПараметрыОбработчикаОбновления.ЗапускатьИВПодчиненномУзлеРИБСФильтрами = ОбработчикОбновления.ЗапускатьИВПодчиненномУзлеРИБСФильтрами; ПараметрыОбработчикаОбновления.ОчередьОтложеннойОбработки = ОбработчикОбновления.ОчередьОтложеннойОбработки; ПараметрыОбработчикаОбновления.РежимВыполнения = РежимВыполнения; ПараметрыОбработчикаОбновления.РежимВыполненияОтложенныхОбработчиков = РежимВыполненияОтложенныхОбработчиков; + ПараметрыОбработчикаОбновления.КлючЗаписиПрогрессаОбновления = Новый УникальныйИдентификатор; ПараметрыОбработчикаОбновления.ЕстьОбработанныеОбъекты = Ложь; ПараметрыОбработчикаОбновления.ИмяОбработчика = ИмяОбработчика; + ПараметрыОбработчикаОбновления.ИзменяемыеОбъекты = УникальныеЗначенияЧерезЗапятую(ПолучениеСвойств.ИзменяемыеОбъекты); ПараметрыСеанса.ПараметрыОбработчикаОбновления = Новый ФиксированнаяСтруктура(ПараметрыОбработчикаОбновления); @@ -8198,7 +8836,9 @@ ПараметрыОбработчикаОбновления.Вставить("РежимВыполнения", ""); ПараметрыОбработчикаОбновления.Вставить("РежимВыполненияОтложенныхОбработчиков", ""); ПараметрыОбработчикаОбновления.Вставить("ЕстьОбработанныеОбъекты", Ложь); + ПараметрыОбработчикаОбновления.Вставить("КлючЗаписиПрогрессаОбновления", Неопределено); ПараметрыОбработчикаОбновления.Вставить("ИмяОбработчика", ""); + ПараметрыОбработчикаОбновления.Вставить("ИзменяемыеОбъекты", ""); Возврат ПараметрыОбработчикаОбновления; КонецФункции @@ -8230,7 +8870,7 @@ Если ЧислоПопыток < МаксимумПопытокОбновления Тогда ЗаписатьПредупреждение(ПодробноеПредставлениеОшибки); Иначе - ЗаписатьОшибку(ПодробноеПредставлениеОшибки); + ОбновлениеИнформационнойБазы.ЗаписатьСобытиеВЖурналРегистрации(ПодробноеПредставлениеОшибки, , КонтекстОбработчика.Параметры); КонецЕсли; Свойства = Новый Структура; @@ -8241,10 +8881,11 @@ КонецПроцедуры -// Обработать фрагмент, полученный в результате разбиения результата поиска данных для обновления, в отдельном потоке. +// Обработать СуществующиеПоставляемыеЭлементы, полученный в результате разбиения результата поиска данных для +// обновления, в отдельном потоке. // // Параметры: -// Фрагмент - Массив из см. НовыйНаборПорцийДляОбновления +// СуществующиеПоставляемыеЭлементы - Массив из см. НовыйНаборПорцийДляОбновления // ОписаниеПотоков - см. НовоеОписаниеПотоков // КонтекстОбработчика - см. НовыйКонтекстОбработчика // @@ -8531,4 +9172,79 @@ КонецФункции -#КонецОбласти \ No newline at end of file +Функция РасшифровкаЯчейки(Статус, ЕстьОшибки, ПроблемаВДанных) Экспорт + Массив = Новый Массив; + Массив.Добавить(Статус); + Массив.Добавить(ЕстьОшибки); + Массив.Добавить(ПроблемаВДанных); + Возврат Массив; +КонецФункции + +Процедура СброситьПрогрессВыполненияОбработчиков() + + Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + Набор = РегистрыСведений.ПрогрессОбновления.СоздатьНаборЗаписей(); + Набор.Записать(); + +КонецПроцедуры + +Процедура ДобавитьИнформациюОбОшибкеВОбработчике(ИмяОбработчика) Экспорт + + Если Не ЗначениеЗаполнено(ИмяОбработчика) Тогда + ТекстОшибки = НСтр("ru = 'Не удалось сохранить информацию об ошибке в обработчике + |по причине: + |Возможно вызов выполняется не из обработчика обновления.'"); + ЗаписатьОшибку(ТекстОшибки); + Возврат; + КонецЕсли; + + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировкиДанных = БлокировкаДанных.Добавить("РегистрСведений.ОбработчикиОбновления"); + ЭлементБлокировкиДанных.УстановитьЗначение("ИмяОбработчика", ИмяОбработчика); + НачатьТранзакцию(); + Попытка + БлокировкаДанных.Заблокировать(); + + МенеджерЗаписи = РегистрыСведений.ОбработчикиОбновления.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.ИмяОбработчика = ИмяОбработчика; + МенеджерЗаписи.Прочитать(); + + СтатистикаВыполнения = МенеджерЗаписи.СтатистикаВыполнения; + СтатистикаВыполнения = СтатистикаВыполнения.Получить(); + СтатистикаВыполнения.Вставить("ЕстьОшибки", Истина); + МенеджерЗаписи.СтатистикаВыполнения = Новый ХранилищеЗначения(СтатистикаВыполнения); + МенеджерЗаписи.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = НСтр("ru = 'Не удалось сохранить информацию об ошибке в обработчике %1 + |по причине: + |%2'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИмяОбработчика, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЗаписатьОшибку(ТекстОшибки); + КонецПопытки + +КонецПроцедуры + +Процедура Пауза(Секунд) Экспорт + + ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); + ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); + + Если ФоновоеЗадание = Неопределено Тогда + Параметры = Новый Массив; + Параметры.Добавить(Секунд); + ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбновлениеИнформационнойБазыСлужебный.Пауза", Параметры); + КонецЕсли; + + ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВызовСервера/Module.bsl index 8092da9ec..81d878fcd 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВызовСервера/Module.bsl @@ -48,4 +48,64 @@ КонецПроцедуры +Функция ДанныеРасшифровкиОтчета(ДанныеРасшифровки, ИндексРасшифровки, Кеш = Неопределено, КешПриоритетов = Неопределено) Экспорт + Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); + Если ИндексРасшифровки = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + Расшифровка = Данные.Элементы[ИндексРасшифровки].ПолучитьПоля(); + Если Расшифровка.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + НачалоОбновления = СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления; + + ЗначениеРасшифровки = Расшифровка.Получить(0); + Результат = Новый Структура; + Результат.Вставить("ИмяПоля", ЗначениеРасшифровки.Поле); + Результат.Вставить("Значение", ЗначениеРасшифровки.Значение); + Результат.Вставить("НачалоОбновления", НачалоОбновления); + Результат.Вставить("Кеш", Кеш); + Результат.Вставить("КешПриоритетов", КешПриоритетов); + + Возврат Результат; +КонецФункции + +Процедура РазблокироватьОбъектДляРедактирования(МассивОбъектов) Экспорт + + МетаданныеИОтборПоДанным = Неопределено; + Для Каждого Объект Из МассивОбъектов Цикл + МетаданныеИОтборПоДанным = ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным(Объект); + КонецЦикла; + + Если МетаданныеИОтборПоДанным = Неопределено Тогда + Возврат; + КонецЕсли; + + Блокировка = Новый БлокировкаДанных; + Блокировка.Добавить("Константа.СведенияОБлокируемыхОбъектах"); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + + СведенияОБлокируемыхОбъектах = ОбновлениеИнформационнойБазыСлужебный.СведенияОБлокируемыхОбъектах(); + РазблокированныеОбъекты = СведенияОБлокируемыхОбъектах.РазблокированныеОбъекты[МетаданныеИОтборПоДанным.ПолноеИмя]; // Массив. + Если РазблокированныеОбъекты = Неопределено Тогда + РазблокированныеОбъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(МетаданныеИОтборПоДанным.Отбор); + Иначе + РазблокированныеОбъекты.Добавить(МетаданныеИОтборПоДанным.Отбор); + КонецЕсли; + + СведенияОБлокируемыхОбъектах.РазблокированныеОбъекты[МетаданныеИОтборПоДанным.ПолноеИмя] = РазблокированныеОбъекты; + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОБлокируемыхОбъектах(СведенияОБлокируемыхОбъектах); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииВызовСервера/Module.bsl index 8bc45840a..e671598dc 100644 --- a/SSL/src/CommonModules/ОбновлениеКонфигурацииВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииВызовСервера/Module.bsl @@ -143,7 +143,7 @@ ОбновлениеКонфигурации.СохранитьНастройкиОбновленияКонфигурации(Настройки); КонецПроцедуры -Процедура ОбновитьИсправленияИзСкрипта(НовыеИсправления, УдаляемыеИсправления) Экспорт +Процедура ОбновитьИсправленияИзСкрипта(НовыеИсправления, УдаляемыеИсправления) Экспорт // АПК:557 для вызова из скрипта ОбновлениеКонфигурации.ОбновитьИсправленияИзСкрипта(НовыеИсправления, УдаляемыеИсправления); КонецПроцедуры @@ -158,14 +158,6 @@ // Процедура УдалитьИсправленияИзСкрипта() Экспорт - Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() - И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Тогда - ТекстСообщения = НСтр("ru = 'Удаление исправлений до запуска обновления программы не выполнялось. - |На используемой версии платформы работа с патчами не поддерживается.'"); - ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, ТекстСообщения); - Возврат; - КонецЕсли; - ТекстСообщения = НСтр("ru = 'Начато удаление исправлений до запуска обновления программы.'"); ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, ТекстСообщения); @@ -197,79 +189,92 @@ Функция СообщенияСкриптов() Сообщения = Новый Соответствие; + + // Сообщения в макетах МакетФайлаОбновленияКонфигурации, НеинтерактивноеОбновлениеКонфигурации, ЗаставкаОбновленияКонфигурации + Сообщения["[СообщениеНачалоЗапуска]"] = НСтр("ru = 'Запускается: {0}; параметры: {1}; окно: {2}; ожидание: {3}'"); + Сообщения["[СообщениеДеталиИсключения]"] = НСтр("ru = 'Исключение при запуске приложения: {0}, {1}'"); + Сообщения["[СообщениеРезультатЗапуска]"] = НСтр("ru = 'Код возврата: {0}'"); + Сообщения["[СообщениеПутьКФайлуСкрипта]"] = НСтр("ru = 'Файл скрипта: {0}'"); + Сообщения["[СообщениеСчетчикФайловОбновления]"] = НСтр("ru = 'Количество файлов обновления: {0}'"); + Сообщения["[СообщениеВосстановлениеБазы]"] = НСтр("ru = 'Восстановление ИБ из временного архива'"); + Сообщения["[СообщениеНачалоСеансаСоединенияСБазой]"] = НСтр("ru = 'Начат сеанс внешнего соединения с ИБ'"); + Сообщения["[СообщениеУдалениеЗадачиПланировщика]"] = НСтр("ru = 'Удаление задачи планировщика задач: {0}'"); + Сообщения["[СообщениеОтказУдаленияЗадачиПланировщика]"] = НСтр("ru = 'Ошибка при удалении задачи из планировщика задач: {0}'"); + Сообщения["[СообщениеОтказСоединенияСБазой]"] = НСтр("ru = 'Исключение при создании COM-соединения: {0}, {1}'"); + Сообщения["[СообщениеВызовЗавершитьОбновление]"] = "ОбновлениеКонфигурации.ЗавершитьОбновление" + "({0}, {1}, {2})"; + Сообщения["[СообщениеОтказПриВызовеЗавершитьОбновление]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}'"), "ОбновлениеКонфигурации.ЗавершитьОбновление"); + Сообщения["[СообщениеРезультатОбновленияБазы]"] = НСтр("ru = 'Обновление информационной базы завершилась успешно'"); + Сообщения["[СообщениеОтказОбновленияБазы]"] = НСтр("ru = 'Ошибка при обновлении информационной базы'"); + Сообщения["[СообщениеПараметрыБазы]"] = НСтр("ru = 'Параметры информационной базы: {0}.'"); + Сообщения["[СообщениеОтказЛогирования]"] = НСтр("ru = 'Исключение при записи журнала: {0}, {1}'"); + Сообщения["[СообщениеОбновлениеЛогирование1С]"] = НСтр("ru = 'Протокол обновления сохранен в журнал регистрации.'"); + Сообщения["[СообщениеКопированиеБазы]"] = НСтр("ru = '\r\n\Выполняется копирование из:\r\n\{0}\r\n\в:\r\n\{1}'"); + Сообщения["[СообщениеФайлБазыНеСуществует]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файл базы данных %1 не существует по пути: {0}'"), "1Cv8.1CD"); + Сообщения["[СообщениеКаталогРезервнойКопииБазыНеСуществует]"] = НСтр("ru = 'Папки для сохранения резервной копии не существует: {0}'"); + Сообщения["[СообщениеПараметрыФайлаРезервнойКопии]"] = НСтр("ru = '\r\n\Файл резервной копии уже существует: {0}\r\n\Создан: {1}\r\n\Последнее обращение: {2}\r\n\Последнее изменение: {3}\r\n\Размер: {4}\r\n\Тип: {5}\r\n\Атрибуты:\r\n\{6}'"); + Сообщения["[СообщениеДискНеСуществует]"] = НСтр("ru = '\r\n\Диск не найден по пути {0}\r\n\Исключение: {1}, {2}'"); + Сообщения["[СообщениеДискНедоступен]"] = НСтр("ru = 'Диск не доступен по пути {0}'"); + Сообщения["[СообщениеДисковогоПространстваНедостаточно]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '\r\n\Недостаточно свободного места для создания резервной копии.\r\n\Освободите место или укажите папку на другом диске.\r\n\Требуется: {0} Mb\r\n\Доступно на диске {1}: {2} Mb\r\n\Размер файла %1: {3} Mb\r\n\Тип диска: {4}'"), "1Cv8.1CD"); + Сообщения["[СообщениеРезультатСозданияРезервнойКопииБазы]"] = НСтр("ru = 'Резервная копия базы создана'"); + Сообщения["[СообщениеОтказСозданияРезервнойКопииБазыПодробно]"] = НСтр("ru = 'Исключение при создании резервной копии базы: {0}, {1}'"); + Сообщения["[СообщениеРезультатВосстановленияБазы]"] = НСтр("ru = 'База данных восстановлена из резервной копии'"); + Сообщения["[СообщениеОтказВосстановленияБазыПодробно]"] = НСтр("ru = 'Исключение при восстановлении базы из резервной копии: {0}, {1}.'"); + Сообщения["[СообщениеВызовРазрешитьРаботуПользователей]"] = "СоединенияИБ.РазрешитьРаботуПользователей"; + Сообщения["[СообщениеОтказВызоваРазрешитьРаботуПользователей]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}'"), "СоединенияИБ.РазрешитьРаботуПользователей"); + Сообщения["[СообщениеОтказОбновленияИсправлений]"] = НСтр("ru = 'Не удалось обновить исправления конфигурации. Подробности см. в предыдущей записи.'"); + Сообщения["[СообщениеОтказВызоваОбновитьИсправленияИзСкрипта]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}'"), "ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта"); + Сообщения["[СообщениеВызовВыполнитьОбновлениеИнформационнойБазы]"] = "ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы" + "({0})"; + Сообщения["[СообщениеОтказВызоваВыполнитьОбновлениеИнформационнойБазы]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}.'"), "ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы"); + Сообщения["[СообщениеОтказОбновленияБазыОбщее]"] = НСтр("ru = 'При выполнении обновления информационной базы произошла ошибка:'"); + Сообщения["[СообщениеБлокировкаБазы]"] = НСтр("ru = 'в связи с необходимостью обновления конфигурации'"); + Сообщения["[СообщениеОтказЗавершенияРаботыПользователей]"] = НСтр("ru = 'Попытка завершения работы пользователей завершилась безуспешно: отменена блокировка ИБ.'"); + Сообщения["[СообщениеОтменаБлокировкиРаботыПользователей]"] = НСтр("ru = 'Исключение при завершении работы пользователей: {0}, {1}'"); + Сообщения["[СообщениеКонецСеансаСоединенияСБазой]"] = НСтр("ru = 'Завершен сеанс внешнего соединения с ИБ'"); + Сообщения["[СообщениеБлокировкаРаботыПользователейЛогирование]"] = НСтр("ru = 'Установка блокировки сеансов в связи с необходимостью обновления конфигурации'"); + Сообщения["[СообщениеБлокировкаРаботыПользователей]"] = НСтр("ru = 'в связи с необходимостью обновления конфигурации'"); + Сообщения["[СообщениеСчетчикСеансовБазы]"] = НСтр("ru = 'Количество сеансов информационной базы: {0}'"); + Сообщения["[СообщениеРезультатБлокировкиСеансов]"] = НСтр("ru = 'Блокировка начала сеансов установлена: {0}'"); + Сообщения["[СообщениеСчетчикЗависшихСеансовБазы]"] = НСтр("ru = 'Количество зависших сеансов информационной базы: {0}, попытка № {1}'"); + Сообщения["[СообщениеВызовВыполнитьОтложенноеОбновлениеСейчас]"] = "ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас" + "()"; + Сообщения["[СообщениеОтказВызоваВыполнитьОтложенноеОбновлениеСейчас]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}.'"), "ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас"); + Сообщения["[СообщениеОтказВызоваУдалитьИсправленияИзСкрипта]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}.'"), "ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта"); + Сообщения["[СообщениеОтказУдаленияИсправлений]"] = НСтр("ru = 'Не удалось удалить исправления конфигурации. Подробности см. в предыдущей записи.'"); + Сообщения["[СообщениеПараметрыCOMСоединителя]"] = НСтр("ru = 'Используется COM-соединение: {0}'"); + Сообщения["[СообщениеОтказОбновленияБазыИзФайла]"] = НСтр("ru = 'Не удалось обновить по файлу, возможно конфигурация не находится на поддержке, попытка загрузки конфигурации.'"); + Сообщения["[СообщениеЗаставкиОшибкаШага]"] = НСтр("ru = 'Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.'"); + Сообщения["[СообщениеИнициализация]"] = НСтр("ru = 'Инициализация'"); + Сообщения["[СообщениеЗавершениеРаботыПользователей]"] = НСтр("ru = 'Завершение работы пользователей'"); + Сообщения["[СообщениеСозданиеРезервнойКопииБазы]"] = НСтр("ru = 'Создание резервной копии информационной базы'"); + Сообщения["[СообщениеВыполнениеОтложенныхОбработчиковОбновления]"] = НСтр("ru = 'Выполнение отложенных обработчиков обновления'"); + Сообщения["[СообщениеОбновлениеКонфигурации]"] = НСтр("ru = 'Обновление конфигурации информационной базы'"); + Сообщения["[СообщениеЗагрузкаРасширений]"] = НСтр("ru = 'Обновление расширений информационной базы'"); + Сообщения["[СообщениеЗагрузкаФайлаОбновлений]"] = НСтр("ru = 'Загрузка файла обновления в основную базу ({0}/{1})'"); + Сообщения["[СообщениеПараметрыОбновленияКонфигурации]"] = НСтр("ru = 'Обновление конфигурации информационной базы ({0}/{1})'"); + Сообщения["[СообщениеВыполнениеОбработчиковОбновления]"] = НСтр("ru = 'Выполнение обработчиков обновления ({0}/{1})'"); + Сообщения["[СообщениеРазрешениеПодключений]"] = НСтр("ru = 'Разрешение подключений новых соединений'"); + Сообщения["[СообщениеЗавершениеОбновления]"] = НСтр("ru = 'Завершение'"); - Сообщения.Вставить("[СообщениеНачалоЗапуска]", НСтр("ru = 'Запускается: {0}; параметры: {1}; окно: {2}; ожидание: {3}'")); - Сообщения.Вставить("[СообщениеДеталиИсключения]", НСтр("ru = 'Исключение в runApp: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатЗапуска]", НСтр("ru = 'Код возврата: {0}'")); - Сообщения.Вставить("[СообщениеПутьКФайлуСкрипта]", НСтр("ru = 'Файл скрипта: {0}'")); - Сообщения.Вставить("[СообщениеСчетчикФайловОбновления]", НСтр("ru = 'Количество файлов обновления: {0}'")); - Сообщения.Вставить("[СообщениеВосстановлениеБазы]", НСтр("ru = 'Восстановление ИБ из временного архива'")); - Сообщения.Вставить("[СообщениеНачалоСеансаСоединенияСБазой]", НСтр("ru = 'Начат сеанс внешнего соединения с ИБ'")); - Сообщения.Вставить("[СообщениеУдалениеЗадачиПланировщика]", НСтр("ru = 'Удаление задачи планировщика задач: {0}'")); - Сообщения.Вставить("[СообщениеОтказУдаленияЗадачиПланировщика]", НСтр("ru = 'Ошибка при удалении задачи из планировщика задач: {0}'")); - Сообщения.Вставить("[СообщениеОтказСоединенияСБазой]", НСтр("ru = 'Исключение в createConnection: {0}, {1}'")); - Сообщения.Вставить("[СообщениеВызовЗавершитьОбновление]", НСтр("ru = 'ОбновлениеКонфигурации.ЗавершитьОбновление({0}, {1}, {2})'")); - Сообщения.Вставить("[СообщениеОтказПриВызовеЗавершитьОбновление]", НСтр("ru = 'Исключение при вызове ОбновлениеКонфигурации.ЗавершитьОбновление: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатОбновленияБазы]", НСтр("ru = 'Обновление информационной базы завершилась успешно'")); - Сообщения.Вставить("[СообщениеОтказОбновленияБазы]", НСтр("ru = 'Ошибка при обновлении информационной базы'")); - Сообщения.Вставить("[СообщениеПараметрыБазы]", НСтр("ru = 'Параметры информационной базы: {0}.'")); - Сообщения.Вставить("[СообщениеОтказЛогирования]", НСтр("ru = 'Исключение в writeEventLog: {0}, {1}'")); - Сообщения.Вставить("[СообщениеОбновлениеЛогирование1С]", НСтр("ru = 'Протокол обновления сохранен в журнал регистрации.'")); - Сообщения.Вставить("[СообщениеКопированиеБазы]", НСтр("ru = '\r\n\Выполняется копирование из:\r\n\{0}\r\n\в:\r\n\{1}'")); - Сообщения.Вставить("[СообщениеФайлБазыНеСуществует]", НСтр("ru = 'Файл базы данных 1Cv8.1CD не существует по пути: {0}'")); - Сообщения.Вставить("[СообщениеКаталогРезервнойКопииБазыНеСуществует]", НСтр("ru = 'Папки для сохранения резервной копии не существует: {0}'")); - Сообщения.Вставить("[СообщениеПараметрыФайлаРезервнойКопии]", НСтр("ru = '\r\n\Файл резервной копии уже существует: {0}\r\n\Создан: {1}\r\n\Последнее обращение: {2}\r\n\Последнее изменение: {3}\r\n\Размер: {4}\r\n\Тип: {5}\r\n\Атрибуты:\r\n\{6}'")); - Сообщения.Вставить("[СообщениеДискНеСуществует]", НСтр("ru = '\r\n\Диск не найден по пути {0}\r\n\Исключение: {1}, {2}'")); - Сообщения.Вставить("[СообщениеДискНедоступен]", НСтр("ru = 'Диск не доступен по пути {0}'")); - Сообщения.Вставить("[СообщениеДисковогоПространстваНедостаточно]", НСтр("ru = '\r\n\Недостаточно свободного места для создания резервной копии.\r\n\Освободите место или укажите папку на другом диске.\r\n\Требуется: {0} Mb\r\n\Доступно на диске {1}: {2} Mb\r\n\Размер файла 1Cv8.1CD: {3} Mb\r\n\Тип диска: {4}'")); - Сообщения.Вставить("[СообщениеРезультатСозданияРезервнойКопииБазы]", НСтр("ru = 'Резервная копия базы создана'")); - Сообщения.Вставить("[СообщениеОтказСозданияРезервнойКопииБазыПодробно]", НСтр("ru = 'Исключение при создании резервной копии базы: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатВосстановленияБазы]", НСтр("ru = 'База данных восстановлена из резервной копии'")); - Сообщения.Вставить("[СообщениеОтказВосстановленияБазыПодробно]", НСтр("ru = 'Исключение при восстановлении базы из резервной копии: {0}, {1}.'")); - Сообщения.Вставить("[СообщениеВызовРазрешитьРаботуПользователей]", НСтр("ru = 'СоединенияИБ.РазрешитьРаботуПользователей()'")); - Сообщения.Вставить("[СообщениеОтказВызоваРазрешитьРаботуПользователей]", НСтр("ru = 'Исключение при вызове СоединенияИБ.РазрешитьРаботуПользователей: {0}, {1}'")); - Сообщения.Вставить("[СообщениеОтказОбновленияИсправлений]", НСтр("ru = 'Не удалось обновить исправления конфигурации. Подробности см. в предыдущей записи.'")); - Сообщения.Вставить("[СообщениеОтказВызоваОбновитьИсправленияИзСкрипта]", НСтр("ru = 'Исключение при вызове ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта: {0}, {1}'")); - Сообщения.Вставить("[СообщениеВызовВыполнитьОбновлениеИнформационнойБазы]", НСтр("ru = 'ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы({0})'")); - Сообщения.Вставить("[СообщениеОтказВызоваВыполнитьОбновлениеИнформационнойБазы]", НСтр("ru = 'Исключение при вызове ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы: {0}, {1}.'")); - Сообщения.Вставить("[СообщениеОтказОбновленияБазыОбщее]", НСтр("ru = 'При выполнении обновления информационной базы произошла ошибка:'")); - Сообщения.Вставить("[СообщениеБлокировкаБазы]", НСтр("ru = 'в связи с необходимостью обновления конфигурации'")); - Сообщения.Вставить("[СообщениеОтказЗавершенияРаботыПользователей]", НСтр("ru = 'Попытка завершения работы пользователей завершилась безуспешно: отменена блокировка ИБ.'")); - Сообщения.Вставить("[СообщениеОтменаБлокировкиРаботыПользователей]", НСтр("ru = 'Исключение при вызове doDisconnectAndBlockUsers: {0}, {1}'")); - Сообщения.Вставить("[СообщениеКонецСеансаСоединенияСБазой]", НСтр("ru = 'Завершен сеанс внешнего соединения с ИБ'")); - Сообщения.Вставить("[СообщениеБлокировкаРаботыПользователейЛогирование]", НСтр("ru = 'Установка блокировки сеансов в связи с необходимостью обновления конфигурации'")); - Сообщения.Вставить("[СообщениеБлокировкаРаботыПользователей]", НСтр("ru = 'в связи с необходимостью обновления конфигурации'")); - Сообщения.Вставить("[СообщениеСчетчикСеансовБазы]", НСтр("ru = 'Количество сеансов информационной базы: {0}'")); - Сообщения.Вставить("[СообщениеРезультатБлокировкиСеансов]", НСтр("ru = 'Блокировка начала сеансов установлена: {0}'")); - Сообщения.Вставить("[СообщениеСчетчикЗависшихСеансовБазы]", НСтр("ru = 'Количество зависших сеансов информационной базы: {0}, попытка № {1}'")); - Сообщения.Вставить("[СообщениеВызовВыполнитьОтложенноеОбновлениеСейчас]", НСтр("ru = 'ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас()'")); - Сообщения.Вставить("[СообщениеОтказВызоваВыполнитьОтложенноеОбновлениеСейчас]", НСтр("ru = 'Исключение при вызове ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас: {0}, {1}.'")); - Сообщения.Вставить("[СообщениеОтказВызоваУдалитьИсправленияИзСкрипта]", НСтр("ru = 'Исключение при вызове ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта: {0}, {1}.'")); - Сообщения.Вставить("[СообщениеОтказУдаленияИсправлений]", НСтр("ru = 'Не удалось удалить исправления конфигурации. Подробности см. в предыдущей записи.'")); - Сообщения.Вставить("[СообщениеПараметрыCOMСоединителя]", НСтр("ru = 'Используется COM соединение: {0}'")); - Сообщения.Вставить("[СообщениеОтказОбновленияБазыИзФайла]", НСтр("ru = 'Не удалось обновить по файлу, возможно конфигурация не находится на поддержке, попытка загрузки конфигурации'")); - Сообщения.Вставить("[СообщениеЗаставкиОшибкаШага]", НСтр("ru = 'Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.'")); - Сообщения.Вставить("[СообщениеИнициализация]", НСтр("ru = 'Инициализация'")); - Сообщения.Вставить("[СообщениеЗавершениеРаботыПользователей]", НСтр("ru = 'Завершение работы пользователей'")); - Сообщения.Вставить("[СообщениеСозданиеРезервнойКопииБазы]", НСтр("ru = 'Создание резервной копии информационной базы'")); - Сообщения.Вставить("[СообщениеВыполнениеОтложенныхОбработчиковОбновления]", НСтр("ru = 'Выполнение отложенных обработчиков обновления'")); - Сообщения.Вставить("[СообщениеОбновлениеКонфигурации]", НСтр("ru = 'Обновление конфигурации информационной базы'")); - Сообщения.Вставить("[СообщениеЗагрузкаРасширений]", НСтр("ru = 'Обновление расширений информационной базы'")); - Сообщения.Вставить("[СообщениеЗагрузкаФайлаОбновлений]", НСтр("ru = 'Загрузка файла обновления в основную базу ({0}/{1})'")); - Сообщения.Вставить("[СообщениеПараметрыОбновленияКонфигурации]", НСтр("ru = 'Обновление конфигурации информационной базы ({0}/{1})'")); - Сообщения.Вставить("[СообщениеВыполнениеОбработчиковОбновления]", НСтр("ru = 'Выполнение обработчиков обновления ({0}/{1})'")); - Сообщения.Вставить("[СообщениеРазрешениеПодключений]", НСтр("ru = 'Разрешение подключений новых соединений'")); - Сообщения.Вставить("[СообщениеЗавершениеОбновления]", НСтр("ru = 'Завершение'")); - Сообщения.Вставить("[СообщениеОтказИнициализации]", НСтр("ru = ': Ошибка инициализации переменных:'") + Символы.НПП); - Сообщения.Вставить("[СообщениеСозданиеОбъектаCOMСоединителя]", НСтр("ru = ': Создание объекта COM-соединителя...'")); - Сообщения.Вставить("[СообщениеОтказСозданияОбъектаCOMСоединителя]", НСтр("ru = ': Ошибка создания объекта COM-соединителя:'") + Символы.НПП); - Сообщения.Вставить("[СообщениеУстановкаСоединенияСБазой]", НСтр("ru = ': Установка соединения с'") + Символы.НПП); - Сообщения.Вставить("[СообщениеОтказСоединенияСБазойОбщее]", НСтр("ru = ': Ошибка установки соединения с'") + Символы.НПП); - Сообщения.Вставить("[СообщениеОсновноеСобытие]", НСтр("ru = 'Удаление исправлений (патчей)'")); - Сообщения.Вставить("[СообщениеВызовУдалитьИсправленияИзСкрипта]", НСтр("ru = ': Вызов ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта()...'")); - Сообщения.Вставить("[СообщениеВызовОбновитьИсправленияИзСкрипта]", НСтр("ru = ': Вызов ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта()...'")); - Сообщения.Вставить("[СообщениеОшибкаБСП]", НСтр("ru = ': Ошибка БСП:'") + Символы.НПП); - Сообщения.Вставить("[СообщениеВажность]", НСтр("ru = 'Обязательная'")); + // Сообщения в макете СкриптУдаленияПатчей + Сообщения["[СообщениеОтказИнициализации]"] = НСтр("ru = 'Ошибка инициализации переменных'"); + Сообщения["[СообщениеСозданиеОбъектаCOMСоединителя]"] = НСтр("ru = 'Создание объекта COM-соединителя...'"); + Сообщения["[СообщениеОтказСозданияОбъектаCOMСоединителя]"] = НСтр("ru = 'Ошибка создания объекта COM-соединителя:'"); + Сообщения["[СообщениеУстановкаСоединенияСБазой]"] = НСтр("ru = 'Установка соединения с'"); + Сообщения["[СообщениеОтказСоединенияСБазойОбщее]"] = НСтр("ru = 'Ошибка установки соединения с'"); + Сообщения["[СообщениеОсновноеСобытие]"] = НСтр("ru = 'Удаление исправлений (патчей)'"); + Сообщения["[СообщениеВызовУдалитьИсправленияИзСкрипта]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Вызов %1...'"), "ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта"); + Сообщения["[СообщениеВызовОбновитьИсправленияИзСкрипта]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Вызов %1...'"), "ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта"); + Сообщения["[СообщениеОшибка]"] = НСтр("ru = ': Ошибка в конфигурации:'") + Символы.НПП; + Сообщения["[СообщениеВажность]"] = НСтр("ru = 'Обязательная'"); Возврат Сообщения; diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl index 13832fcca..04b5ea4c9 100644 --- a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl @@ -232,11 +232,8 @@ Если ПустаяСтрока(КаталогСкрипта) Тогда ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), - "Предупреждение", - НСтр("ru = 'Обновление выполнено с очень старой версии программы. - |Журнал обновления находится в папке временных файлов %temp% - |с именем вида 1Cv8Update.(цифры).'"),, Истина); - + "Предупреждение", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Журнал обновления см. в папке временных файлов %1.(цифры).'"), "%temp%\1Cv8Update"),, Истина); РезультатОбновления = Истина; // считаем обновление успешным. Иначе ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), @@ -579,7 +576,7 @@ Если НаличиеОбновления Тогда // Надо завершить предыдущее обновление. - ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы"); Возврат; КонецЕсли; diff --git a/SSL/src/CommonModules/ОбсужденияСлужебный/Module.bsl b/SSL/src/CommonModules/ОбсужденияСлужебный/Module.bsl index ff745817b..5ccb5a6dc 100644 --- a/SSL/src/CommonModules/ОбсужденияСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ОбсужденияСлужебный/Module.bsl @@ -265,6 +265,29 @@ #Область СлужебныеПроцедурыИФункции +// Возвращаемое значение: +// Структура: +// * Идентификатор - Неопределено +// - ИдентификаторИнтеграцииСистемыВзаимодействия +// * Ключ - Строка +// * Тип - Строка +// * Участники - Массив +// * token - Строка +// * groupId - Строка +// +Функция ПараметрыИнтеграции() Экспорт + ПараметрыИнтеграции = Новый Структура; + + ПараметрыИнтеграции.Вставить("Идентификатор"); + ПараметрыИнтеграции.Вставить("Ключ", ""); + ПараметрыИнтеграции.Вставить("Тип", ""); + ПараметрыИнтеграции.Вставить("Участники", Новый Массив); + ПараметрыИнтеграции.Вставить("token", ""); + ПараметрыИнтеграции.Вставить("groupId", ""); + + Возврат ПараметрыИнтеграции; +КонецФункции + Функция СобытиеЖурналаРегистрации(ДетализацияСобытия = "") Экспорт Возврат НСтр("ru='Обсуждения'", ОбщегоНазначения.КодОсновногоЯзыка()) + ?(ПустаяСтрока(ДетализацияСобытия), "", "."+ДетализацияСобытия); diff --git a/SSL/src/CommonModules/ОбсужденияСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ОбсужденияСлужебныйКлиент/Module.bsl index 5c8003834..74d46ee88 100644 --- a/SSL/src/CommonModules/ОбсужденияСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбсужденияСлужебныйКлиент/Module.bsl @@ -58,15 +58,6 @@ Процедура ПриПолученииФормыВыбораПользователейСистемыВзаимодействия(НазначениеВыбора, Форма, ИдентификаторОбсуждения, Параметры, ВыбраннаяФорма, СтандартнаяОбработка) Экспорт - // Не переопределяем, при выборе получателя доступны только пользователи обсуждения. - СистемнаяИнформация = Новый СистемнаяИнформация; - ПолучательСообщения = ?(ОбщегоНазначенияКлиентСервер.СравнитьВерсии("8.3.17.0",СистемнаяИнформация.ВерсияПриложения) > 0, - Вычислить("НазначениеВыбораПользователейСистемыВзаимодействия.ПолучательСообщения"), - Неопределено); - Если НазначениеВыбора = ПолучательСообщения Тогда - Возврат; - КонецЕсли; - Параметры.Вставить("ВыборУчастниковОбсуждения", Истина); Параметры.Вставить("РежимВыбора", Истина); Параметры.Вставить("ЗакрыватьПриВыборе", Ложь); diff --git a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl index bce03fcdf..30ec6d791 100644 --- a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl @@ -25,27 +25,27 @@ // Пример: // // 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта: -// ОбщегоНазначенияКлиент.СообщитьПользователю( +// ОбщегоНазначения.СообщитьПользователю( // НСтр("ru = 'Сообщение об ошибке.'"), , // "ПолеВРеквизитеФормыОбъект", // "Объект"); // // Альтернативный вариант использования в форме объекта: -// ОбщегоНазначенияКлиент.СообщитьПользователю( +// ОбщегоНазначения.СообщитьПользователю( // НСтр("ru = 'Сообщение об ошибке.'"), , // "Объект.ПолеВРеквизитеФормыОбъект"); // // 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( +// ОбщегоНазначения.СообщитьПользователю( // НСтр("ru = 'Сообщение об ошибке.'"), , // "ИмяРеквизитаФормы"); // // 3. Для вывода сообщения связанного с объектом информационной базы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( +// ОбщегоНазначения.СообщитьПользователю( // НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ); // // 4. Для вывода сообщения по ссылке на объект информационной базы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( +// ОбщегоНазначения.СообщитьПользователю( // НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ); // // Случаи некорректного использования: @@ -53,12 +53,8 @@ // 2. Передача в параметре КлючДанных значения типа отличного от допустимого. // 3. Установка ссылки без установки поля (и/или пути к данным). // -Процедура СообщитьПользователю( - Знач ТекстСообщенияПользователю, - Знач КлючДанных = Неопределено, - Знач Поле = "", - Знач ПутьКДанным = "", - Отказ = Ложь) Экспорт +Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, Знач Поле = "", + Знач ПутьКДанным = "", Отказ = Ложь) Экспорт ЭтоОбъект = Ложь; @@ -69,13 +65,8 @@ ЭтоОбъект = СтрНайти(ТипЗначенияСтрокой, "Object.") > 0; КонецЕсли; - ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю( - ТекстСообщенияПользователю, - КлючДанных, - Поле, - ПутьКДанным, - Отказ, - ЭтоОбъект); + ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле, + ПутьКДанным, Отказ, ЭтоОбъект); КонецПроцедуры @@ -108,9 +99,8 @@ // Если ключ задан, а значение не определено, то имя поля берется из ключа. // Допускается указание имени поля через точку, но при этом параметр КодЯзыка для такого поля // учитываться не будет. -// - Массив -// - ФиксированныйМассив - имена реквизитов в формате требований -// к свойствам структуры. +// - Массив из Строка +// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. // ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; // если есть ограничение на уровне записей, то все реквизиты вернутся со // значением Неопределено; если нет прав для работы с таблицей, то возникнет исключение; @@ -139,8 +129,9 @@ Ссылка = ПредопределенныйЭлемент(ПолноеИмяПредопределенногоЭлемента); Исключение ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта: - |%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |%3'"), "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; @@ -154,7 +145,7 @@ МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных); Если Не ПравоДоступа("Чтение", МетаданныеОбъекта) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недостаточно прав для работы с таблицей ""%1""'"), ПолноеИмяОбъектаМетаданных); + НСтр("ru = 'Недостаточно прав для работы с таблицей ""%1""'"), ПолноеИмяОбъектаМетаданных); КонецЕсли; КонецЕсли; @@ -163,9 +154,10 @@ Попытка ПолноеИмяОбъектаМетаданных = Ссылка.Метаданные().ПолноеИмя(); Исключение - ВызватьИсключение - НСтр("ru = 'Неверный первый параметр Ссылка в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта: - |- Значение должно быть ссылкой или именем предопределенного элемента'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |Значение должно быть ссылкой или именем предопределенного элемента.'"), + "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта"); КонецПопытки; КонецЕсли; @@ -218,8 +210,8 @@ Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); Если Результат.Ошибка Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта: %1'"), - Результат.ОписаниеОшибки); + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); КонецЕсли; // Не удалось распознать ошибку, проброс первичной ошибки. @@ -229,8 +221,8 @@ КонецЦикла; Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный тип второго параметра Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта: %1'"), - Строка(ТипЗнч(Реквизиты))); + НСтр("ru = 'Неверный тип второго параметра %1 в функции %2: %3.'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Строка(ТипЗнч(Реквизиты))); КонецЕсли; // Подготовка результата (после выполнения запроса переопределится). @@ -347,8 +339,8 @@ Результат = НайтиОшибкуДоступностиРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); Если Результат.Ошибка Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъекта: %1'"), - Результат.ОписаниеОшибки); + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); КонецЕсли; // Не удалось распознать ошибку, проброс первичной ошибки. @@ -393,9 +385,9 @@ Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт Если ПустаяСтрока(ИмяРеквизита) Тогда - ВызватьИсключение - НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта: - |- Имя реквизита должно быть заполнено'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Имя реквизита должно быть заполнено.'"), "ИмяРеквизита", "ОбщегоНазначения.ЗначениеРеквизитаОбъекта"); КонецЕсли; Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); @@ -411,14 +403,13 @@ // то следует использовать предварительный переход в привилегированный режим. // // Параметры: -// Ссылки - Массив -// - ФиксированныйМассив - ссылки на объекты. -// Если массив пуст, то результатом будет пустое соответствие. +// Ссылки - Массив из ЛюбаяСсылка +// - ФиксированныйМассив из ЛюбаяСсылка - ссылки на объекты. +// Если массив пуст, то результатом будет пустое соответствие. // Реквизиты - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам // структуры. Например, "Код, Наименование, Родитель". -// - Массив -// - ФиксированныйМассив - имена реквизитов в формате требований -// к свойствам структуры. +// - Массив из Строка +// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. // ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя; // если какой-либо объект будет исключен из выборки по правам, то этот объект // будет исключен и из результата; @@ -440,15 +431,15 @@ КонецЕсли; Если ПустаяСтрока(Реквизиты) Тогда - ВызватьИсключение - НСтр("ru = 'Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов: - |- Поле объекта должно быть указано'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Поле объекта должно быть указано.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); КонецЕсли; Если СтрНайти(Реквизиты, ".") <> 0 Тогда - ВызватьИсключение - НСтр("ru = 'Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов: - |- Обращение через точку не поддерживается'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Обращение через точку не поддерживается.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); КонецЕсли; ЗначенияРеквизитов = Новый Соответствие; @@ -464,8 +455,8 @@ Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); - СуффиксЯзыка = МодульМультиязычностьСервер.СуффиксЯзыка(КодЯзыка); Если ЗначениеЗаполнено(КодЯзыка) Тогда + СуффиксЯзыка = МодульМультиязычностьСервер.СуффиксЯзыка(КодЯзыка); Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда МультиязычныеРеквизиты = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(Ссылки[0]); НаборРеквизитов = СтрРазделить(Реквизиты, ","); @@ -500,9 +491,9 @@ Тип = СсылкиПоТипу.Ключ; ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); Если ОбъектМетаданных = Неопределено Тогда - ВызватьИсключение - НСтр("ru = 'Неверный первый параметр Ссылки в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов: - |- Значения массива должны быть ссылками'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |Значения массива должны быть ссылками.'"), "Ссылки", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); КонецЕсли; ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); @@ -526,9 +517,10 @@ ПараметрыЗапроса.Вставить(ИмяПараметра, СсылкиПоТипу.Значение); Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда - МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); + Если ЗначениеЗаполнено(КодЯзыка) И КодЯзыка <> КодОсновногоЯзыка() - И Не МодульМультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда + И МодульМультиязычностьСервер.ОбъектСодержитТЧПредставления(ПолноеИмяОбъектаМетаданных) Тогда МультиязычныеРеквизиты = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(ОбъектМетаданных); ПоляТаблиц = Новый Массив; @@ -593,8 +585,8 @@ Если ЗначениеЗаполнено(СписокОшибок) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр Реквизиты в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов: %1'"), - СтрСоединить(СписокОшибок, Символы.ПС)); + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов", СтрСоединить(СписокОшибок, Символы.ПС)); КонецЕсли; // Не удалось распознать ошибку, проброс первичной ошибки. @@ -621,7 +613,8 @@ // то следует использовать предварительный переход в привилегированный режим. // // Параметры: -// МассивСсылок - Массив - массив ссылок на объекты. +// МассивСсылок - Массив из ЛюбаяСсылка +// - ФиксированныйМассив из ЛюбаяСсылка // ИмяРеквизита - Строка - например, "Код". // ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя; // если какой-либо объект будет исключен из выборки по правам, то этот объект @@ -638,8 +631,9 @@ Функция ЗначениеРеквизитаОбъектов(МассивСсылок, ИмяРеквизита, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт Если ПустаяСтрока(ИмяРеквизита) Тогда - ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъектов: - |- Имя реквизита должно быть заполнено'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Имя реквизита должно быть заполнено.'"), "ИмяРеквизита", "ОбщегоНазначения.ЗначениеРеквизитаОбъектов"); КонецЕсли; ЗначенияРеквизитов = ЗначенияРеквизитовОбъектов(МассивСсылок, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); @@ -687,7 +681,6 @@ Для Каждого ЗначениеРеквизита Из Значения Цикл Значение = ЗначениеРеквизита.Значение; Если ТипЗнч(Значение) = Тип("Строка") И СтрокаВВидеНСтр(Значение) Тогда - //@skip-warning Значение = НСтр(ЗначениеРеквизита.Значение); КонецЕсли; Объект[ЗначениеРеквизита.Ключ] = Значение; @@ -874,11 +867,11 @@ // // Параметры: // СсылкаИлиМассивСсылок - ЛюбаяСсылка -// - Массив - объект или список объектов. +// - Массив из ЛюбаяСсылка - объект или список объектов. // ИскатьСредиСлужебныхОбъектов - Булево - если Истина, то не будут учитываться // исключения поиска ссылок, заданные при разработке конфигурации. -// Про исключение поиска ссылок подробнее -// см. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок +// Про исключение поиска ссылок см. подробнее +// ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок. // // Возвращаемое значение: // Булево - Истина, если есть ссылки на объект. @@ -924,11 +917,11 @@ // Замена ссылок происходит с транзакциями по изменяемому объекту и его связям, не по анализируемой ссылке. // При вызове в неразделенном сеансе не выявляет ссылок в разделенных областях. // Если описаны связи подчиненных и основных объектов (см. СвязиПодчиненныхОбъектов), то: -// * при замене основных объектов будет выполнен поиск замен подчиненных объектов +// * при замене основных объектов будет выполнен поиск замен подчиненных объектов; // * если ВыполнятьАвтоматическийПоискЗамен = Истина, то будет выполнена попытка поиска замен для подчиненных объектов -// по значениям полей связи. В случае, если объект не существует, будет выполнена процедура ПриПоискеЗаменыСсылок +// по значениям полей связи. В случае, если объект не существует, будет выполнена процедура ПриПоискеЗаменыСсылок; // * если МетодПоиска в описании связей задан, то если автоматический поиск не нашел замен -// или не выполнялся, будет вызван МетодПоиска для подбора замен +// или не выполнялся, будет вызван МетодПоиска для подбора замен. // // Параметры: // ПарыЗамен - Соответствие из КлючИЗначение: @@ -1938,12 +1931,11 @@ Если Не ПустаяСтрока(Минимальная) И Не ПустаяСтрока(Рекомендуемая) И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Минимальная, Рекомендуемая) > 0 Тогда - ТекстСообщения = НСтр("ru = 'Минимальная версия платформы ""1С:Предприятие 8"" указана выше рекомендуемой в ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности. - |Минимальная версия - ""%1"", рекомендуемая версия - ""%2"".'"); + ТекстСообщения = НСтр("ru = 'Минимальная версия платформы ""1С:Предприятие"" указана выше рекомендуемой в %1. + |Минимальная версия %2, рекомендуемая версия %3.'"); ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ТекстСообщения, - ОбщиеПараметры.МинимальнаяВерсияПлатформы, - ОбщиеПараметры.РекомендуемаяВерсияПлатформы); + ТекстСообщения, "ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности", + ОбщиеПараметры.МинимальнаяВерсияПлатформы, ОбщиеПараметры.РекомендуемаяВерсияПлатформы); КонецЕсли; // Обратная совместимость. @@ -2717,8 +2709,9 @@ // Строка - строка, не превышающая максимальную длину. // Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт - ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32, НСтр("ru = 'Параметр МаксимальнаяДлина не может быть меньше 32'"), - "ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"); + ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Параметр %1 не может быть меньше 32.'"), + "МаксимальнаяДлина"), "ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"); Результат = Строка; Если СтрДлина(Строка) > МаксимальнаяДлина Тогда @@ -3341,6 +3334,9 @@ ИначеЕсли Метаданные.Роли.Содержит(ОбъектМетаданных) Тогда Возврат "Роли"; + ИначеЕсли Метаданные.ОбщиеРеквизиты.Содержит(ОбъектМетаданных) Тогда + Возврат "ОбщиеРеквизиты"; + ИначеЕсли Метаданные.КритерииОтбора.Содержит(ОбъектМетаданных) Тогда Возврат "КритерииОтбора"; @@ -3386,6 +3382,9 @@ ИначеЕсли Метаданные.Языки.Содержит(ОбъектМетаданных) Тогда Возврат "Языки"; + ИначеЕсли Метаданные.ВнешниеИсточникиДанных.Содержит(ОбъектМетаданных) Тогда + Возврат "ВнешниеИсточникиДанных"; + Иначе Возврат ""; @@ -3563,7 +3562,7 @@ КонецФункции // Проверка того, что переданный тип является ссылочным типом данных. -// Для типа "Неопределено" возвращается Ложь. +// Для типа Неопределено возвращается Ложь. // // Параметры: // ПроверяемыйТип - Тип - для проверки на ссылочный тип данных. @@ -3699,8 +3698,10 @@ // Проверяет, является ли элемент справочника или плана видов характеристик группой элементов. // // Параметры: -// Объект - СправочникСсылка, ПланВидовХарактеристикСсылка -// - СправочникОбъект, ПланВидовХарактеристикОбъект - проверяемый объект. +// Объект - СправочникСсылка +// - ПланВидовХарактеристикСсылка +// - СправочникОбъект +// - ПланВидовХарактеристикОбъект - проверяемый объект. // // Возвращаемое значение: // Булево @@ -4623,7 +4624,7 @@ // Возвращает структуру параметров для функции СоздатьWSПрокси. // // Возвращаемое значение: -// см. СоздатьWSПрокси +// см. СоздатьWSПрокси.ПараметрыПодключенияWSПрокси // Функция ПараметрыПодключенияWSПрокси() Экспорт Результат = Новый Структура; @@ -4641,43 +4642,50 @@ Возврат Результат; КонецФункции -// Конструктор объекта WSПрокси. -// -// Отличия от конструктора Новый WSПрокси: -// - встроенный конструктор WSОпределения; -// - кэширует файл WSDL; +// Конструктор объекта WSПрокси с дополнительными возможностями по сравнению с конструктором Новый WSПрокси: +// - создает WSОпределения; +// - кэширует файл WSDL для ускорения работы с веб-сервисом; // - не требуется указание ИнтернетПрокси (используется автоматически, если настроен); -// - умеет делать быструю проверку доступности сервиса. +// - позволяет делать быструю проверку доступности сервиса с помощью операции Ping. // // Параметры: -// ПереданныеПараметры - Структура - настройки подключения (необходимо использовать функцию ПараметрыПодключенияWSПрокси): -// * АдресWSDL - Строка - месторасположение wsdl. -// * URIПространстваИмен - Строка - URI пространства имен web-сервиса. -// * ИмяСервиса - Строка - имя сервиса. -// * ИмяТочкиПодключения - Строка - (необязательный) если не задано, образуется как <ИмяСервиса>Soap. -// * ИмяПользователя - Строка - (необязательный) имя пользователя для входа на сервер. -// * Пароль - Строка - (необязательный) пароль пользователя. -// * Таймаут - Число - (необязательный) таймаут на операции выполняемые через полученное прокси. -// * Местоположение - Строка - (необязательный) фактический адрес сервиса. Используется, если адрес реального -// расположения сервиса отличается от адреса, который указан в WSDL-файле. -// * ИспользоватьАутентификациюОС - Булево - (необязательный) включает использование авторизации NTLM или Negotiate на -// сервере. -// * ДелатьКонтрольныйВызов - Булево - (необязательный) выполнять проверку доступности сервиса (требуется -// поддержка этой команды веб-сервисом). +// ПараметрыПодключенияWSПрокси - Структура: +// * АдресWSDL - Строка - месторасположение wsdl, например, "http://webservice.net/webservice.asmx?wsdl". +// * URIПространстваИмен - Строка - URI пространства имен web-сервиса, например, "http://www.webservice.net/WebService/1.0.0.1". +// * ИмяСервиса - Строка - имя сервиса, например, "WebService_1_0_0_1". +// * ИмяТочкиПодключения - Строка - необязательный параметр. Если не задано, образуется как "<ИмяСервиса>Soap". +// * ИмяПользователя - Строка - необязательный параметр. Имя пользователя для входа на сервер. +// * Пароль - Строка - необязательный параметр. Пароль пользователя. +// * Таймаут - Число - необязательный параметр. Таймаут на операции веб-сервиса, выполняемые +// через прокси. В секундах. +// * Местоположение - Строка - необязательный параметр. Фактический адрес сервиса. Используется, если +// адрес реального расположения сервиса отличается от адреса, который указан +// в WSDL-файле. +// * ИспользоватьАутентификациюОС - Булево - необязательный параметр. Включает использование авторизации NTLM или +// Negotiate на сервере. +// * ДелатьКонтрольныйВызов - Булево - необязательный параметр. Выполнять проверку доступности сервиса (требуется +// поддержка команды Ping в веб-сервисе). По умолчанию, Ложь. // * ЗащищенноеСоединение - ЗащищенноеСоединениеOpenSSL -// - Неопределено - (необязательный) параметры защищенного -// соединения. +// - Неопределено - необязательные параметры защищенного соединения. // // Возвращаемое значение: -// WSПрокси - объект WSПрокси. +// WSПрокси // -Функция СоздатьWSПрокси(ПереданныеПараметры) Экспорт +// Пример: +// ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси(); +// ПараметрыПодключения.АдресWSDL = "http://webservice.net/webservice.asmx?wsdl"; +// ПараметрыПодключения.URIПространстваИмен = "http://www.webservice.net/WebService/1.0.0.1"; +// ПараметрыПодключения.ИмяСервиса = "WebService_1_0_0_1"; +// ПараметрыПодключения.Таймаут = 20; +// Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения); +// +Функция СоздатьWSПрокси(Знач ПараметрыПодключенияWSПрокси) Экспорт - ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("СоздатьWSПрокси", "Параметры", ПереданныеПараметры, Тип("Структура"), + ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("СоздатьWSПрокси", "Параметры", ПараметрыПодключенияWSПрокси, Тип("Структура"), Новый Структура("АдресWSDL,URIПространстваИмен,ИмяСервиса", Тип("Строка"), Тип("Строка"), Тип("Строка"))); ПараметрыПодключения = ПараметрыПодключенияWSПрокси(); - ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ПереданныеПараметры); + ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ПараметрыПодключенияWSПрокси); ДелатьКонтрольныйВызов = ПараметрыПодключения.ДелатьКонтрольныйВызов; Таймаут = ПараметрыПодключения.Таймаут; @@ -4710,8 +4718,6 @@ РезультатДиагностики.ОписаниеОшибки); КонецЕсли; - ЗаписьЖурналаРегистрации(НСтр("ru = 'WSПрокси'", КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); ВызватьИсключение ТекстОшибки; КонецПопытки; ПараметрыПодключения.Таймаут = Таймаут; @@ -5285,7 +5291,8 @@ КонецЕсли; Исключение ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Некорректное значение параметра ИмяМетода (%1) в ОбщегоНазначения.ВыполнитьМетодОбъекта'"), ИмяМетода); + НСтр("ru = 'Некорректное значение параметра %1 (%2) в %3.'"), + "ИмяМетода", ИмяМетода, "ОбщегоНазначения.ВыполнитьМетодОбъекта"); КонецПопытки; Если ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда @@ -5636,18 +5643,17 @@ КонецПроцедуры // Выполняет пропорциональное распределение суммы в соответствии -// с заданными коэффициентами распределения -// -// См. ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам +// с заданными коэффициентами распределения. // // Параметры: // РаспределяемаяСумма - Число - сумма, которую надо распределить, если сумма равна 0 - то возвращается Неопределено; // Если передана отрицательная - расчет по модулю и после инверсия знаков результата. -// Коэффициенты - Массив - коэффициенты распределения, должны быть положительны или отрицательными одновременно -// Точность - Число - точность округления при распределении. Необязателен. +// Коэффициенты - Массив из Число - коэффициенты распределения, должны быть положительны или отрицательными +// одновременно. +// Точность - Число - точность округления при распределении. // // Возвращаемое значение: -// Массив - массив размерностью равный массиву коэффициентов, содержит +// Массив из Число - массив размерностью равный массиву коэффициентов, содержит // суммы в соответствии с весом коэффициента (из массива коэффициентов). // В случае, если распределить невозможно (кол-во коэффициентов = 0 // есть коэффициенты с отрицательным значением или суммарный вес коэффициентов = 0), @@ -5680,13 +5686,9 @@ Для Каждого Строка Из ДеревоЗначений.Строки Цикл ЭлементДерева = КоллекцияЭлементовДерева.Добавить(); - ЗаполнитьЗначенияСвойств(ЭлементДерева, Строка); - Если Строка.Строки.Количество() > 0 Тогда - ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ЭлементДерева.ПолучитьЭлементы(), Строка); - КонецЕсли; КонецЦикла; @@ -5741,7 +5743,7 @@ #Область УстаревшиеПроцедурыИФункции // Устарела. Следует использовать -// ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных(). +// ОбщегоНазначения.РазделениеВключено И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных. // // Возвращаемое значение: // Булево @@ -5892,8 +5894,8 @@ Если Не ПодключитьВнешнююКомпоненту(Местоположение, Идентификатор + "SymbolicName") Тогда Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" на сервере по причине: - |Метод ПодключитьВнешнююКомпоненту вернул Ложь.'"), - Идентификатор); + |Метод %2 вернул Ложь.'"), + Идентификатор, "ПодключитьВнешнююКомпоненту"); ЗаписьЖурналаРегистрации(НСтр("ru = 'Подключение внешней компоненты на сервере'", КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Результат.ОписаниеОшибки); @@ -6053,6 +6055,38 @@ КонецПроцедуры +// Возвращает суффикс текущего языка для мультиязычных реквизитов. +// +// Возвращаемое значение: +// Строка - "Язык1" или "Язык2", если язык пользователя является дополнительным +// Пустая строка, если язык пользователя является основным. +// Неопределено - мультиязычное хранение данных не используется. +// +Функция СуффиксЯзыкаТекущегоПользователя() Экспорт + + Результат = Новый Структура(); + Результат.Вставить("СуффиксТекущегоЯзыка", ""); + Результат.Вставить("ЭтоОсновнойЯзык", ""); + + Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); + СуффиксТекущегоЯзыка = МодульМультиязычностьСервер.СуффиксТекущегоЯзыка(); + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + Возврат СуффиксТекущегоЯзыка; + КонецЕсли; + Иначе + СуффиксТекущегоЯзыка = ""; + КонецЕсли; + + Если ЭтоОсновнойЯзык() Тогда + Возврат СуффиксТекущегоЯзыка; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -6091,7 +6125,7 @@ Если МетаданныеОбъекта = Неопределено Тогда Возврат Новый Структура("Ошибка, ОписаниеОшибки", Истина, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка получения метаданных ""%1""'"), ПолноеИмяОбъектаМетаданных)); + НСтр("ru = 'Ошибка получения метаданных ""%1"".'"), ПолноеИмяОбъектаМетаданных)); КонецЕсли; // Разрешение вызова из безопасного режима внешней обработки или расширения. @@ -6110,7 +6144,7 @@ Если Не ПолеИсточникаСхемыЗапросаДоступно(Источник, ТекущееВыражение) Тогда ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = '- Поле объекта ""%1"" не существует'"), ТекущееВыражение); + НСтр("ru = 'Поле объекта ""%1"" не существует.'"), ТекущееВыражение); КонецЕсли; КонецЦикла; @@ -8237,8 +8271,8 @@ СравниваемыеКолонки.Добавить("Значение"); Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Для коллекции типа %1 укажите имена полей, по которым производится сравнение в ОбщегоНазначения.КоллекцииИдентичны'"), - ТипКоллекции); + НСтр("ru = 'Для коллекции типа %1 укажите имена полей, по которым производится сравнение в %2.'"), + ТипКоллекции, "ОбщегоНазначения.КоллекцииИдентичны"); КонецЕсли; Иначе СравниваемыеКолонки = СтрРазделить(СтрЗаменить(ИменаКолонок, " ", ""), ","); @@ -8452,9 +8486,8 @@ КонецЕсли; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка в функции ФиксированныеДанные общего модуля ОбщегоНазначения. - |Данные типа ""%1"" не могут быть зафиксированы.'"), - Строка(ТипДанных) ); + НСтр("ru = 'Данные типа %1 не могут быть зафиксированы в функции %2.'"), + Строка(ТипДанных), "ОбщегоНазначения.ФиксированныеДанные"); КонецПроцедуры @@ -8731,16 +8764,16 @@ ЧастиИмени = СтрРазделить(ИмяПроцедуры, "."); Если ЧастиИмени.Количество() <> 2 И ЧастиИмени.Количество() <> 3 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра ИмяПроцедуры (передано значение: ""%1"") в ОбщегоНазначения.ВыполнитьМетодКонфигурации'"), ИмяПроцедуры); + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3.'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации"); КонецЕсли; ИмяОбъекта = ЧастиИмени[0]; Если ЧастиИмени.Количество() = 2 И Метаданные.ОбщиеМодули.Найти(ИмяОбъекта) = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра ИмяПроцедуры (передано значение: ""%1"") в ОбщегоНазначения.ВыполнитьМетодКонфигурации: - |Не существует общий модуль ""%2"".'"), - ИмяПроцедуры, - ИмяОбъекта); + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Не существует общий модуль ""%4"".'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяОбъекта); КонецЕсли; Если ЧастиИмени.Количество() = 3 Тогда @@ -8752,10 +8785,9 @@ КонецПопытки; Если Менеджер = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра ИмяПроцедуры (передано значение: ""%1"") в ОбщегоНазначения.ВыполнитьМетодКонфигурации: - |Не существует менеджер объекта ""%2"".'"), - ИмяПроцедуры, - ПолноеИмяОбъекта); + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Не существует менеджер объекта ""%4"".'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ПолноеИмяОбъекта); КонецЕсли; КонецЕсли; @@ -8769,9 +8801,9 @@ ЗаписьЖурналаРегистрации(НСтр("ru = 'Безопасное выполнение метода'", КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра ИмяПроцедуры (передано значение: ""%1"") в ОбщегоНазначения.ВыполнитьМетодКонфигурации: - |Имя метода ""%2"" не соответствует требованиям образования имен процедур и функций.'"), - ИмяПроцедуры, ИмяМетодаОбъекта); + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Имя метода ""%4"" не соответствует требованиям образования имен процедур и функций.'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяМетодаОбъекта); КонецПопытки; КонецПроцедуры @@ -8986,7 +9018,8 @@ Тест.Вставить(ИмяМетода, ИмяМетода); Исключение ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Некорректное значение параметра ИмяМетода (%1) в ОбщегоНазначения.ВыполнитьМетодОбъекта'"), ИмяМетода); + НСтр("ru = 'Некорректное значение параметра %1 (%2) в %3.'"), + "ИмяМетода", ИмяМетода, "ОбщегоНазначения.ВыполнитьМетодОбъекта"); КонецПопытки; Если ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда @@ -9088,7 +9121,7 @@ Функция МинимальнаяВерсияПлатформы() Экспорт // АПК:581 - Возврат "8.3.14.1694; 8.3.15.2107; 8.3.16.1814; 8.3.17.1851; 8.3.18.1208"; + Возврат "8.3.17.1851; 8.3.18.1208"; КонецФункции diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl index 8ae38deb7..bd57cce90 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl @@ -55,19 +55,11 @@ // 2. Передача в параметре КлючДанных значения типа отличного от допустимого. // 3. Установка ссылки без установки поля (и/или пути к данным). // -Процедура СообщитьПользователю( - Знач ТекстСообщенияПользователю, - Знач КлючДанных = Неопределено, - Знач Поле = "", - Знач ПутьКДанным = "", - Отказ = Ложь) Экспорт +Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, + Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт - ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю( - ТекстСообщенияПользователю, - КлючДанных, - Поле, - ПутьКДанным, - Отказ); + ОбщегоНазначенияСлужебныйКлиентСервер.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, + Поле, ПутьКДанным, Отказ); КонецПроцедуры @@ -447,7 +439,8 @@ // если Ложь - снять фиксацию, если Неопределено - не изменять. // // Возвращаемое значение: -// Структура, ФиксированнаяСтруктура, +// Структура +// ФиксированнаяСтруктура // Соответствие // ФиксированноеСоответствие // Массив diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl index dff3d0221..4a6322f4e 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl @@ -289,13 +289,19 @@ Контекст = "ОбщегоНазначенияКлиентСервер.ПроверитьПараметр"; Проверить(ТипЗнч(ИмяПроцедурыИлиФункции) = Тип("Строка"), - НСтр("ru = 'Недопустимое значение параметра ИмяПроцедурыИлиФункции'"), Контекст); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1.'"), "ИмяПроцедурыИлиФункции"), + Контекст); Проверить(ТипЗнч(ИмяПараметра) = Тип("Строка"), - НСтр("ru = 'Недопустимое значение параметра ИмяПараметра'"), Контекст); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1.'"), "ИмяПараметра"), + Контекст); ЭтоКорректныйТип = ЗначениеОжидаемогоТипа(ЗначениеПараметра, ОжидаемыеТипы); Проверить(ЭтоКорректныйТип <> Неопределено, - НСтр("ru = 'Недопустимое значение параметра ОжидаемыеТипы'"), Контекст); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1.'"), "ОжидаемыеТипы"), + Контекст); Проверить(ЭтоКорректныйТип, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недопустимое значение параметра %1 в %2. @@ -307,7 +313,8 @@ Если ТипЗнч(ЗначениеПараметра) = Тип("Структура") И ОжидаемыеТипыСвойств <> Неопределено Тогда Проверить(ТипЗнч(ОжидаемыеТипыСвойств) = Тип("Структура"), - НСтр("ru = 'Недопустимое значение параметра ИмяПроцедурыИлиФункции'"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1.'"), "ИмяПроцедурыИлиФункции"), Контекст); Для каждого Свойство Из ОжидаемыеТипыСвойств Цикл @@ -749,12 +756,12 @@ Версия1 = СтрРазделить(Строка1, "."); Если Версия1.Количество() <> 4 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра СтрокаВерсии1: %1'"), СтрокаВерсии1); + НСтр("ru = 'Неправильный формат параметра %1: %2'"), "СтрокаВерсии1", СтрокаВерсии1); КонецЕсли; Версия2 = СтрРазделить(Строка2, "."); Если Версия2.Количество() <> 4 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра СтрокаВерсии2: %1'"), СтрокаВерсии2); + НСтр("ru = 'Неправильный формат параметра %1: %2'"), "СтрокаВерсии2", СтрокаВерсии2); КонецЕсли; Результат = 0; @@ -784,12 +791,12 @@ Версия1 = СтрРазделить(Строка1, "."); Если Версия1.Количество() <> 3 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра СтрокаВерсии1: %1'"), СтрокаВерсии1); + НСтр("ru = 'Неправильный формат параметра %1: %2'"), "СтрокаВерсии1", СтрокаВерсии1); КонецЕсли; Версия2 = СтрРазделить(Строка2, "."); Если Версия2.Количество() <> 3 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра СтрокаВерсии2: %1'"), СтрокаВерсии2); + НСтр("ru = 'Неправильный формат параметра %1: %2'"), "СтрокаВерсии2", СтрокаВерсии2); КонецЕсли; Результат = 0; @@ -2642,6 +2649,79 @@ #КонецОбласти +#Область ПреобразованиеДатыДляHTTP + +// Преобразует универсальную дату в дату формата rfc1123-date. +// См. https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html, п. 3.3.1. +// +// Параметры: +// Дата - Дата +// +// Возвращаемое значение: +// Строка +// +// Пример: +// ДатаHTTP(Дата(2021,12,9,9,14,58)) = "Thu, 09 Dec 2021 09:14:58 GMT". +// +Функция ДатаHTTP(Знач Дата) Экспорт + + ДниНедели = СтрРазделить("Mon,Tue,Wed,Thu,Fri,Sat,Sun", ","); + Месяцы = СтрРазделить("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", ","); + + ШаблонДаты = "[ДеньНедели], [День] [Месяц] [Год] [Час]:[Минута]:[Секунда] GMT"; // АПК:1297 не локализуется + + ПараметрыДаты = Новый Структура; + ПараметрыДаты.Вставить("ДеньНедели", ДниНедели[ДеньНедели(Дата)-1]); + ПараметрыДаты.Вставить("День", Формат(День(Дата), "ЧЦ=2; ЧВН=")); + ПараметрыДаты.Вставить("Месяц", Месяцы[Месяц(Дата)-1]); + ПараметрыДаты.Вставить("Год", Формат(Год(Дата), "ЧЦ=4; ЧВН=; ЧГ=0")); + ПараметрыДаты.Вставить("Час", Формат(Час(Дата), "ЧЦ=2; ЧН=00; ЧВН=")); + ПараметрыДаты.Вставить("Минута", Формат(Минута(Дата), "ЧЦ=2; ЧН=00; ЧВН=")); + ПараметрыДаты.Вставить("Секунда", Формат(Секунда(Дата), "ЧЦ=2; ЧН=00; ЧВН=")); + + ДатаHTTP = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонДаты, ПараметрыДаты); + + Возврат ДатаHTTP; + +КонецФункции + +// Возвращает дату, преобразованную из формата rfc1123-date в тип Дата. +// См. https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html, п. 3.3.1. +// +// Параметры: +// ДатаСтрокойHTTP - Строка +// +// Возвращаемое значение: +// Дата +// +// Пример: +// ДатаRFC1123("Thu, 09 Dec 2021 09:14:58 GMT") = Дата(2021,12,9,9,14,58). +// +Функция ДатаRFC1123(ДатаСтрокойHTTP) Экспорт + + ИменаМесяцев = "janfebmaraprmayjunjulaugsepoctnovdec"; + // rfc1123-date = wkday "," SP date1 SP time SP "GMT". + ПозицияПервогоПробела = СтрНайти(ДатаСтрокойHTTP, " ");//с первого пробела до второго пробела идет дата. + ПодстрокаДата = Сред(ДатаСтрокойHTTP,ПозицияПервогоПробела + 1); + ПодстрокаВремя = Сред(ПодстрокаДата, 13); + ПодстрокаДата = Лев(ПодстрокаДата, 11); + ПозицияПервогоПробела = СтрНайти(ПодстрокаВремя, " "); + ПодстрокаВремя = Лев(ПодстрокаВремя,ПозицияПервогоПробела - 1); + // date1 = 2DIGIT SP month SP 4DIGIT. + ПодстрокаДень = Лев(ПодстрокаДата, 2); + ПодстрокаМесяц = Формат(Цел(СтрНайти(ИменаМесяцев,НРег(Сред(ПодстрокаДата,4,3))) / 3)+1, "ЧЦ=2; ЧН=00; ЧВН="); + ПодстрокаГод = Сред(ПодстрокаДата, 8); + // time = 2DIGIT ":" 2DIGIT ":" 2DIGIT. + ПодстрокаЧас = Лев(ПодстрокаВремя, 2); + ПодстрокаМинута = Сред(ПодстрокаВремя, 4, 2); + ПодстрокаСекунда = Прав(ПодстрокаВремя, 2); + + Возврат Дата(ПодстрокаГод + ПодстрокаМесяц + ПодстрокаДень + ПодстрокаЧас + ПодстрокаМинута + ПодстрокаСекунда); + +КонецФункции + +#КонецОбласти + #Область Прочее // Снимает один элемент условного оформления, если это список значений. @@ -2993,15 +3073,13 @@ Процедура ЗаполнитьКоллекциюСвойств(КоллекцияИсточник, КоллекцияПриемник) Экспорт Для Каждого Элемент Из КоллекцияИсточник Цикл - ЗаполнитьЗначенияСвойств(КоллекцияПриемник.Добавить(), Элемент); - КонецЦикла; КонецПроцедуры // Устарела. Следует использовать ОбщегоНазначенияКлиент.УстановитьВнешнееСоединениеСБазой -// или ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой +// или ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой. // Устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает указатель // на это соединение. // @@ -3179,7 +3257,7 @@ КонецФункции // Устарела. Следует использовать ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер -// или ОбщегоНазначения.КлиентПодключенЧерезВебСервер +// или ОбщегоНазначения.КлиентПодключенЧерезВебСервер. // Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер. // Если нет клиентского приложения, возвращается Ложь. // diff --git a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl index f90b69915..b014e6037 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl @@ -128,6 +128,16 @@ +КонецПроцедуры + +// Позволяет выполнить произвольные действия перед запуском программы. +// Например, настроить начальную страницу и другие параметры интерфейса в зависимости от режима работы. +// +// Вызывается после проверки минимальной версии платформы, заданной в процедуре +// ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности. +// +Процедура ПередЗапускомПрограммы() Экспорт + КонецПроцедуры // Определяет объекты метаданных и отдельные реквизиты, которые исключаются из результатов поиска ссылок, diff --git a/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиент/Module.bsl index dcce6c05a..f70c82721 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиент/Module.bsl @@ -96,8 +96,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"" в клиентском приложении |по причине: - |Недопустимо одновременно не указывать Идентификатор и ИдентификаторыСозданияОбъектов.'"), - Контекст.Местоположение); + |Недопустимо одновременно не указывать %2 и %3.'"), + Контекст.Местоположение, "Идентификатор", "ИдентификаторыСозданияОбъектов"); Иначе // В случае, когда в компоненте есть несколько классов объектов // Идентификатор используется только для отображения компоненты в текстах ошибок. @@ -586,14 +586,12 @@ Иначе ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось подключить внешнюю компоненту ""%1"". - |Возможно компонента не предназначена для клиентского приложения: %2. - | - |Техническая информация: - |%3 - |Метод НачатьПодключениеВнешнейКомпоненты вернул Ложь.'"), - Контекст.Идентификатор, - ВидПриложения(), - Контекст.Местоположение); + |Возможно компонента не предназначена для клиентского приложения %2. + | + |Техническая информация: + |%3 + |Метод %4 вернул Ложь.'"), + Контекст.Идентификатор, ВидПриложения(), Контекст.Местоположение, "НачатьПодключениеВнешнейКомпоненты"); ПодключитьКомпонентуОповеститьОбОшибке(ТекстОшибки, Контекст); КонецЕсли; diff --git a/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиентСервер/Module.bsl index 97520ebdb..ae018b9ee 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияСлужебныйКлиентСервер/Module.bsl @@ -31,13 +31,15 @@ ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска[0]); Результат = МассивВСтрокуКоманды(КомандаЗапуска); Иначе - ВызватьИсключение - НСтр("ru = 'Ожидалось, что первый элемент массива КомандаЗапуска будет командой или путем к исполняемому файлу.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ожидалось, что первый элемент массива %1 будет командой или путем к исполняемому файлу.'"), + "КомандаЗапуска"); КонецЕсли; Иначе - ВызватьИсключение - НСтр("ru = 'Ожидалось, что значение КомандаЗапуска будет <Строка> или <Массив>'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ожидалось, что значение %1 будет типа %2 или %3.'"), + "КомандаЗапуска", "Строка", "Массив"); КонецЕсли; Возврат Результат @@ -51,7 +53,7 @@ // Рассчитывает показатели числовых ячеек в табличном документе. // // Параметры: -// ТабличныйДокумент - ТабличныйДокумент - ТабличныйДокумент, показатели которого рассчитываются. +// ТабличныйДокумент - ТабличныйДокумент - табличный документ, показатели которого рассчитываются. // ВыделенныеОбласти - Массив из см. ОбщегоНазначенияСлужебныйКлиентСервер.ПараметрыРасчетаПоказателейЯчеек. // // Возвращаемое значение: diff --git a/SSL/src/CommonModules/ОтчетыКлиент/Module.bsl b/SSL/src/CommonModules/ОтчетыКлиент/Module.bsl index 081e1a581..8167ff5f3 100644 --- a/SSL/src/CommonModules/ОтчетыКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОтчетыКлиент/Module.bsl @@ -596,6 +596,36 @@ Возврат СтрСоединить(Результат, "/"); КонецФункции +Функция ВыборПереопределен(ФормаОтчета, Знач Обработчик, ЭлементКомпоновки, + ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора) Экспорт + + Если ТипЗнч(ЭлементКомпоновки) = Тип("ДоступныйПараметрКомпоновкиДанных") Тогда + ИмяПоля = Строка(ЭлементКомпоновки.Параметр); + ИначеЕсли ТипЗнч(ЭлементКомпоновки) = Тип("ДоступноеПолеОтбораКомпоновкиДанных") Тогда + ИмяПоля = Строка(ЭлементКомпоновки.Поле); + Иначе + ИмяПоля = ""; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИмяПоля) Тогда + Возврат Ложь; + КонецЕсли; + + УсловияВыбора = Новый Структура; + УсловияВыбора.Вставить("ИмяПоля", ИмяПоля); + УсловияВыбора.Вставить("ЭлементКомпоновки", ЭлементКомпоновки); + УсловияВыбора.Вставить("ДоступныеТипы", ДоступныеТипы); + УсловияВыбора.Вставить("Отмеченные", ОтмеченныеЗначения); + УсловияВыбора.Вставить("ПараметрыВыбора", Новый Массив(ПараметрыВыбора)); + + ОткрытьСтандартнуюФорму = Истина; + ИнтеграцияПодсистемБСПКлиент.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, Обработчик, ОткрытьСтандартнуюФорму); + ОтчетыКлиентПереопределяемый.ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, Обработчик, ОткрытьСтандартнуюФорму); + + Возврат Не ОткрытьСтандартнуюФорму; + +КонецФункции + Функция ЭтоВыборОбъектовМетаданных(ДоступныеТипы, Знач ОтмеченныеЗначения, Обработчик) Экспорт СоставТипов = ДоступныеТипы.Типы(); @@ -610,10 +640,10 @@ Индекс = Индекс - 1; КонецЦикла; - ЭтоВыборОбъектовМетаданных = (СоставТипов.Количество() = 0); + ЭтоВыборОбъектовМетаданных = ДоступныеТипы.Типы().Количество() > 0 И СоставТипов.Количество() = 0; Если ЭтоВыборОбъектовМетаданных Тогда - ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения); + ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения, ДоступныеТипы); ПараметрыПодбора = Новый Структура; ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", ОтмеченныеЗначения); @@ -626,24 +656,72 @@ Возврат ЭтоВыборОбъектовМетаданных; КонецФункции -Функция ЭтоВыборПользователей(ДоступныеТипы, Знач ОтмеченныеЗначения, ПараметрыВыбора, Обработчик) Экспорт +Функция ЭтоВыборПользователей(Форма, ЭлементФормы, ДоступныеТипы, Знач ОтмеченныеЗначения, ПараметрыВыбора, Обработчик) Экспорт + КоличествоТипов = ДоступныеТипы.Типы().Количество(); - ЭтоВыборПользователей = КоличествоТипов = 1 - И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) - Или КоличествоТипов = 2 - И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) - И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")); + Если КоличествоТипов = 1 Тогда + ЭтоВыборПользователей = + ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) + Или ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")); + + ИначеЕсли КоличествоТипов = 2 Тогда + ЭтоВыборПользователей = + ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")) + Или ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")) + Или ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыВнешнихПользователей")); + + ИначеЕсли КоличествоТипов = 4 Тогда + ЭтоВыборПользователей = + ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыВнешнихПользователей")); + Иначе + ЭтоВыборПользователей = Ложь; + КонецЕсли; Если ЭтоВыборПользователей Тогда - ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения); - ВыбратьПользователей(ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик); + ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения, ДоступныеТипы); + ВыбратьТип = + КоличествоТипов = 4 + Или КоличествоТипов = 2 + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) + И ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ВнешниеПользователи")); + + Контекст = Новый Структура; + Контекст.Вставить("ДоступныеТипы", ДоступныеТипы); + Контекст.Вставить("ОтмеченныеЗначения", ОтмеченныеЗначения); + Контекст.Вставить("ПараметрыВыбора", ПараметрыВыбора); + Контекст.Вставить("Обработчик", Обработчик); + + СписокТиповПользователей = Новый СписокЗначений; + + Если Не ВыбратьТип Тогда + Если ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.Пользователи")) Тогда + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.Пользователи")); + Иначе + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи")); + КонецЕсли; + ВыбратьПользователейПослеВыбораТипа(СписокТиповПользователей[0], Контекст); + Иначе + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.Пользователи")); + СписокТиповПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи")); + Форма.ПоказатьВыборИзМеню( + Новый ОписаниеОповещения("ВыбратьПользователейПослеВыбораТипа", ЭтотОбъект, Контекст), + СписокТиповПользователей, + ЭлементФормы); + КонецЕсли; КонецЕсли; Возврат ЭтоВыборПользователей; + КонецФункции -Процедура ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения) +Процедура ПроверитьОтмеченныеЗначения(ОтмеченныеЗначения, ДоступныеТипы) Индекс = ОтмеченныеЗначения.Количество() - 1; @@ -651,34 +729,74 @@ Элемент = ОтмеченныеЗначения[Индекс]; Индекс = Индекс - 1; - Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда + Если Не ДоступныеТипы.СодержитТип(ТипЗнч(Элемент.Значение)) + Или Не ЗначениеЗаполнено(Элемент.Значение) Тогда ОтмеченныеЗначения.Удалить(Элемент); КонецЕсли; КонецЦикла; КонецПроцедуры -Процедура ВыбратьПользователей(ДоступныеТипы, ОтмеченныеЗначения, ПараметрыВыбора, Обработчик) - ВыборГруппПользователей = ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")); - ВыбранныеПользователи = ОтмеченныеЗначения.ВыгрузитьЗначения(); +Процедура ВыбратьПользователейПослеВыбораТипа(ВыбранныйЭлемент, Контекст) Экспорт - Если ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")) Тогда - ЗаголовокФормыПодбора = НСтр("ru = 'Подбор групп и пользователей'"); - Иначе - ЗаголовокФормыПодбора = НСтр("ru = 'Подбор пользователей'"); + Если ВыбранныйЭлемент = Неопределено Тогда + Возврат; КонецЕсли; ПараметрыПодбора = Новый Структура; + + Если ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.Пользователи") Тогда + ПолноеИмяФормыВыбора = "Справочник.Пользователи.ФормаВыбора"; + Если Контекст.ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")) Тогда + ПараметрыПодбора.Вставить("ВыборГруппПользователей", Истина); + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор групп и пользователей'"); + Иначе + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор пользователей'"); + КонецЕсли; + Иначе + ПолноеИмяФормыВыбора = "Справочник.ВнешниеПользователи.ФормаВыбора"; + Если Контекст.ДоступныеТипы.СодержитТип(Тип("СправочникСсылка.ГруппыПользователей")) Тогда + ПараметрыПодбора.Вставить("ВыборГруппВнешнихПользователей", Истина); + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор групп и внешних пользователей'"); + Иначе + ЗаголовокФормыПодбора = НСтр("ru = 'Подбор внешних пользователей'"); + КонецЕсли; + КонецЕсли; + + ВыбранныеПользователи = Контекст.ОтмеченныеЗначения.ВыгрузитьЗначения(); + ПараметрыПодбора.Вставить("РежимВыбора", Истина); ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Ложь); ПараметрыПодбора.Вставить("МножественныйВыбор", Истина); ПараметрыПодбора.Вставить("РасширенныйПодбор", Истина); - ПараметрыПодбора.Вставить("ВыборГруппПользователей", ВыборГруппПользователей); - ПараметрыПодбора.Вставить("ПараметрыВыбора", ПараметрыВыбора); + ПараметрыПодбора.Вставить("ПараметрыВыбора", Контекст.ПараметрыВыбора); ПараметрыПодбора.Вставить("ЗаголовокФормыПодбора", ЗаголовокФормыПодбора); ПараметрыПодбора.Вставить("ВыбранныеПользователи", ВыбранныеПользователи); - ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыПодбора, ЭтотОбъект,,,, Обработчик); + ОткрытьФорму(ПолноеИмяФормыВыбора, ПараметрыПодбора, ЭтотОбъект,,,, Контекст.Обработчик); + +КонецПроцедуры + +Процедура ОбновитьПредставленияСписка(СписокПриемник, СписокИсточник) Экспорт + + Если ТипЗнч(СписокИсточник) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + Для Каждого Элемент Из СписокИсточник Цикл + + Если Не ЗначениеЗаполнено(Элемент.Представление) Тогда + Продолжить; + КонецЕсли; + + НайденныйЭлемент = СписокПриемник.НайтиПоЗначению(Элемент.Значение); + + Если НайденныйЭлемент <> Неопределено Тогда + НайденныйЭлемент.Представление = Элемент.Представление; + КонецЕсли; + + КонецЦикла; + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/ОтчетыКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОтчетыКлиентПереопределяемый/Module.bsl index 1073aed16..9f8f8c93f 100644 --- a/SSL/src/CommonModules/ОтчетыКлиентПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОтчетыКлиентПереопределяемый/Module.bsl @@ -69,6 +69,33 @@ +КонецПроцедуры + +// Обработчик переопределения параметров или формы выбора значений. +// +// Параметры: +// ФормаОтчета - ФормаКлиентскогоПриложения +// - РасширениеУправляемойФормыДляОтчета - форма отчета: +// * Отчет - ОтчетОбъект - структура данных формы аналогичная объекту отчета. +// +// УсловияВыбора - Структура: +// * ИмяПоля - Строка - имя параметра или поля элемента компоновки данных. +// * ЭлементКомпоновки - ДоступныйПараметрКомпоновкиДанных +// - ДоступноеПолеОтбораКомпоновкиДанных - элемент выбора. +// * ДоступныеТипы - ОписаниеТипов - типы доступные для выбора. +// * Отмеченные - СписокЗначений - значения выбранные ранее. +// * ПараметрыВыбора - Массив из ПараметрВыбора - настроенные параметры выбора. +// +// ОповещениеОЗакрытии - ОписаниеОповещения - оповещение о результате выбора. Вызывается +// после выбора с результатом типа Массив или СписокЗначений. +// +// СтандартнаяОбработка - Булево - если указать Ложь, то стандартная форма не будет открыта, +// в этом случае нужно открыть свою форму и выполнить ОповещениеОЗакрытии. +// +Процедура ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) Экспорт + + + КонецПроцедуры // Обработчик результата выбора подчиненной формы. diff --git a/SSL/src/CommonModules/ОтчетыКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОтчетыКлиентСервер/Module.bsl index af24952e1..67dbc34e9 100644 --- a/SSL/src/CommonModules/ОтчетыКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОтчетыКлиентСервер/Module.bsl @@ -93,17 +93,13 @@ // // КонецЕсли; // // * ПоляПоиска - Массив из Строка - коллекция имен полей компоновки данных, которые участвуют в универсальном поиске. -// // * ВариантПредставленияПериода - ПеречислениеСсылка.ВариантыПредставленияПериода - определяет вариант // представления периода на форме отчета. -// // * ВариантПериода - ПеречислениеСсылка.ВариантыПериода - определяет вариант формы выбора периода. -// +// * ОтключитьСтандартноеКонтекстноеМеню - Булево - признак, позволяющий выключить использование +// контекстного меню и настройки колонки отчета. // * СкрытьКомандыРассылки - Булево - флаг, позволяющий скрыть команды рассылок, у тех отчетов, // для которых рассылка не имеет смысла. -// Истина - команды рассылок будут скрыты, -// Ложь (по умолчанию) - команды будут доступны. -// // * Печать - Структура - параметры печати табличного документа "по умолчанию": // ** ПолеСверху - Число - отступ сверху при печати (в миллиметрах). // ** ПолеСлева - Число - отступ слева при печати (в миллиметрах). @@ -112,9 +108,7 @@ // ** ОриентацияСтраницы - ориентацияСтраницы - "Портрет" или "Ландшафт". // ** АвтоМасштаб - Булево - автоматически подгонять масштаб под размер страницы. // ** МасштабПечати - Число - масштаб изображения (в процентах). -// // * События - Структура - события, для которых определены обработчики в модуле объекта отчета: -// // ** ПриСозданииНаСервере - Булево - если Истина, то в модуле объекта отчета // следует определить обработчик события по шаблону: // @@ -148,6 +142,9 @@ // // Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки. // // Например, если схема отчета зависит от ключа варианта или параметров отчета. // // Чтобы изменения схемы вступили в силу следует вызывать метод ОтчетыСервер.ПодключитьСхему(). +// // В ДополнительныеСвойства параметра НовыеНастройкиКД и свойство Настройки компоновщика настроек +// // объекта включены свойства КлючВарианта, КлючПредопределенногоВарианта, КонтекстВарианта +// // и ФормаПараметрыОтбор. // // // // Параметры: // // Контекст - Произвольный - @@ -199,6 +196,24 @@ // // Обработка события. // КонецПроцедуры // +// ** ПослеЗагрузкиНастроекВКомпоновщик - Булево - если Истина, то в модуле объекта отчета +// следует определить обработчик события по шаблону: +// +// // Вызывается после загрузки всех настроек в компоновщик. +// // Используется для уточнения, например параметров выбора, +// // зависимых от значений загруженных фиксированных отборов. +// // Структура ДополнительныеСвойства объекта Настройки компоновщика настроек объекта отчета +// // содержит свойства КлючВарианта, КлючПредопределенногоВарианта, КонтекстВарианта, +// // ФормаПараметрыОтбор, заполненные ПередЗагрузкойНастроекВКомпоновщик, а также свойство +// // ВариантНаименование, которое можно изменить для предопределенного варианта отчета. +// // +// // Параметры: +// // ДополнительныеПараметры - Структура - резерв +// // +// Процедура ПослеЗагрузкиНастроекВКомпоновщик(ДополнительныеПараметры) Экспорт +// // Обработка события. +// КонецПроцедуры +// // ** ПередЗагрузкойВариантаНаСервере - Булево - если Истина, то в модуле объекта отчета // следует определить обработчик события по шаблону: // @@ -275,6 +290,9 @@ // ** ПриОпределенииПараметровВыбора - Булево - если Истина, то в модуле объекта отчета // следует определить обработчик события по шаблону: // +// Это устаревшее событие, вместо него рекомендуется применять +// новое событие ПослеЗагрузкиНастроекВКомпоновщик. +// // // Вызывается в форме отчета перед выводом настройки. // // // // Параметры: @@ -327,6 +345,28 @@ // Процедура ПриОпределенииОсновныхПолей(Форма, ОсновныеПоля) Экспорт // // Обработка события. // КонецПроцедуры +// +// ** ПередФормированиемОтчета - Булево - если Истина, то в модуле объекта отчета +// следует определить обработчик события по шаблону: +// +// // Позволяет предупредить пользователя перед формированием отчета, +// // на основе сделанных настроек, например, что отчет будет очень +// // долго формироваться и потребует много памяти. +// // Также позволяет рекомендовать настройку отборов. +// // +// // Параметры: +// // ФормаОтчета - ФормаКлиентскогоПриложения - форма отчета. +// // ДополнительныеПараметры - Структура: +// // * ТекстПредупреждения - Строка - возвращаемое значение, если указать непустую +// // строку пользователю будет задан вопрос с указанным текстом и +// // кнопками Продолжить / Отмена. +// // * ИмяПараметраХраненияОтказаОтПредупреждения - Строка - по умолчанию пусто, +// // если указать, пользователь сможет отказаться от предупреждения. +// // Для возобновления предупреждений нужно установить указанный параметр Ложь. +// // +// Процедура Процедура ПередФормированиемОтчета(ФормаОтчета, ДополнительныеПараметры) Экспорт +// // Обработка события. +// КонецПроцедуры // Функция НастройкиОтчетаПоУмолчанию() Экспорт Настройки = Новый Структура; @@ -344,6 +384,7 @@ Настройки.Вставить("ПоляПоиска", Новый Массив); Настройки.Вставить("ВариантПредставленияПериода", ПредопределенноеЗначение("Перечисление.ВариантыПредставленияПериода.Стандартный")); Настройки.Вставить("ВариантПериода", ПредопределенноеЗначение("Перечисление.ВариантыПериода.Стандартный")); + Настройки.Вставить("ОтключитьСтандартноеКонтекстноеМеню", Ложь); Печать = Новый Структура; Печать.Вставить("ПолеСверху", 10); @@ -359,6 +400,7 @@ События = Новый Структура; События.Вставить("ПриСозданииНаСервере", Ложь); События.Вставить("ПередЗагрузкойНастроекВКомпоновщик", Ложь); + События.Вставить("ПослеЗагрузкиНастроекВКомпоновщик", Ложь); События.Вставить("ПередЗагрузкойВариантаНаСервере", Ложь); События.Вставить("ПриЗагрузкеВариантаНаСервере", Ложь); События.Вставить("ПриЗагрузкеПользовательскихНастроекНаСервере", Ложь); @@ -368,6 +410,7 @@ События.Вставить("ПриОпределенииИспользуемыхТаблиц", Ложь); События.Вставить("ПриОпределенииСвойствЭлементовФормыНастроек", Ложь); События.Вставить("ПриОпределенииОсновныхПолей", Ложь); + События.Вставить("ПередФормированиемОтчета", Ложь); Настройки.Вставить("События", События); @@ -1946,28 +1989,6 @@ Возврат Результат; КонецФункции -Процедура ОбновитьПредставленияСписка(СписокПриемник, СписокИсточник) Экспорт - - Если ТипЗнч(СписокИсточник) <> Тип("СписокЗначений") Тогда - Возврат; - КонецЕсли; - - Для Каждого Элемент Из СписокИсточник Цикл - - Если Не ЗначениеЗаполнено(Элемент.Представление) Тогда - Продолжить; - КонецЕсли; - - НайденныйЭлемент = СписокПриемник.НайтиПоЗначению(Элемент.Значение); - - Если НайденныйЭлемент <> Неопределено Тогда - НайденныйЭлемент.Представление = Элемент.Представление; - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - Функция СтрЛевДоСимвола(Строка, Разделитель, Остаток = Неопределено) Позиция = СтрНайти(Строка, Разделитель); Если Позиция = 0 Тогда diff --git a/SSL/src/CommonModules/ОтчетыСервер/Module.bsl b/SSL/src/CommonModules/ОтчетыСервер/Module.bsl index da4019e97..1b7b7e29c 100644 --- a/SSL/src/CommonModules/ОтчетыСервер/Module.bsl +++ b/SSL/src/CommonModules/ОтчетыСервер/Module.bsl @@ -53,7 +53,7 @@ Если СобытиеФормы Тогда НастройкиОтчета = Контекст.НастройкиОтчета; АдресСхемы = НастройкиОтчета.АдресСхемы; - НастройкиОтчета.Вставить("СхемаМодифицирована", Истина); + НастройкиОтчета.СхемаМодифицирована = Истина; Иначе АдресСхемыЗаполнен = (ТипЗнч(Контекст.АдресСхемы) = Тип("Строка") И ЭтоАдресВременногоХранилища(Контекст.АдресСхемы)); Если Не АдресСхемыЗаполнен Тогда @@ -208,9 +208,10 @@ Кнопка = ФормаОтчета.Элементы.Вставить(Команда.Имя, Тип("КнопкаФормы"), Группа, ПередЧемВставить); Кнопка.ИмяКоманды = Команда.Имя; - Кнопка.ТолькоВоВсехДействиях = ТолькоВоВсехДействиях; Если ГруппаЕще = Неопределено Тогда + Кнопка.ПоложениеВКоманднойПанели = ?(ТолькоВоВсехДействиях, + ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю, ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели); Продолжить; КонецЕсли; @@ -459,12 +460,31 @@ // ** ГоризонтальнаяЕслиВозможно - ГруппировкаПодчиненныхЭлементовФормы - эквивалентно 2-м колонкам; // ** ГоризонтальнаяВсегда - ГруппировкаПодчиненныхЭлементовФормы - количество колонок равно количеству элементов // в группе. +// * Заголовок - Строка - см. синтакс-помощник - ГруппаФормы.Заголовок +// * ЦветФона - Цвет - см. синтакс-помощник - ГруппаФормы.ЦветФона +// * Подсказка - Строка - см. синтакс-помощник - ГруппаФормы.Подсказка +// * ОтображениеПодсказки - ОтображениеПодсказки - см. синтакс-помощник - ГруппаФормы.ОтображениеПодсказки +// * Высота - Число - см. синтакс-помощник - ГруппаФормы.Высота +// * Ширина - Число - см. синтакс-помощник - ГруппаФормы.Ширина +// * РастягиватьПоВертикали - Неопределено, Булево - см. синтакс-помощник - ГруппаФормы.РастягиватьПоВертикали +// * РастягиватьПоГоризонтали - Неопределено, Булево - см. синтакс-помощник - ГруппаФормы.РастягиватьПоГоризонтали // Функция СвойстваГруппыЭлементовФормы() Экспорт СвойстваГруппы = Новый Структура; СвойстваГруппы.Вставить("Отображение", ОтображениеОбычнойГруппы.Нет); СвойстваГруппы.Вставить("Группировка", ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно); + СвойстваГруппы.Вставить("Заголовок", ""); + СвойстваГруппы.Вставить("ЦветФона", Новый Цвет); + + СвойстваГруппы.Вставить("Подсказка", ""); + СвойстваГруппы.Вставить("ОтображениеПодсказки", ОтображениеПодсказки.Авто); + + СвойстваГруппы.Вставить("Высота", 0); + СвойстваГруппы.Вставить("Ширина", 0); + СвойстваГруппы.Вставить("РастягиватьПоВертикали", Неопределено); + СвойстваГруппы.Вставить("РастягиватьПоГоризонтали", Неопределено); + Возврат СвойстваГруппы; КонецФункции @@ -542,10 +562,9 @@ КонецЕсли; Если НастройкиОтчета.События.ПередЗагрузкойНастроекВКомпоновщик Тогда - НастройкиXML = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "НовыеНастройкиXML"); - Если ТипЗнч(НастройкиXML) = Тип("Строка") Тогда + Если ТипЗнч(НастройкиОтчета.НовыеНастройкиXML) = Тип("Строка") Тогда Попытка - Настройки = ОбщегоНазначения.ЗначениеИзСтрокиXML(НастройкиXML); + Настройки = ОбщегоНазначения.ЗначениеИзСтрокиXML(НастройкиОтчета.НовыеНастройкиXML); // Устанавливается связь со схемой, для восстановления неиспользовавшихся значений параметров данных, // которые теряются при сериализации настроек (см. синтакс-помощник: ЗначенияПараметровДанныхКомпоновкиДанных). @@ -560,10 +579,10 @@ НастройкиОтчета.НовыеНастройкиXML = Неопределено; КонецЕсли; - ПользовательскиеНастройкиXML = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "НовыеПользовательскиеНастройкиXML"); - Если ТипЗнч(ПользовательскиеНастройкиXML) = Тип("Строка") Тогда + Если ТипЗнч(НастройкиОтчета.НовыеПользовательскиеНастройкиXML) = Тип("Строка") Тогда Попытка - ПользовательскиеНастройки = ОбщегоНазначения.ЗначениеИзСтрокиXML(ПользовательскиеНастройкиXML); + ПользовательскиеНастройки = ОбщегоНазначения.ЗначениеИзСтрокиXML( + НастройкиОтчета.НовыеПользовательскиеНастройкиXML); Исключение ПользовательскиеНастройки = Неопределено; КонецПопытки; @@ -959,10 +978,24 @@ ПараметрыКД = НастройкиКД.ПараметрыДанных; ОтборыКД = НастройкиКД.Отбор; - Недоступный = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ВидСравненияКД = ВидСравненияКомпоновкиДанных.Равно; + РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + Представление = ""; + Идентификатор = ""; + Для Каждого КлючИЗначение Из СтруктураОтборов Цикл Имя = КлючИЗначение.Ключ; - Значение = КлючИЗначение.Значение; + + Если ЭтоОтборОбработчикаРасшифровкиПоДетальнымЗаписям(КлючИЗначение.Значение) Тогда + СвойстваОтбора = КлючИЗначение.Значение; + Значение = СвойстваОтбора.Значение; + ВидСравненияКД = СвойстваОтбора.ВидСравнения; + РежимОтображения = СвойстваОтбора.РежимОтображения; + Представление = СвойстваОтбора.Представление; + Идентификатор = СвойстваОтбора.ИдентификаторПользовательскойНастройки; + Иначе + Значение = КлючИЗначение.Значение; + КонецЕсли; Если ТипЗнч(Значение) = Тип("ФиксированныйМассив") Тогда Значение = Новый Массив(Значение); @@ -977,9 +1010,9 @@ ПараметрКД = ПараметрыКД.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Имя)); Если ТипЗнч(ПараметрКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда - ПараметрКД.ИдентификаторПользовательскойНастройки = ""; + ПараметрКД.ИдентификаторПользовательскойНастройки = Идентификатор; ПараметрКД.Использование = Истина; - ПараметрКД.РежимОтображения = Недоступный; + ПараметрКД.РежимОтображения = РежимОтображения; ПараметрКД.Значение = Значение; Продолжить; КонецЕсли; @@ -990,14 +1023,65 @@ Значение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Значение, "ПравоеЗначение"); ИначеЕсли ТипЗнч(Значение) = Тип("СписокЗначений") Тогда ВидСравненияКД = ВидСравненияКомпоновкиДанных.ВСписке; - Иначе - ВидСравненияКД = ВидСравненияКомпоновкиДанных.Равно; КонецЕсли; - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОтборыКД, Имя, Значение, ВидСравненияКД, , Истина, Недоступный, ""); - + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( + ОтборыКД, Имя, Значение, ВидСравненияКД, Представление, Истина, РежимОтображения, Идентификатор); КонецЦикла; КонецПроцедуры +Функция ЭтоОтборОбработчикаРасшифровкиПоДетальнымЗаписям(Отбор) + + Если ТипЗнч(Отбор) <> Тип("Структура") Тогда + Возврат Ложь; + КонецЕсли; + + СвойстваОтбора = ВариантыОтчетовСлужебныйКлиентСервер.СвойстваОтбораОбработчикаРасшифровкиПоДетальнымЗаписям(); + + Если Отбор.Количество() <> СвойстваОтбора.Количество() Тогда + Возврат Ложь; + КонецЕсли; + + Для Каждого Свойство Из СвойстваОтбора Цикл + + Если Не Отбор.Свойство(Свойство.Ключ) Тогда + Возврат Ложь; + КонецЕсли; + + КонецЦикла; + + Возврат Истина; + +КонецФункции + +Процедура ЗаполнитьДополнительныеСвойства(ОтчетОбъект, НовыеНастройки, Знач КлючВарианта, Знач КлючПредопределенногоВарианта, + Знач КонтекстВарианта = "", Знач ФормаПараметрыОтбор = Неопределено) Экспорт + + Если ТипЗнч(НовыеНастройки) = Тип("НастройкиКомпоновкиДанных") Тогда + ЗаполнитьДополнительноеСвойство(НовыеНастройки, "КлючВарианта", КлючВарианта); + ЗаполнитьДополнительноеСвойство(НовыеНастройки, "КлючПредопределенногоВарианта", КлючПредопределенногоВарианта); + ЗаполнитьДополнительноеСвойство(НовыеНастройки, "КонтекстВарианта", КонтекстВарианта); + ЗаполнитьДополнительноеСвойство(НовыеНастройки, "ФормаПараметрыОтбор", ФормаПараметрыОтбор, Новый Структура); + КонецЕсли; + + ТекущиеНастройки = ОтчетОбъект.КомпоновщикНастроек.Настройки; + ЗаполнитьДополнительноеСвойство(ТекущиеНастройки, "КлючВарианта", КлючВарианта); + ЗаполнитьДополнительноеСвойство(ТекущиеНастройки, "КлючПредопределенногоВарианта", КлючПредопределенногоВарианта); + ЗаполнитьДополнительноеСвойство(ТекущиеНастройки, "КонтекстВарианта", КонтекстВарианта); + ЗаполнитьДополнительноеСвойство(ТекущиеНастройки, "ФормаПараметрыОтбор", ФормаПараметрыОтбор, Новый Структура); + +КонецПроцедуры + +Процедура ЗаполнитьДополнительноеСвойство(Настройки, ИмяСвойства, ЗначениеСвойства, ЗначениеПоУмолчанию = "") + + Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда + Настройки.ДополнительныеСвойства.Вставить(ИмяСвойства, ЗначениеСвойства); + ИначеЕсли Не Настройки.ДополнительныеСвойства.Свойство(ИмяСвойства, ЗначениеСвойства) Тогда + Настройки.ДополнительныеСвойства.Вставить(ИмяСвойства, ЗначениеПоУмолчанию); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Пользовательские настройки @@ -1615,17 +1699,17 @@ КонецЕсли; ИмяГруппы = УзелИерархииЭлементов.Имя + "Строка" + НомерГруппы; - Группа = ?(ИдентификаторыГрупп.Количество() = 1, УзелИерархииЭлементов, Элементы.Найти(ИмяГруппы)); + Группа = Элементы.Найти(ИмяГруппы); Если Группа = Неопределено Тогда Группа = ГруппаЭлементовФормыНастроек(Форма, УзелИерархииЭлементов, ИмяГруппы); - Группа.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Строка %1'"), НомерГруппы); - - ЗаполнитьЗначенияСвойств(Группа, СвойстваГруппы,, "Группировка"); - Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + Группа.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Строка %1'"), НомерГруппы); КонецЕсли; + ЗаполнитьЗначенияСвойств(Группа, СвойстваГруппы,, "Группировка, Заголовок"); + Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + УточнитьСвойстваГруппыУзлаИерархииЭлементовФормыНастроек(Группа, СвойстваГруппы); + ПоискПолейГруппы = Новый Структура("ИдентификаторГруппы", ИдентификаторГруппы); СвойстваПолейГруппы = СвойстваЭлементов.Поля.НайтиСтроки(ПоискПолейГруппы); ЭлементыНастроекГруппы = ЭлементыНастроекГруппы(ЭлементыНастроек, СвойстваПолейГруппы); @@ -1633,14 +1717,74 @@ ДополнительныеСвойства = Форма.Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства; ПодготовитьЭлементыФормыНастроекКРаспределению( ЭлементыНастроекГруппы, СвойстваГруппы.Группировка, ЭтоОсновнаяФорма(Форма), ДополнительныеСвойства); - + РаспределитьЭлементыФормыНастроек(Форма, Группа, ЭлементыНастроекГруппы); КонецЦикла; + УточнитьСвойстваГруппУзлаИерархииЭлементовФормыНастроек(УзелИерархииЭлементов); + ВывестиСтилизованныеЭлементыФормыНастроек(Форма, ЭлементыНастроек, ОписаниеНастроек, ИменаРеквизитов, ВидыСтилизованныхЭлементов); ДобавитьОтступКолонок(Форма, ЭлементыНастроек, УзелИерархииЭлементов); КонецПроцедуры +Процедура УточнитьСвойстваГруппыУзлаИерархииЭлементовФормыНастроек(Группа, СвойстваГруппы) + + ЗаголовокГруппы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СвойстваГруппы, "Заголовок", ""); + + Если ЗначениеЗаполнено(ЗаголовокГруппы) Тогда + Группа.Заголовок = ЗаголовокГруппы; + КонецЕсли; + + Если Группа.Поведение = ПоведениеОбычнойГруппы.Обычное Тогда + Возврат; + КонецЕсли; + + Группа.ОтображатьЗаголовок = Истина; + + ГруппаСвернута = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СвойстваГруппы, "Свернута", Ложь); + + Если ГруппаСвернута Тогда + Группа.Скрыть(); + Иначе + Группа.Показать(); + КонецЕсли; + +КонецПроцедуры + +Процедура УточнитьСвойстваГруппУзлаИерархииЭлементовФормыНастроек(УзелИерархииЭлементов) + + ПоведениеПереопределено = ПоведениеГруппУзлаИерархииЭлементовФормыНастроекПереопределено(УзелИерархииЭлементов); + + Если Не ПоведениеПереопределено Тогда + Возврат; + КонецЕсли; + + Для Каждого Группа Из УзелИерархииЭлементов.ПодчиненныеЭлементы Цикл + Группа.Объединенная = Истина; + КонецЦикла; + +КонецПроцедуры + +Функция ПоведениеГруппУзлаИерархииЭлементовФормыНастроекПереопределено(УзелИерархииЭлементов) + + Для Каждого Группа Из УзелИерархииЭлементов.ПодчиненныеЭлементы Цикл + + Если ЗначениеЗаполнено(Группа.Подсказка) + Или ЗначениеЗаполнено(Группа.Высота) + Или ЗначениеЗаполнено(Группа.Ширина) + Или Группа.РастягиватьПоВертикали <> Неопределено + Или Группа.РастягиватьПоГоризонтали <> Неопределено + Или Группа.Поведение <> ПоведениеОбычнойГруппы.Обычное Тогда + + Возврат Истина; + КонецЕсли; + + КонецЦикла; + + Возврат Ложь; + +КонецФункции + Процедура ДобавитьОтступКолонок(Форма, ЭлементыНастроек, УзелИерархииЭлементов) Если Не ЭтоОсновнаяФорма(Форма) Тогда @@ -1671,6 +1815,7 @@ ИмяГруппы = УзелИерархииЭлементов.Имя + "ПоляКолонки" + НомерКолонки; ГруппаПолейКолонки = ГруппаЭлементовФормыНастроек(Форма, УзелИерархииЭлементов, ИмяГруппы); + ГруппаПолейКолонки.Группировка = Колонка.Группировка; ГруппаПолейКолонки.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поля колонки %1'"), НомерКолонки); @@ -1921,7 +2066,7 @@ // * Поля - ТаблицаЗначений // Процедура УстановитьСвойстваЭлементовФормыНастроек(Форма, ЭлементыНастроек, СвойстваЭлементов) - КомпоновщикНастроек = Форма.Отчет.КомпоновщикНастроек; + КомпоновщикНастроек = Форма.Отчет.КомпоновщикНастроек; #Область УстановкаСвойствЭлементовИспользование @@ -2918,6 +3063,8 @@ Список.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; Список.Высота = 3; Список.УстановитьДействие("ПриИзменении", "Подключаемый_Список_ПриИзменении"); + Список.УстановитьДействие("ПередНачаломДобавления", "Подключаемый_Список_ПередНачаломДобавления"); + Список.УстановитьДействие("ПередНачаломИзменения", "Подключаемый_Список_ПередНачаломИзменения"); Список.УстановитьДействие("ОбработкаВыбора", "Подключаемый_Список_ОбработкаВыбора"); ПоляСписка = Элементы.Добавить(Список.Имя + "Колонки", Тип("ГруппаФормы"), Список); @@ -2929,6 +3076,8 @@ ПолеПометки = Элементы.Добавить(ИмяСписка + "Пометка", Тип("ПолеФормы"), ПоляСписка); ПолеПометки.Вид = ВидПоляФормы.ПолеФлажка; ПолеПометки.ПутьКДанным = ИмяСписка + ".Пометка"; + ПолеПометки.РежимРедактирования = РежимРедактированияКолонки.Непосредственно; + ПолеПометки.УстановитьДействие("ПриИзменении", "Подключаемый_ПометкаЭлементаСписка_ПриИзменении"); ПолеЗначения = Элементы.Добавить(ИмяСписка + "Значение", Тип("ПолеФормы"), ПоляСписка); ПолеЗначения.Вид = ВидПоляФормы.ПолеВвода; diff --git a/SSL/src/CommonModules/ПереводТекстаНаДругиеЯзыки/Module.bsl b/SSL/src/CommonModules/ПереводТекстаНаДругиеЯзыки/Module.bsl index 3df5321cc..380b3eeb8 100644 --- a/SSL/src/CommonModules/ПереводТекстаНаДругиеЯзыки/Module.bsl +++ b/SSL/src/CommonModules/ПереводТекстаНаДругиеЯзыки/Module.bsl @@ -193,6 +193,46 @@ КонецФункции +Процедура ПеревестиТекстыТабличногоДокумента(ТабличныйДокумент, ЯзыкПеревода, ИсходныйЯзык) Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Возврат; + КонецЕсли; + + ТекстыЯчеек = Новый Соответствие; + + Для НомерСтроки = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл + Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); + Если ЗначениеЗаполнено(Область.Текст) Тогда + Текст = УбратьПараметрыИзТекста(Область.Текст).Текст; + ТекстыЯчеек.Вставить(Текст, Истина); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ТекстыДляПеревода = Новый Массив; + Для Каждого Элемент Из ТекстыЯчеек Цикл + ТекстыДляПеревода.Добавить(Элемент.Ключ); + КонецЦикла; + + Переводы = ПеревестиТексты(ТекстыДляПеревода, ЯзыкПеревода, ИсходныйЯзык); + + Для НомерСтроки = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл + Область = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); + Если ЗначениеЗаполнено(Область.Текст) Тогда + РезультатОбработки = УбратьПараметрыИзТекста(Область.Текст); + Текст = РезультатОбработки.Текст; + Если ЗначениеЗаполнено(Переводы[Текст]) Тогда + Область.Текст = ВернутьПараметрыВТекст(Переводы[Текст], РезультатОбработки.Параметры); + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -379,4 +419,48 @@ КонецФункции +Функция УбратьПараметрыИзТекста(Знач Текст) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + + НайденныеПараметры = МодульУправлениеПечатью.НайтиПараметрыВТексте(Текст); + ОбработанныеПараметры = Новый Массив; + + Счетчик = 0; + Для Каждого Параметр Из НайденныеПараметры Цикл + Если СтрНайти(Текст, Параметр) Тогда + Счетчик = Счетчик + 1; + Текст = СтрЗаменить(Текст, Параметр, ИдентификаторПараметра(Счетчик)); + ОбработанныеПараметры.Добавить(Параметр); + КонецЕсли; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("Текст", Текст); + Результат.Вставить("Параметры", ОбработанныеПараметры); + + Возврат Результат; + + КонецЕсли; + +КонецФункции + +Функция ВернутьПараметрыВТекст(Знач Текст, ОбработанныеПараметры) + + Для Счетчик = 1 По ОбработанныеПараметры.Количество() Цикл + Текст = СтрЗаменить(Текст, ИдентификаторПараметра(Счетчик), "%" + XMLСтрока(Счетчик)); + КонецЦикла; + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива(Текст, ОбработанныеПараметры); + +КонецФункции + +// Последовательность символов, которая не должна меняться при переводе на любой язык. +Функция ИдентификаторПараметра(Номер) + + Возврат "{<" + XMLСтрока(Номер) + ">}"; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/ПодключаемыеКоманды/Module.bsl b/SSL/src/CommonModules/ПодключаемыеКоманды/Module.bsl index cbd3992d6..0cb64b1ce 100644 --- a/SSL/src/CommonModules/ПодключаемыеКоманды/Module.bsl +++ b/SSL/src/CommonModules/ПодключаемыеКоманды/Module.bsl @@ -904,13 +904,7 @@ КнопкаФормы.ИмяКоманды = "КомандаДляВыводаВПустоеПодменю"; КнопкаФормы.Видимость = Ложь; КнопкаФормы.Доступность = Ложь; - - СистемнаяИнформация = Новый СистемнаяИнформация; - ВерсияПлатформы = СистемнаяИнформация.ВерсияПриложения; - ВерсияПлатформыБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияПлатформы); - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформыБезНомераСборки, "8.3.15") >= 0 Тогда - КнопкаФормы.ПоложениеВКоманднойПанели = ОбщегоНазначения.ВычислитьВБезопасномРежиме("ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели"); - КонецЕсли; + КнопкаФормы.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели; КонецЕсли; КонецЕсли; КонецЕсли; diff --git a/SSL/src/CommonModules/ПодключаемыеКомандыКлиентСервер/Module.bsl b/SSL/src/CommonModules/ПодключаемыеКомандыКлиентСервер/Module.bsl index 33ba40875..9939a7396 100644 --- a/SSL/src/CommonModules/ПодключаемыеКомандыКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ПодключаемыеКомандыКлиентСервер/Module.bsl @@ -72,6 +72,7 @@ ЕстьВидимыеКоманды = Ложь; Подменю = Форма.Элементы.Найти(КраткиеСведенияОПодменю.Имя); ИзменятьВидимость = (ТипЗнч(Подменю) = Тип("ГруппаФормы") И Подменю.Вид = ВидГруппыФормы.Подменю); + СкрыватьКомандуРазблокировкиОбъекта = СкрыватьКомандуРазблокировкиОбъекта(Форма); Для Каждого Команда Из КраткиеСведенияОПодменю.КомандыСУсловиямиВидимости Цикл КомандаЭлемент = Форма.Элементы[Команда.ИмяВФорме]; @@ -89,7 +90,10 @@ Прервать; КонецЕсли; КонецЦикла; - Если ИзменятьВидимость Тогда + + Если СкрыватьКомандуРазблокировкиОбъекта И ЭтоКомандаРазблокировкиОбъекта(Команда.УсловияВидимости) Тогда + КомандаЭлемент.Видимость = Ложь; + ИначеЕсли ИзменятьВидимость Тогда КомандаЭлемент.Видимость = Видимость; Иначе КомандаЭлемент.Доступность = Видимость; @@ -243,4 +247,25 @@ КонецФункции + +Функция ЭтоКомандаРазблокировкиОбъекта(Условия) + Для Каждого Условие Из Условия Цикл + ИмяРеквизита = Условие.Реквизит; + Если ИмяРеквизита = "ОбновлениеВерсииИБ_ОбъектЗаблокирован" Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; +КонецФункции + +Функция СкрыватьКомандуРазблокировкиОбъекта(Форма) + ПризнакБлокировки = Форма.Команды.Найти("ОбновлениеВерсииИБ_ОбъектЗаблокирован"); + Если ПризнакБлокировки = Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl index 1c5c18d62..6d612abaa 100644 --- a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl +++ b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl @@ -177,11 +177,10 @@ Дело = ТекущиеДела.Добавить(); Дело.Идентификатор = "ПолнотекстовыйПоискВДанныхОшибкаНастройкиПоиска"; Дело.ЕстьДела = (Состояние = "ОшибкаНастройкиПоиска"); - Дело.Представление = НСтр("ru = 'Ошибка настройки полнотекстового поиска'"); + Дело.Представление = НСтр("ru = 'Полнотекстовый поиск не настроен'"); Дело.Форма = "Обработка.ПолнотекстовыйПоискВДанных.Форма.УправлениеПолнотекстовымПоискомИИзвлечениемТекстов"; Дело.Подсказка = - НСтр("ru = 'Рассинхронизация значения константы ИспользоватьПолнотекстовыйПоиск - |и установленного режима полнотекстового поиска в информационной базе. + НСтр("ru = 'Рассинхронизация настройки программы и установленного режима полнотекстового поиска в информационной базе. |Попробуйте выключить полнотекстовый поиск и снова включить.'"); Дело.Владелец = Раздел; @@ -387,7 +386,9 @@ ИначеЕсли Направление = "СледующаяЧасть" Тогда СписокПоиска.СледующаяЧасть(ТекущаяПозиция); Иначе - ВызватьИсключение НСтр("ru = 'Параметр НаправлениеПоиска задан неверно.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Параметр %1 задан неверно. Ожидалось одно из значений: ""%2"", ""%3"" или ""%4"".'"), + "НаправлениеПоиска", "ПерваяЧасть", "ПредыдущаяЧасть", "СледующаяЧасть"); КонецЕсли; Исключение ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); diff --git a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаСлужебный/Module.bsl b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаСлужебный/Module.bsl index bc986f988..3f70c3f2f 100644 --- a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаСлужебный/Module.bsl @@ -286,7 +286,7 @@ НСтр("ru = '%1 | |Трассировка: - |ЗащищенноеСоединение: %2 + |Защищенное соединение: %2 |Таймаут: %3'"), ТекстОшибки, Формат(Соединение.Защищенное, НСтр("ru = 'БЛ=Нет; БИ=Да'")), @@ -484,9 +484,9 @@ НСтр("ru = '%1 | |Трассировка: - |ЗащищенноеСоединение: %2 + |Защищенное соединение: %2 |Таймаут: %3 - |ИспользоватьАутентификациюОС: %4'"), + |Аутентификация ОС: %4'"), ТекстОшибки, Формат(Соединение.Защищенное, НСтр("ru = 'БЛ=Нет; БИ=Да'")), Формат(Соединение.Таймаут, "ЧГ=0"), diff --git a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl index 66c7123a5..769b6c0ed 100644 --- a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl @@ -1320,6 +1320,11 @@ КонецЕсли; + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "3.1.6.8"; + Обработчик.РежимВыполнения = "Оперативно"; + Обработчик.Процедура = "Константы.ИспользоватьГруппыВнешнихПользователей.Обновить"; + КонецПроцедуры // Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриОпределенииНастроек @@ -1427,11 +1432,6 @@ ДополнениеОписания = " |Справочник.ВнешниеПользователи.Чтение.ВнешниеПользователи - |Справочник.ВнешниеПользователи.Изменение.ВнешниеПользователи - |Справочник.ГруппыВнешнихПользователей.Чтение.ВнешниеПользователи - |Справочник.ГруппыПользователей.Чтение.Пользователи - |Справочник.Пользователи.Чтение.Пользователи - |Справочник.Пользователи.Изменение.Пользователи |"; Описание = Описание + ДополнениеОписания; diff --git a/SSL/src/CommonModules/РаботаСАдресами/Module.bsl b/SSL/src/CommonModules/РаботаСАдресами/Module.bsl index 2ad7fca84..4d7fc7ed0 100644 --- a/SSL/src/CommonModules/РаботаСАдресами/Module.bsl +++ b/SSL/src/CommonModules/РаботаСАдресами/Module.bsl @@ -877,11 +877,11 @@ // * НаселенныйПунктСокращение - Строка - сокращение населенного пункта (если СтарыйСоставПолей = Ложь). // * Улица - Строка - представление улицы (только для адресов РФ). // * УлицаСокращение - Строка - сокращение улицы (если СтарыйСоставПолей = Ложь). -// * ТипДома - Строка - тип дома см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипДома - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Дом - Строка - представление дома (только для адресов РФ). -// * ТипКорпуса - Строка - тип корпуса см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипКорпуса - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Корпус - Строка - представление корпуса (только для адресов РФ). -// * ТипКвартиры - Строка - тип квартиры см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипКвартиры - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Квартира - Строка - представление квартиры (только для адресов РФ). // Состав свойств для телефона: // * КодСтраны - Строка - код страны. Например, +7. @@ -946,11 +946,11 @@ // * НаселенныйПунктСокращение - Строка - сокращение населенного пункта. // * Улица - Строка - представление улицы (только для адресов РФ). // * УлицаСокращение - Строка - сокращение улицы. -// * ТипДома - Строка - тип дома см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипДома - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Дом - Строка - представление дома (только для адресов РФ). -// * ТипКорпуса - Строка - тип корпуса см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипКорпуса - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Корпус - Строка - представление корпуса (только для адресов РФ). -// * ТипКвартиры - Строка - тип квартиры см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ. +// * ТипКвартиры - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // * Квартира - Строка - представление квартиры (только для адресов РФ). // * АдресРФ - Булево - если Истина, то адрес российский. // * Представление - Строка - представление адреса. @@ -1040,18 +1040,19 @@ Проверка.Наименование = НСтр("ru = 'Проверка адресов на соответствие адресному классификатору.'"); Проверка.Причины = НСтр("ru = 'Адрес контактной информации введен некорректно, устарел, был некорректно загружен из других источников или еще не внесен в Федеральную информационную адресную систему.'"); Рекомендация = НСтр("ru = 'В зависимости от ситуации следует выбрать один из вариантов: - |• Убедиться, что адрес введен корректно, проверив адрес на сайте ФНС России: https://fias.nalog.ru/ExtendedSearch + |• Убедиться, что адрес введен корректно, проверив адрес на сайте ФНС России: %1 |О некорректных или неполных адресных сведениях на сайте ФНС России рекомендуется сообщать в органы местного самоуправления или в службу технической поддержки online-сервисов ФНС России. |• Если адрес устарел вследствие переименования, переподчинения или упразднения адресных объектов (улиц, населенных пунктов), то введите актуальный адрес. | |Если адресный классификатор загружен в программу, то: |• предварительно следует его обновить до последней версии адресных сведений (Раздел Администрирование); |• для выявления и автоматического исправления устаревших адресов загрузить историю изменения адресов объектов - |Ссылка для быстрого перехода %1 + |Ссылка для быстрого перехода %2 | |Если работа ведется в распределенной информационной базе (РИБ), то исправления следует вносить только в главном узле. |Затем выполнить синхронизацию с подчиненными узлами.'"); Проверка.Рекомендация = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Рекомендация, + "https://fias.nalog.ru/ExtendedSearch", НавигационнаяСсылкаЗагрузкиАдресногоКлассификатора); Проверка.Идентификатор = "РаботаСАдресами.ПроверитьАдресаНаСоответствиеАдресномуКлассификатору"; @@ -3201,11 +3202,11 @@ | Классификатор.Код КАК Код, | Классификатор.Наименование КАК Наименование, | ЛОЖЬ КАК ПометкаУдаления, - | %2 КАК Представление + | &Представление КАК Представление |ИЗ | Классификатор КАК Классификатор |ГДЕ - | Классификатор.%1 ПОДОБНО &СтрокаПоиска"; + | Классификатор.ПолеПоиска ПОДОБНО &СтрокаПоиска"; Если ЗначениеЗаполнено(ШаблонОтбора) Тогда ШаблонЗапроса = ШаблонЗапроса + " @@ -3224,9 +3225,9 @@ | ЕСТЬNULL(СтраныМира.ПометкаУдаления, ЛОЖЬ) КАК ПометкаУдаления, | | ВЫБОР КОГДА СтраныМира.Ссылка ЕСТЬ NULL ТОГДА - | %2 + | &Представление | ИНАЧЕ - | %3 + | &ДругоеПредставление | КОНЕЦ КАК Представление | |ИЗ @@ -3237,7 +3238,7 @@ | Классификатор.Код = СтраныМира.Код | И Классификатор.Наименование = СтраныМира.Наименование |ГДЕ - | (СтраныМира.%1 ПОДОБНО &СтрокаПоиска ИЛИ Классификатор.%1 ПОДОБНО &СтрокаПоиска)"; + | (СтраныМира.ПолеПоиска ПОДОБНО &СтрокаПоиска ИЛИ Классификатор.ПолеПоиска ПОДОБНО &СтрокаПоиска)"; Если ЗначениеЗаполнено(ШаблонОтбора) Тогда ШаблонЗапроса = ШаблонЗапроса + " @@ -3253,20 +3254,23 @@ ИменаПолейСтрокой = СтрСоединить(ИменаПолей.ИменаПолейДляОтбораВКлассификаторе, ", "); ТекстЗапросаКлассификатор = "ВЫБРАТЬ - | " + ИменаПолейСтрокой + " + | &ИменаПолейСтрокой |ПОМЕСТИТЬ | Классификатор |ИЗ | &Классификатор КАК Классификатор |ИНДЕКСИРОВАТЬ ПО - | " + ИменаПолейСтрокой + " + | &ИменаПолейСтрокой |"; + ТекстЗапросаКлассификатор = СтрЗаменить(ТекстЗапросаКлассификатор, "&ИменаПолейСтрокой", ИменаПолейСтрокой); + НаборЗапросов = Новый Массив; Для Каждого ДанныеПоля Из ИменаПолей.СписокПолей Цикл - ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "%1", ДанныеПоля.Имя); - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%2", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "Классификатор")); - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%3", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "СтраныМира")); + ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "СтраныМира.ПолеПоиска", "СтраныМира." + ДанныеПоля.Имя); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Классификатор.ПолеПоиска", "Классификатор." + ДанныеПоля.Имя); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Представление", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "Классификатор")); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДругоеПредставление", СтрЗаменить(ДанныеПоля.ШаблонПредставления, "%1", "СтраныМира")); НаборЗапросов.Добавить(ТекстЗапроса); КонецЦикла; diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl index 80ef4d48d..a24ed8ac9 100644 --- a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl +++ b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl @@ -133,6 +133,18 @@ КонецФункции +// Добавляет возможность вывода числового реквизита прописью при печати. +// Для вызова из УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати. +// +// Параметры: +// ИсточникиДанныхПечати - см. УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати.ИсточникиДанныхПечати +// +Процедура ПодключитьИсточникДанныхПечатиЧислоПрописью(ИсточникиДанныхПечати) Экспорт + + ИсточникиДанныхПечати.Добавить(СхемаДанныеПечатиСуммаПрописью(), "ДанныеПечатиСуммаПрописью"); + +КонецПроцедуры + #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -309,6 +321,18 @@ КонецПроцедуры +// См. УправлениеПечатьюПереопределяемый.ПриПодготовкеДанныхПечати +Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, + ДополнительныеПараметры) Экспорт + + Если ИдентификаторСхемыКомпоновкиДанных = "ДанныеПечатиСуммаПрописью" Тогда + ДополнительныеПараметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Истина; + ВнешниеНаборыДанных.Вставить("Данные", ДанныеПечатиСуммаПрописью(ДополнительныеПараметры.ОписанияИсточниковДанных, КодЯзыка)); + Возврат; + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -550,4 +574,43 @@ Возврат НЕ Запрос.Выполнить().Пустой(); КонецФункции +Функция СхемаДанныеПечатиСуммаПрописью() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + + СписокПолей = МодульУправлениеПечатью.ТаблицаПолейДанныхПечати(); + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = "Ссылка"; + Поле.Представление = НСтр("ru = 'Ссылка'"); + Поле.ТипЗначения = Новый ОписаниеТипов(); + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = "ЧислоПрописью"; + Поле.Представление = НСтр("ru = 'Число прописью'"); + Поле.ТипЗначения = Новый ОписаниеТипов("Строка"); + + Возврат МодульУправлениеПечатью.СхемаКомпоновкиДанныхПечати(СписокПолей); + КонецЕсли; + +КонецФункции + +Функция ДанныеПечатиСуммаПрописью(ОписанияИсточниковДанных, КодЯзыка) + + ДанныеПечати = Новый ТаблицаЗначений(); + ДанныеПечати.Колонки.Добавить("Ссылка"); + ДанныеПечати.Колонки.Добавить("ЧислоПрописью"); + + Для Каждого ОписаниеИсточника Из ОписанияИсточниковДанных Цикл + СтрокаТаблицы = ДанныеПечати.Добавить(); + СтрокаТаблицы.Ссылка = ОписаниеИсточника.Владелец; + СтрокаТаблицы.ЧислоПрописью = СформироватьСуммуПрописью( + ОписаниеИсточника.Значение, ОписаниеИсточника.Владелец.ВалютаДокумента, , КодЯзыка); + КонецЦикла; + + Возврат ДанныеПечати; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалютСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалютСлужебный/Module.bsl index 57e49a90b..08ad555c9 100644 --- a/SSL/src/CommonModules/РаботаСКурсамиВалютСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РаботаСКурсамиВалютСлужебный/Module.bsl @@ -510,9 +510,9 @@ Для каждого ОбластьДанных Из ОбластиДляОбновления Цикл Попытка - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, ОбластьДанных); + МодульРаботаВМоделиСервиса.ВойтиВОбластьДанных(ОбластьДанных); Исключение - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось установить разделение сеанса %1 по причине: |%2'", ОбщегоНазначения.КодОсновногоЯзыка()), Формат(ОбластьДанных, "ЧН=0; ЧГ=0"), @@ -523,7 +523,6 @@ ТекстОшибки); ЗапланироватьОбновлениеКурсовВалют(ОбластьДанных); - Продолжить; КонецПопытки; @@ -531,14 +530,12 @@ ВалютыОбластейСтрокой = ОбщегоНазначения.ЗначениеВСтрокуXML(ВалютыОбластей); НачатьТранзакцию(); - Попытка ОбработатьКурсыОбластиВТранзакции(ЗапросОбщий, ВалютыОбластей, ТаблицаКурсов); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); - + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); МодульПоставляемыеДанные.ОбластьОбработана(ИдентификаторФайла, КодОбработчика, ОбластьДанных); - + ЗафиксироватьТранзакцию(); Исключение @@ -546,7 +543,8 @@ ОтменитьТранзакцию(); ВалютыОбластей = ОбщегоНазначения.ЗначениеИзСтрокиXML(ВалютыОбластейСтрокой); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось обновить курсы валют в области %1 по причине: |%2'", ОбщегоНазначения.КодОсновногоЯзыка()), Формат(ОбластьДанных, "ЧН=0; ЧГ=0"), diff --git a/SSL/src/CommonModules/РаботаСПочтовымиСообщениями/Module.bsl b/SSL/src/CommonModules/РаботаСПочтовымиСообщениями/Module.bsl index 2e74fd5c9..017fad595 100644 --- a/SSL/src/CommonModules/РаботаСПочтовымиСообщениями/Module.bsl +++ b/SSL/src/CommonModules/РаботаСПочтовымиСообщениями/Module.bsl @@ -418,6 +418,39 @@ КонецПроцедуры +// Получает с сайта ИТС рекомендации по устранению ошибки подключения к почтовому серверу. +// +// Параметры: +// ТекстОшибки - Строка - исходный текст ошибки. +// +// Возвращаемое значение: +// Структура: +// * ВозможныеПричины - Массив из ФорматированнаяСтрока +// * СпособыУстранения - Массив из ФорматированнаяСтрока +// +Функция ПоясненияПоОшибке(ТекстОшибки) Экспорт + + Возврат РаботаСПочтовымиСообщениямиСлужебный.ПоясненияПоОшибке(ТекстОшибки); + +КонецФункции + +// Подготавливает расширенное описание ошибки подключения к почтовому серверу. +// +// Параметры: +// ИнформацияОбОшибке - ИнформацияОбОшибке +// КодЯзыка - Строка - код языка реквизита. Например, "ru". +// ВключитьПодробноеПредставлениеОшибки - Булево - добавляет в текст ошибки стек. +// +// Возвращаемое значение: +// Строка +// +Функция РасширенноеПредставлениеОшибки(ИнформацияОбОшибке, КодЯзыка, ВключитьПодробноеПредставлениеОшибки = Истина) Экспорт + + Возврат РаботаСПочтовымиСообщениямиСлужебный.РасширенноеПредставлениеОшибки( + ИнформацияОбОшибке, КодЯзыка, ВключитьПодробноеПредставлениеОшибки); + +КонецФункции + #Область УстаревшиеПроцедурыИФункции // Выполняет отправку почтовых сообщений. diff --git a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl index ff203f11d..dd84819f0 100644 --- a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl @@ -121,6 +121,21 @@ КонецЕсли; КонецПроцедуры +// Открывает форму сообщения об ошибке, в которой помимо текста ошибки сообщаются возможные причины +// и способы устранения. +// +// Параметры: +// УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты +// Заголовок - Строка - текст заголовка в открываемой форме. +// ТекстОшибки - Строка - исходный текст исключения, рекомендуется передавать КраткоеПредставлениеОшибки. +// +Процедура СообщитьОбОшибкеПодключения(УчетнаяЗапись, Заголовок, ТекстОшибки) Экспорт + + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаНастроекУчетнойЗаписи", + Новый Структура("УчетнаяЗапись, Заголовок, ТекстОшибки", УчетнаяЗапись, Заголовок, ТекстОшибки)); + +КонецПроцедуры + #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -203,10 +218,10 @@ ВыполнитьОбработкуОповещения(ОбработчикРезультата, Ложь); КонецПроцедуры -Процедура ПроверитьНастройкиУчетнойЗаписи(УчетнаяЗапись) Экспорт +Процедура ПроверитьНастройкиУчетнойЗаписи(УчетнаяЗапись, Форма) Экспорт Параметры = Новый Структура("УчетнаяЗапись", УчетнаяЗапись); - ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаНастроекУчетнойЗаписи", Параметры); + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаНастроекУчетнойЗаписи", Параметры, Форма); КонецПроцедуры diff --git a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl index 63cd3f22c..72742d5e9 100644 --- a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl @@ -1379,10 +1379,14 @@ ОпределитьПапкуОтправленные(Соединение); КонецЕсли; Исключение + ТекстОшибки = РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось подключиться к серверу IMAP: + |%1'", ОбщегоНазначения.КодОсновногоЯзыка()), ТекстОшибки); + Если ПротоколПолученияПочты = ПротоколИнтернетПочты.IMAP И Не РеквизитыОтправителя.ИспользоватьДляПолучения Тогда - ТекстОшибки = НСтр("ru = 'Не удалось подключиться к серверу IMAP. Проверьте настройки учетной записи.'", ОбщегоНазначения.КодОсновногоЯзыка()); - ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты, - УчетнаяЗапись, ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, + Метаданные.Справочники.УчетныеЗаписиЭлектроннойПочты, УчетнаяЗапись, ТекстОшибки); ПротоколПолученияПочты = ПротоколИнтернетПочты.POP3; Соединение.Подключиться(Профиль, ПротоколПолученияПочты); Иначе @@ -1461,12 +1465,14 @@ // Обработка и журналирование исключения не требуется, т.к. // в вызывающий код передается исходное исключение, которое будет там обработано. КонецПопытки; + + ТекстОшибки = РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); Если РезультатыОтправкиПисем.Количество() = 0 Тогда ВызватьИсключение; Иначе ЗаписьЖурналаРегистрации(ИмяСобытияОтправкаПочты(), УровеньЖурналаРегистрации.Ошибка, , - УчетнаяЗапись, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + УчетнаяЗапись, ТекстОшибки); ТекстИсключения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); Возврат РезультатыОтправкиПисем; КонецЕсли; @@ -1670,7 +1676,7 @@ Протокол = "HTTPS"; Адрес = "downloads.v8.1c.ru"; Порт = Неопределено; - Описание = НСтр("ru = 'Поиск настроек почты.'"); + Описание = НСтр("ru = 'Поиск настроек почты и диагностика ошибок подключения.'"); МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме"); @@ -1690,4 +1696,200 @@ КонецФункции +Функция ПоясненияПоОшибке(ТекстОшибки, Знач КодЯзыка = Неопределено) Экспорт + + Если КодЯзыка = Неопределено Тогда + КодЯзыка = ТекущийЯзык().КодЯзыка; + КонецЕсли; + + ОписанияОшибок = Новый Массив; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + АдресФайла = "https://downloads.v8.1c.ru/content/common/settings/mailerrors.json"; + ЗагруженныйФайл = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(АдресФайла); + Если ЗагруженныйФайл.Статус Тогда + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.ОткрытьФайл(ЗагруженныйФайл.Путь); + ОписанияОшибок = ПрочитатьJSON(ЧтениеJSON, Истина); + ЧтениеJSON.Закрыть(); + КонецЕсли; + КонецЕсли; + + ВозможныеПричины = Новый Массив; + СпособыУстранения = Новый Массив; + + Для Каждого ОписаниеОшибки Из ОписанияОшибок Цикл + ШаблоныТекста = ОписаниеОшибки["SearchPatterns"]; + Если Не ЗначениеЗаполнено(ШаблоныТекста) Тогда + Продолжить; + КонецЕсли; + + Для Каждого ШаблонТекста Из ШаблоныТекста Цикл + Если Не СтрокаСоответствуетШаблону(ТекстОшибки, ШаблонТекста) Тогда + Продолжить; + КонецЕсли; + + Для Каждого Строка Из СтрРазделить(ЗначениеСвойства("Reason", ОписаниеОшибки, КодЯзыка), Символы.ПС, Ложь) Цикл + ВозможныеПричины.Добавить(Строка); + КонецЦикла; + + Для Каждого Элемент Из ОписаниеОшибки["HowToFix"] Цикл + Если Не СпособУстраненияПрименим(Элемент) Тогда + Продолжить; + КонецЕсли; + + СпособУстранения = Элемент[КодЯзыка]; + Если СпособУстранения = Неопределено Тогда + СпособУстранения = Элемент[ОбщегоНазначения.КодОсновногоЯзыка()]; + КонецЕсли; + СпособыУстранения.Добавить(СпособУстранения); + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Если Не ЗначениеЗаполнено(ВозможныеПричины) Тогда + Если Не ЗначениеЗаполнено(ОписанияОшибок) Тогда + ВозможныеПричины.Добавить(НСтр("ru = 'Отсутствует подключение к Интернету.'")); + КонецЕсли; + ВозможныеПричины.Добавить(НСтр("ru = 'Неверные настройки подключения к почтовому серверу.'")); + КонецЕсли; + + Если Не ЗначениеЗаполнено(СпособыУстранения) Тогда + Если Не ЗначениеЗаполнено(ОписанияОшибок) Тогда + СпособыУстранения.Добавить(НСтр("ru = 'Проверьте подключение к Интернету.'")); + КонецЕсли; + + СпособыУстранения.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр( + "ru = 'Попробуйте перенастроить почту (кнопка Перенастроить в настройках почты).'"), + "Перенастроить")); + СпособыУстранения.Добавить(НСтр("ru = 'Обратитесь к администратору локальной сети.'")); + СпособыУстранения.Добавить(НСтр("ru = 'Обратитесь к администратору почтового сервера.'")); + КонецЕсли; + + ВозможныеПричины = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ВозможныеПричины); + СпособыУстранения = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СпособыУстранения); + + Результат = Новый Структура; + Результат.Вставить("ВозможныеПричины", ФорматированныеСтроки(ВозможныеПричины)); + Результат.Вставить("СпособыУстранения", ФорматированныеСтроки(СпособыУстранения)); + + Возврат Результат; + +КонецФункции + +Функция ЗначениеСвойства(ИмяСвойства, КоллекцияСвойств, КодЯзыка) + + Результат = ""; + + Если ТипЗнч(КоллекцияСвойств[ИмяСвойства]) = Тип("Соответствие") Тогда + Результат = КоллекцияСвойств[ИмяСвойства][КодЯзыка]; + Если Не ЗначениеЗаполнено(Результат) Тогда + Результат = КоллекцияСвойств[ИмяСвойства][ОбщегоНазначения.КодОсновногоЯзыка()]; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ФорматированныйСписок(Строки) Экспорт + + Список = Новый Массив; + Для Индекс = 0 По Строки.ВГраница() Цикл + Строка = Строки[Индекс]; + + Список.Добавить("• "); + Список.Добавить(Строка); + Если Индекс < Строки.ВГраница() Тогда + Список.Добавить(Символы.ПС + Символы.ПС); + КонецЕсли; + КонецЦикла; + + Возврат Новый ФорматированнаяСтрока(Список); + +КонецФункции + +Функция ФорматированныеСтроки(Строки) + + Результат = Новый Массив; + Для Каждого Строка Из Строки Цикл + ФорматированнаяСтрока = СтроковыеФункции.ФорматированнаяСтрока(Строка); + Результат.Добавить(ФорматированнаяСтрока); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция СпособУстраненияПрименим(СпособУстранения) + + Результат = Истина; + + Теги = СтрРазделить(НРег(СпособУстранения["Tags"]), ","); + Для Каждого Тег Из Теги Цикл + Если Тег = "server" Тогда + Результат = Результат И Не ОбщегоНазначения.ИнформационнаяБазаФайловая(); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция РасширенноеПредставлениеОшибки(ИнформацияОбОшибке, КодЯзыка, ВключитьПодробноеПредставлениеОшибки = Истина) Экспорт + + КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ПоясненияПоОшибке = ПоясненияПоОшибке(КраткоеПредставлениеОшибки, КодЯзыка); + + Шаблон = НСтр("ru = '%1 + | + |Возможные причины: + |%2 + | + |Способы устранения: + |%3'", КодЯзыка); + + + ВозможныеПричины = ФорматированныйСписок(ПоясненияПоОшибке.ВозможныеПричины); + СпособыУстранения = ФорматированныйСписок(ПоясненияПоОшибке.СпособыУстранения); + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Шаблон, КраткоеПредставлениеОшибки, ВозможныеПричины, СпособыУстранения); + + Если ВключитьПодробноеПредставлениеОшибки Тогда + Шаблон = НСтр("ru = '%1 + | + |Дополнительная информация: + |%2'", КодЯзыка); + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ТекстОшибки, ПодробноеПредставлениеОшибки); + КонецЕсли; + + Возврат ТекстОшибки; + +КонецФункции + +Функция СтрокаСоответствуетШаблону(Знач Строка, Знач Шаблон) + + Строка = СтрСоединить(СтрРазделить(Строка, " " + Символы.ПС + Символы.ВК + Символы.Таб, Ложь), " "); + СтрокаСоответствуетШаблону = Истина; + + Для Каждого ЧастиШаблона Из СтрРазделить(Шаблон, "*", Ложь) Цикл + ФрагментДляПоиска = СтрСоединить(СтрРазделить(ЧастиШаблона, " " + Символы.ПС + Символы.ВК + Символы.Таб, Ложь), " "); + + Позиция = СтрНайти(Строка, ФрагментДляПоиска); + Если Позиция = 0 Тогда + СтрокаСоответствуетШаблону = Ложь; + Прервать; + КонецЕсли; + + Строка = Сред(Строка, Позиция + СтрДлина(ФрагментДляПоиска)); + КонецЦикла; + + Возврат СтрокаСоответствуетШаблону; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/РаботаСФайлами/Module.bsl b/SSL/src/CommonModules/РаботаСФайлами/Module.bsl index ec85f43d6..c145fcad2 100644 --- a/SSL/src/CommonModules/РаботаСФайлами/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайлами/Module.bsl @@ -41,11 +41,14 @@ КонецЕсли; ОбщегоНазначенияКлиентСервер.Проверить(ФайлОбъект <> Неопределено, - НСтр("ru = 'Недопустимое значение параметра ПрисоединенныйФайл'"), "РаботаСФайлами.ДвоичныеДанныеФайла"); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1'"), "ПрисоединенныйФайл"), + "РаботаСФайлами.ДвоичныеДанныеФайла"); ОбщегоНазначенияКлиентСервер.Проверить(Не ФайлОбъект.ЭтоГруппа, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра ПрисоединенныйФайл (папка файлов ""%1"")'"), - ОбщегоНазначения.ПредметСтрокой(ПрисоединенныйФайл)), "РаботаСФайлами.ДвоичныеДанныеФайла"); + НСтр("ru = 'Недопустимое значение параметра %1 (папка файлов ""%2"")'"), + "ПрисоединенныйФайл", ОбщегоНазначения.ПредметСтрокой(ПрисоединенныйФайл)), + "РаботаСФайлами.ДвоичныеДанныеФайла"); УстановитьОтключениеБезопасногоРежима(Истина); УстановитьПривилегированныйРежим(Истина); @@ -59,8 +62,9 @@ // Запись в журнал регистрации. СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Двоичные данные файла отсутствуют в регистре ДвоичныеДанныеФайлов. - |Файл: ""%1"".'"), + НСтр("ru = 'Двоичные данные файла отсутствуют в регистре %1. + |Файл: ""%2"".'"), + "ДвоичныеДанныеФайлов", ПолучитьНавигационнуюСсылку(ПрисоединенныйФайл)); КритичностьОшибки = ?(ВызыватьИсключение, УровеньЖурналаРегистрации.Ошибка, УровеньЖурналаРегистрации.Предупреждение); @@ -141,6 +145,11 @@ // * Служебный - Булево - признак того, что файл является служебным. // // Пример: +// +// // В этом примере установка идентификатора формы в параметре ДополнительныеПараметры предотвращает преждевременную +// // очистку временного хранилища из-за возможных серверных вызовов при открытии файлов (например, +// // если файл зашифрован или когда открывается форма текстового или табличного редактора). +// // // Открытие нескольких файлов. // ПараметрыДанныхФайла = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла(); // ПараметрыДанныхФайла.ИдентификаторФормы = УникальныйИдентификатор; @@ -148,9 +157,6 @@ // МассивДанныхФайлов.Добавить(РаботаСФайлами.ДанныеФайла(Выборка.Файл, ПараметрыДанныхФайла)); // КонецЦикла; // -// В этом примере установка идентификатора формы в параметре ДополнительныеПараметры предотвращает преждевременную -// очистку временного хранилища из-за возможных серверных вызовов при открытии файлов (например, -// если файл зашифрован или когда открывается форма текстового или табличного редактора). // Функция ДанныеФайла(Знач ПрисоединенныйФайл, Знач ДополнительныеПараметры = Неопределено, @@ -415,7 +421,8 @@ Функция ДобавитьФайлСДиска(ВладелецФайлов, ПутьКФайлуНаДиске) Экспорт Если Не ЗначениеЗаполнено(ВладелецФайлов) Тогда - ВызватьИсключение НСтр("ru = 'Не задано значение параметра ВладелецФайлов в РаботаСФайлами.ДобавитьФайлСДиска.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не задано значение параметра %1 в %2.'"), + "ВладелецФайлов","РаботаСФайлами.ДобавитьФайлСДиска"); КонецЕсли; Файл = Новый Файл(ПутьКФайлуНаДиске); @@ -556,7 +563,8 @@ РасширениеБезТочки = ПараметрыФайла.РасширениеБезТочки; Если Не ЗначениеЗаполнено(ВладелецФайлов) Тогда - ВызватьИсключение НСтр("ru = 'Не задано значение параметра ПараметрыФайла.ВладелецФайлов в РаботаСФайлами.ДобавитьФайл.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не задано значение параметра %1 в %2.'"), "ПараметрыФайла.ВладелецФайлов", "РаботаСФайлами.ДобавитьФайл"); КонецЕсли; ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище); // ДвоичныеДанные @@ -589,7 +597,8 @@ Если НоваяСсылкаНаФайл = Неопределено Тогда ИмяСправочника = РаботаСФайламиСлужебный.ИмяСправочникаХраненияФайлов(ВладелецФайлов, "", ЗаголовокОшибки, - НСтр("ru = 'В этом случае параметр ""НоваяСсылкаНаФайл"" должен быть указан.'")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В этом случае параметр ""%1"" должен быть указан.'"), "НоваяСсылкаНаФайл")); НоваяСсылкаНаФайл = Справочники[ИмяСправочника].ПолучитьСсылку(); Иначе @@ -899,7 +908,9 @@ Функция СконвертироватьФайлыВПрисоединенные(Знач ВладелецФайлов, ИмяСправочника = Неопределено) Экспорт Если Не ЗначениеЗаполнено(ВладелецФайлов) Тогда - ВызватьИсключение НСтр("ru = 'Не задано значение параметра ВладелецФайлов в РаботаСФайлами.СконвертироватьФайлыВПрисоединенные.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не задано значение параметра %1 в %2.'"), + "ВладелецФайлов","РаботаСФайлами.СконвертироватьФайлыВПрисоединенные"); КонецЕсли; Результат = Новый Соответствие; @@ -1490,7 +1501,8 @@ Процедура ИзменитьСправочникХраненияФайлов(Знач ВладелецФайлов, ИмяСправочника = Неопределено) Экспорт Если Не ЗначениеЗаполнено(ВладелецФайлов) Тогда - ВызватьИсключение НСтр("ru = 'Не задано значение параметра ВладелецФайлов в РаботаСФайлами.ИзменитьСправочникХраненияФайлов.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не задано значение параметра %1 в %2.'"), "ВладелецФайлов","РаботаСФайлами.ИзменитьСправочникХраненияФайлов"); КонецЕсли; ЗаголовокОшибки = НСтр("ru = 'Ошибка при конвертации присоединенных файлов.'"); @@ -2560,7 +2572,7 @@ И ДоступноИзменение Тогда ОчиститьФайл = Форма.Команды.Добавить("УправлениеПрисоединеннымиФайламиОчистить_" + НомерЭлемента); - ОчиститьФайл.Картинка = БиблиотекаКартинок.Очистить; + ОчиститьФайл.Картинка = БиблиотекаКартинок.ПолеВводаОчистить; ОчиститьФайл.Заголовок = НСтр("ru = 'Очистить'"); ОчиститьФайл.Подсказка = ОчиститьФайл.Заголовок; ЗаполнитьЗначенияСвойств(ОчиститьФайл, СвойстваКомандыФормыКартинка); @@ -2580,7 +2592,7 @@ Если ДобавляемыйЭлемент.РедактироватьФайл = "ВФорме" Тогда РедактироватьФайл = Форма.Команды.Добавить("УправлениеПрисоединеннымиФайламиОткрытьФорму_" + НомерЭлемента); - РедактироватьФайл.Картинка = БиблиотекаКартинок.Лупа; + РедактироватьФайл.Картинка = БиблиотекаКартинок.ПолеВводаОткрыть; РедактироватьФайл.Заголовок = НСтр("ru = 'Открыть карточку'"); РедактироватьФайл.Подсказка = НСтр("ru = 'Открыть карточку присоединенного файла'"); ЗаполнитьЗначенияСвойств(РедактироватьФайл, СвойстваКомандыФормыКартинка); diff --git a/SSL/src/CommonModules/РаботаСФайламиВТомахСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиВТомахСлужебный/Module.bsl index eda1c9d10..43b3c5049 100644 --- a/SSL/src/CommonModules/РаботаСФайламиВТомахСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиВТомахСлужебный/Module.bsl @@ -864,10 +864,10 @@ КонецПроцедуры // Параметры: -// Путь - Строка - Путь +// Путь - Строка - путь // // Возвращаемое значение: -// Структура - Каталог поиска удаляемых файлов: +// Структура - каталог поиска удаляемых файлов: // * Путь - Строка // * Тома - ТаблицаЗначений: // ** Ссылка - СправочникСсылка.ТомаХраненияФайлов @@ -1741,7 +1741,7 @@ ОтменитьТранзакцию(); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать том хранения файлов: %1 по причине: + НСтр("ru = 'Не удалось обработать том хранения файлов %1 по причине: |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl index a209c9519..724575fd0 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl @@ -270,6 +270,15 @@ КонецФункции +// Возвращает типы объектов метаданных присоединенных файлов. +// +// Возвращаемое значение: +// ОписаниеТипов. +// +Функция ТипыПрисоединенныхФайлов() Экспорт + Возврат Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип; +КонецФункции + // Возвращает общий модуль реализующий обработчики событий: // ПередОбновлениемДанныхФайла; // ПриОбновленииДанныхФайла; @@ -650,9 +659,7 @@ КонецЕсли; МетаданныеВладельца = Метаданные.НайтиПоТипу(ТипВладельцаФайлов); - ИменаСправочников = Новый Соответствие; - Если МетаданныеВладельца <> Неопределено Тогда ИмяСтандартногоОсновногоСправочника = МетаданныеВладельца.Имя + ?(СтрЗаканчиваетсяНа(МетаданныеВладельца.Имя, "ПрисоединенныеФайлы"), "", "ПрисоединенныеФайлы"); @@ -669,39 +676,35 @@ КонецЕсли; ОсновнойСправочникУказан = Ложь; + Ошибки = Новый Массив; + Ошибки.Добавить(НСтр("ru = 'Ошибка при определении имен справочников для хранения файлов.'")); Для каждого КлючИЗначение Из ИменаСправочников Цикл Если Метаданные.Справочники.Найти(КлючИЗначение.Ключ) = Неопределено Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения файлов. - |У владельца файлов типа ""%1"" - |указан несуществующий справочник ""%2"".'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |указан несуществующий справочник ""%2"".'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ))); ИначеЕсли Не СтрЗаканчиваетсяНа(КлючИЗначение.Ключ, "ПрисоединенныеФайлы") И Не КлючИЗначение.Ключ ="Файлы" Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения файлов. - |У владельца файлов типа ""%1"" - |указано имя справочника ""%2"" - |без окончания ""ПрисоединенныеФайлы"".'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |указано имя справочника ""%2"" + |без обязательного постфикса ""%3"".'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ), "ПрисоединенныеФайлы")); ИначеЕсли КлючИЗначение.Значение = Неопределено Тогда ИменаСправочников.Вставить(КлючИЗначение.Ключ, Ложь); ИначеЕсли КлючИЗначение.Значение = Истина Тогда Если ОсновнойСправочникУказан Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения файлов. - |У владельца файлов типа ""%1"" - |основной справочник указан более одного раза.'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |основной справочник указан более одного раза.'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ))); КонецЕсли; ОсновнойСправочникУказан = Истина; КонецЕсли; @@ -713,18 +716,22 @@ Возврат ИменаСправочников; КонецЕсли; - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения файлов. - |У владельца файлов типа ""%1"" - |не имеется справочников для хранения файлов.'"), - Строка(ТипВладельцаФайлов)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |не имеется справочников для хранения файлов.'"), + Строка(ТипВладельцаФайлов))); + ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС + Символы.ПС); КонецЕсли; + Если Ошибки.Количество() > 1 Тогда + ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС + Символы.ПС); + КонецЕсли; + Возврат ИменаСправочников; КонецФункции -// Создает у Получателя копии всех присоединенных файлов Источника. +// Создает у объекта Получатель копии всех присоединенных файлов объекта Источник. // Источник и Получатель должны быть объектами одного типа. // // Параметры: @@ -1012,16 +1019,18 @@ Элементы = Форма.Элементы; - ЭлектронноеПодписание = Ложь; + Подписание = Ложь; Шифрование = Ложь; - + ПросмотрЗашифрованных = Ложь; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный"); - Если МодульЭлектроннаяПодписьСлужебный.ИспользоватьИнтерактивноеДобавлениеЭлектронныхПодписейИШифрование() Тогда + Если МодульЭлектроннаяПодписьСлужебный.ИнтерактивноеИспользованиеЭлектронныхПодписейИШифрования() Тогда МодульЭлектроннаяПодпись = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодпись"); - ЭлектронноеПодписание = МодульЭлектроннаяПодпись.ИспользоватьЭлектронныеПодписи(); - Шифрование = МодульЭлектроннаяПодпись.ИспользоватьШифрование(); + Подписание = МодульЭлектроннаяПодпись.ДобавлениеИзменениеЭлектронныхПодписей(); + Шифрование = МодульЭлектроннаяПодпись.ШифрованиеИРасшифровкаДанных(); + ПросмотрЗашифрованных = МодульЭлектроннаяПодпись.РасшифровкаДанных(); КонецЕсли; КонецЕсли; @@ -1036,49 +1045,53 @@ Иначе Доступна = ДоступнаЭлектроннаяПодпись(ТипЗнч(Форма.Объект.Ссылка)); КонецЕсли; - Используется = (ЭлектронноеПодписание Или Шифрование) И Доступна; - - Если ЭтоФормаСписка Тогда - Элементы.СписокНомерКартинкиПодписанЗашифрован.Видимость = Используется; - КонецЕсли; Если Не ТолькоКартинкаСтрок Тогда - Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Используется; + + Элементы.ФормаГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Доступна; + + Элементы.ФормаПодписать.Видимость = Подписание; + Элементы.ФормаДобавитьПодписьИзФайла.Видимость = Подписание; + Элементы.ФормаЗашифровать.Видимость = Шифрование; + Элементы.ФормаРасшифровать.Видимость = ПросмотрЗашифрованных; Если ЭтоФормаСписка Тогда - Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Используется; + + Элементы.СписокКонтекстноеМенюПодписать.Видимость = Подписание; + Элементы.СписокКонтекстноеМенюДобавитьПодписьИзФайла.Видимость = Подписание; + Элементы.СписокКонтекстноеМенюЗашифровать.Видимость = Шифрование; + Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование.Видимость = Доступна; + Иначе - Элементы.ГруппаЭлектронныеПодписи.Видимость = ЭлектронноеПодписание И Доступна; - Элементы.ГруппаСертификатыШифрования.Видимость = Шифрование И Доступна; + + Элементы.ЭлектронныеПодписи.ИзменятьСоставСтрок = Подписание; + Элементы.ЭлектронныеПодписиПодписать.Видимость = Подписание; + Элементы.ЭлектронныеПодписиУдалить.Видимость = Подписание; + Элементы.ГруппаЭлектронныеПодписи.Видимость = Доступна; + Элементы.ГруппаСертификатыШифрования.Видимость = ПросмотрЗашифрованных И Доступна; + КонецЕсли; КонецЕсли; - Если Не Используется Тогда + Если Не Доступна Тогда Возврат; КонецЕсли; Если Не ТолькоКартинкаСтрок Тогда - Элементы.ФормаГруппаКомандЭлектроннаяПодпись.Видимость = ЭлектронноеПодписание; - Элементы.ФормаГруппаКомандШифрование.Видимость = Шифрование; - + Элементы.ФормаГруппаКомандШифрование.Видимость = ПросмотрЗашифрованных; Если ЭтоФормаСписка Тогда - Элементы.СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодпись.Видимость = ЭлектронноеПодписание; - Элементы.СписокКонтекстноеМенюГруппаКомандШифрование.Видимость = Шифрование; + Элементы.СписокКонтекстноеМенюГруппаКомандШифрование.Видимость = ПросмотрЗашифрованных; КонецЕсли; КонецЕсли; - Если ЭлектронноеПодписание И Шифрование Тогда + Если ПросмотрЗашифрованных Тогда Заголовок = НСтр("ru = 'Электронная подпись и шифрование'"); Подсказка = НСтр("ru = 'Наличие электронной подписи или шифрования'"); Картинка = БиблиотекаКартинок["ПодписанЗашифрованЗаголовок"]; - ИначеЕсли ЭлектронноеПодписание Тогда + Иначе Заголовок = НСтр("ru = 'Электронная подпись'"); Подсказка = НСтр("ru = 'Наличие электронной подписи'"); Картинка = БиблиотекаКартинок["ПодписанЭП"]; - Иначе // Шифрование - Заголовок = НСтр("ru = 'Шифрование'"); - Подсказка = НСтр("ru = 'Наличие шифрования'"); - Картинка = БиблиотекаКартинок["Зашифрован"]; КонецЕсли; Если ЭтоФормаСписка Тогда @@ -2691,10 +2704,10 @@ КонецПроцедуры // см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов -Процедура ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка) Экспорт +Процедура ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты) Экспорт Контекст.Вставить("УдаляемыеФайлы", Новый Массив); - Для Каждого УдаляемыйОбъект Из СвязанныеОбъекты Цикл + Для Каждого УдаляемыйОбъект Из УдаляемыеОбъекты Цикл Если НЕ Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.СодержитТип(ТипЗнч(УдаляемыйОбъект)) Тогда Продолжить; КонецЕсли; @@ -3560,45 +3573,45 @@ ИменаСправочников.Вставить("ВерсииФайлов", Истина); КонецЕсли; + Ошибки = Новый Массив; + Ошибки.Добавить(НСтр("ru = 'Ошибка при определении имен справочников для хранения версий файлов.'")); ОсновнойСправочникУказан = Ложь; Для каждого КлючИЗначение Из ИменаСправочников Цикл Если Метаданные.Справочники.Найти(КлючИЗначение.Ключ) = Неопределено Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения версий файлов. - |У владельца файлов типа ""%1"" - |указан несуществующий справочник ""%2"".'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |указан несуществующий справочник ""%2"".'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ))); ИначеЕсли Не СтрЗаканчиваетсяНа(КлючИЗначение.Ключ, "ВерсииПрисоединенныхФайлов") И Не КлючИЗначение.Ключ ="ВерсииФайлов" Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения версий файлов. - |У владельца файлов типа ""%1"" - |указано имя справочника ""%2"" - |без окончания ""ВерсииПрисоединенныхФайлов"".'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |указано имя справочника ""%2"" + |без обязательного постфикса ""%3"".'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ), "ВерсииПрисоединенныхФайлов")); ИначеЕсли КлючИЗначение.Значение = Неопределено Тогда ИменаСправочников.Вставить(КлючИЗначение.Ключ, Ложь); ИначеЕсли КлючИЗначение.Значение = Истина Тогда Если ОсновнойСправочникУказан Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при определении имен справочников для хранения версий файлов. - |У владельца файлов типа ""%1"" - |основной справочник версий указан более одного раза.'"), - Строка(ТипВладельцаФайлов), - Строка(КлючИЗначение.Ключ)); + Ошибки.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У владельца файлов типа ""%1"" + |основной справочник версий указан более одного раза.'"), + Строка(ТипВладельцаФайлов), Строка(КлючИЗначение.Ключ))); КонецЕсли; ОсновнойСправочникУказан = Истина; КонецЕсли; КонецЦикла; + Если Ошибки.Количество() > 1 Тогда + ВызватьИсключение СтрСоединить(Ошибки, Символы.ПС + Символы.ПС); + КонецЕсли; + Возврат ИменаСправочников; КонецФункции @@ -5616,7 +5629,7 @@ КонецПроцедуры Функция ПодготовитьФайлКУдалению(ПрисоединенныйФайл) - Перем Результат; + Результат = Неопределено; Попытка ЗаблокироватьДанныеДляРедактирования(ПрисоединенныйФайл); ФайлОбъект = ПрисоединенныйФайл.ПолучитьОбъект(); @@ -6393,7 +6406,7 @@ HTTPЗаголовки = СтандартныеПодсистемыСервер.HTTPЗаголовкиВНижнийРегистр(ПараметрыСинхронизации.Ответ.Заголовки); ИдентификаторEtag = ?(HTTPЗаголовки["идентификаторetag"] = Неопределено, "", HTTPЗаголовки["идентификаторetag"]); ДатаМодификацииФайла = ?(HTTPЗаголовки["last-modified"] = Неопределено, ТекущаяУниверсальнаяДата(), - ДатаRFC1123(HTTPЗаголовки["last-modified"])); + ОбщегоНазначенияКлиентСервер.ДатаRFC1123(HTTPЗаголовки["last-modified"])); ДлинаФайла = ФайлСДвоичнымиДанными.Размер(); // АПК:216-вкл @@ -6532,30 +6545,6 @@ КонецФункции -// Возвращает дату, преобразованную из формата RFC 1123 в тип Дата. -Функция ДатаRFC1123(ДатаСтрокойHTTP) - - ИменаМесяцев = "janfebmaraprmayjunjulaugsepoctnovdec"; - // rfc1123-date = wkday "," SP date1 SP time SP "GMT". - ПозицияПервогоПробела = СтрНайти(ДатаСтрокойHTTP, " ");//с первого пробела до второго пробела идет дата. - ПодстрокаДата = Сред(ДатаСтрокойHTTP,ПозицияПервогоПробела + 1); - ПодстрокаВремя = Сред(ПодстрокаДата, 13); - ПодстрокаДата = Лев(ПодстрокаДата, 11); - ПозицияПервогоПробела = СтрНайти(ПодстрокаВремя, " "); - ПодстрокаВремя = Лев(ПодстрокаВремя,ПозицияПервогоПробела - 1); - // date1 = 2DIGIT SP month SP 4DIGIT. - ПодстрокаДень = Лев(ПодстрокаДата, 2); - ПодстрокаМесяц = Формат(Цел(СтрНайти(ИменаМесяцев,НРег(Сред(ПодстрокаДата,4,3))) / 3)+1, "ЧЦ=2; ЧН=00; ЧВН="); - ПодстрокаГод = Сред(ПодстрокаДата, 8); - // time = 2DIGIT ":" 2DIGIT ":" 2DIGIT. - ПодстрокаЧас = Лев(ПодстрокаВремя, 2); - ПодстрокаМинута = Сред(ПодстрокаВремя, 4, 2); - ПодстрокаСекунда = Прав(ПодстрокаВремя, 2); - - Возврат Дата(ПодстрокаГод + ПодстрокаМесяц + ПодстрокаДень + ПодстрокаЧас + ПодстрокаМинута + ПодстрокаСекунда); - -КонецФункции - // Считывает основные данные о состоянии каталога на сервере. Используется для проверки подключения. Процедура ПрочитатьПараметрыКаталога(РезультатПроверки, HttpАдрес, СтруктураОбмена) @@ -7021,7 +7010,7 @@ ИначеЕсли ДочернийУзелPropstat.ЛокальноеИмя = "getetag" Тогда НоваяСтрокаДереваФайлов.Etag = ДочернийУзелPropstat.ТекстовоеСодержимое; ИначеЕсли ДочернийУзелPropstat.ЛокальноеИмя = "getlastmodified" Тогда - НоваяСтрокаДереваФайлов.ДатаМодификации = ДатаRFC1123(ДочернийУзелPropstat.ТекстовоеСодержимое);//UTC + НоваяСтрокаДереваФайлов.ДатаМодификации = ОбщегоНазначенияКлиентСервер.ДатаRFC1123(ДочернийУзелPropstat.ТекстовоеСодержимое);//UTC ИначеЕсли ДочернийУзелPropstat.ЛокальноеИмя = "getcontentlength" Тогда НоваяСтрокаДереваФайлов.Длина = Число(СтрЗаменить(ДочернийУзелPropstat.ТекстовоеСодержимое," ","")); КонецЕсли; @@ -9238,7 +9227,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + МассивСсылок.Количество(); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать объект: %1 по причине: + НСтр("ru = 'Не удалось обработать объект %1 по причине: |%2'"), ОбъектМетаданных, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); @@ -9253,7 +9242,7 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений не удалось обработать некоторые объекты (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые объекты (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе @@ -9262,7 +9251,7 @@ ОбъектМетаданных, , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений обработала очередную порцию объектов: %1'"), + НСтр("ru = 'Обработана очередная порция объектов: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВМоделиСервиса/Module.bsl index a1087df3b..762ff785c 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВМоделиСервиса/Module.bsl @@ -182,9 +182,9 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Объект метаданных %1 не может быть обработан обработчиком - |РаботаСФайламиСлужебныйВМоделиСервиса.ПередВыгрузкойОбъекта().'", + |%2.'", ОбщегоНазначения.КодОсновногоЯзыка()), - Объект.Метаданные().ПолноеИмя()); + Объект.Метаданные().ПолноеИмя(), "РаботаСФайламиСлужебныйВМоделиСервиса.ПередВыгрузкойОбъекта()"); КонецЕсли; @@ -267,8 +267,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Объект метаданных %1 не может быть обработан обработчиком - |РаботаСФайламиСлужебныйВМоделиСервиса.ПередВыгрузкойОбъекта().'", ОбщегоНазначения.КодОсновногоЯзыка()), - Объект.Метаданные().ПолноеИмя()); + |%2.'", ОбщегоНазначения.КодОсновногоЯзыка()), + Объект.Метаданные().ПолноеИмя(), "РаботаСФайламиСлужебныйВМоделиСервиса.ПередВыгрузкойОбъекта()"); КонецЕсли; diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl index 60ef65415..af6d3e6ea 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl @@ -708,8 +708,9 @@ // // Параметры: // Форма - ФормаКлиентскогоПриложения +// ЭтоНовый - Булево - файл не записан // -Процедура УстановитьДоступностьКомандСпискаЭлектронныхПодписей(Форма) Экспорт +Процедура УстановитьДоступностьКомандСпискаЭлектронныхПодписей(Форма, ЭтоНовый) Экспорт Элементы = Форма.Элементы; ЕстьПодписи = (Форма.ЭлектронныеПодписи.Количество() <> 0); @@ -718,16 +719,16 @@ ЭлектронныеПодписиОткрыть.Доступность = ЕстьПодписи; ЭлектронныеПодписиПроверить = Элементы.ЭлектронныеПодписиПроверить; // КнопкаФормы - ЭлектронныеПодписиПроверить.Доступность = ЕстьПодписи; + ЭлектронныеПодписиПроверить.Доступность = ЕстьПодписи И Не ЭтоНовый; ЭлектронныеПодписиПроверитьВсе = Элементы.ЭлектронныеПодписиПроверитьВсе; // КнопкаФормы - ЭлектронныеПодписиПроверитьВсе.Доступность = ЕстьПодписи; + ЭлектронныеПодписиПроверитьВсе.Доступность = ЕстьПодписи И Не ЭтоНовый; ЭлектронныеПодписиСохранить = Элементы.ЭлектронныеПодписиСохранить; // КнопкаФормы ЭлектронныеПодписиСохранить.Доступность = ЕстьПодписи; ЭлектронныеПодписиУдалить = Элементы.ЭлектронныеПодписиУдалить; // КнопкаФормы - ЭлектронныеПодписиУдалить.Доступность = ЕстьПодписи; + ЭлектронныеПодписиУдалить.Доступность = ЕстьПодписи И Не ЭтоНовый; КонецПроцедуры @@ -1401,8 +1402,8 @@ КонецЕсли; Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ТехнологияСервиса.ЭлектроннаяПодписьВМоделиСервиса") Тогда - МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьВМоделиСервисаКлиентСервер"); - ИспользоватьЭлектроннуюПодписьВМоделиСервиса = МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ИспользованиеВозможно(); + МодульЭлектроннаяПодписьВМоделиСервисаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьВМоделиСервисаКлиент"); + ИспользоватьЭлектроннуюПодписьВМоделиСервиса = МодульЭлектроннаяПодписьВМоделиСервисаКлиент.ИспользованиеВозможно(); Иначе ИспользоватьЭлектроннуюПодписьВМоделиСервиса = Ложь; КонецЕсли; @@ -4375,8 +4376,15 @@ Файл.УстановитьТолькоЧтение(Ложь); УдалитьФайлы(ПолноеИмяФайла); Исключение + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось удалить файл в рабочем каталоге: + |""%1"". + |Возможно он занят другим приложением. + | + |%2'"), + ПолноеИмяФайла, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), - "Предупреждение", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина); + "Предупреждение", ТекстСообщения,, Истина); КонецПопытки; КонецЕсли; @@ -6329,7 +6337,6 @@ // Удаление массива путей переданных папок и файлов. // Удаляет все файлы и папки из переданного массива. -// Обход с конца. // // Параметры: // ОбработчикРезультата - ОписаниеОповещения @@ -6341,9 +6348,6 @@ ПараметрыВыполнения = Новый Структура; ПараметрыВыполнения.Вставить("ОбработчикРезультата", ОбработчикРезультата); ПараметрыВыполнения.Вставить("СкопированныеФайлыИПапки", СкопированныеФайлыИПапки); - ПараметрыВыполнения.Вставить("ВГраница", СкопированныеФайлыИПапки.Количество() - 1); - ПараметрыВыполнения.Вставить("Индекс", 0); - УдалитьСодержимоеКаталогаЗапуск(ПараметрыВыполнения); КонецПроцедуры @@ -6351,8 +6355,9 @@ // Продолжение процедуры (см. выше). Процедура УдалитьСодержимоеКаталогаЗапуск(ПараметрыВыполнения) - Для Индекс = ПараметрыВыполнения.Индекс По ПараметрыВыполнения.ВГраница Цикл - Путь = ПараметрыВыполнения.СкопированныеФайлыИПапки[ПараметрыВыполнения.ВГраница - Индекс]; + ВерхняяГраница = ПараметрыВыполнения.СкопированныеФайлыИПапки.Количество() - 1; + Для Индекс = 0 По ВерхняяГраница Цикл + Путь = ПараметрыВыполнения.СкопированныеФайлыИПапки[ВерхняяГраница - Индекс]; Файл = Новый Файл(Путь); Если Не Файл.Существует() Тогда Продолжить; // Например временный файл Word ~aaa.doc мог быть удален при закрытии Word. @@ -6363,43 +6368,23 @@ Файл.УстановитьТолькоЧтение(Ложь); КонецЕсли; УдалитьФайлы(Путь); - ФайлУдален = Истина; Исключение - ФайлУдален = Ложь; + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось удалить файл в рабочем каталоге: + |""%1"". + |Возможно он занят другим приложением. + | + |%2'"), + Путь, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), - "Предупреждение", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина); + "Предупреждение", ТекстСообщения,, Истина); КонецПопытки; - - Если Не ФайлУдален Тогда - ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось удалить файл - |""%1"". - |Возможно он занят другим приложением. - | - |Повторить операцию?'"), - Путь); - ПараметрыВыполнения.Индекс = Индекс; - Обработчик = Новый ОписаниеОповещения("УдалитьСодержимоеКаталогаПослеОтветаНаВопросПовторить", ЭтотОбъект, ПараметрыВыполнения); - ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет); - Возврат; - КонецЕсли; КонецЦикла; ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, Истина); КонецПроцедуры -// Продолжение процедуры (см. выше). -Процедура УдалитьСодержимоеКаталогаПослеОтветаНаВопросПовторить(Ответ, ПараметрыВыполнения) Экспорт - - Если Ответ = КодВозвратаДиалога.Нет Тогда - ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, Ложь); - Иначе - УдалитьСодержимоеКаталогаЗапуск(ПараметрыВыполнения); - КонецЕсли; - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Импорт файлов с проверкой размера. @@ -6622,8 +6607,15 @@ ВыбранныйФайл.УстановитьТолькоЧтение(Ложь); УдалитьФайлы(ВыбранныйФайл.ПолноеИмя); Исключение + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось удалить файл после добавления в программу: + |""%1"". + |Возможно он занят другим приложением. + | + |%2'"), + ВыбранныйФайл.ПолноеИмя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), - "Предупреждение", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина); + "Предупреждение", ТекстСообщения,, Истина); КонецПопытки; КонецЦикла; diff --git a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl index 9e80f06fa..ff8c9b0ce 100644 --- a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl @@ -353,8 +353,8 @@ // Архивация вложений. АрхивацияВложений(ВложенияПолучателя, ПараметрыДоставки, СтрокаПолучатель.Значение); - ПредставлениеПолучателя = Строка(СтрокаПолучатель.Ключ); АдресПолучателя = ПараметрыДоставки.Получатели[СтрокаПолучатель.Ключ]; + ПредставлениеПолучателя = Строка(СтрокаПолучатель.Ключ) + " (" + АдресПолучателя + ")"; // Доставка. Попытка @@ -375,8 +375,9 @@ Исключение ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось отправить отчеты получателю ''%1'':'"), ПредставлениеПолучателя); - - ЗаписьЖурнала(ПараметрыЖурнала,, ТекстСообщения, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + РасширенноеПредставлениеОшибки = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки( + ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); + ЗаписьЖурнала(ПараметрыЖурнала,, ТекстСообщения, РасширенноеПредставлениеОшибки); КонецПопытки; Если РассылкаВыполнена Тогда @@ -1439,9 +1440,7 @@ // В существующих рассылках формируем только отчеты, готовые к рассылке. Если РассылкаОтчетовПовтИсп.ИсключаемыеОтчеты().Найти(Подключение.СсылкаОтчета) <> Неопределено Тогда ПараметрыОтчета.Ошибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Отчет ""%1"" не предназначен для рассылки. - |Подробнее см. в процедуре ОпределитьИсключаемыеОтчеты модуля РассылкаОтчетовПереопределяемый.'"), - Строка(Подключение.СсылкаОтчета)); + НСтр("ru = 'Отчет ""%1"" не предназначен для рассылки.'"), Строка(Подключение.СсылкаОтчета)); ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ПараметрыОтчета.Ошибки); Возврат Ложь; КонецЕсли; @@ -1451,7 +1450,7 @@ КонецЕсли; ПараметрыОтчета.КомпоновщикНастроекКД = Подключение.Объект.КомпоновщикНастроек; - // Определение принадлежности отчета к Системе Компоновки Данных. + // Определить, что отчет реализован на базе системы компоновки данных. Если ТипЗнч(ПараметрыОтчета.Настройки) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда ПараметрыОтчета.СКД = Истина; ИначеЕсли ТипЗнч(ПараметрыОтчета.Настройки) = Тип("ТаблицаЗначений") Тогда @@ -1762,8 +1761,11 @@ ПараметрыДоставки.ВыполненаПоЭлектроннойПочте = Истина; КонецЕсли; Исключение - ЗаписьЖурнала(ПараметрыЖурнала, , - ШаблонСообщенияОбОшибке, ИнформацияОбОшибке()); + РасширенноеПредставлениеОшибки = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки( + ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); + + ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, + ШаблонСообщенияОбОшибке, РасширенноеПредставлениеОшибки); КонецПопытки; КонецЕсли; diff --git a/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl b/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl index 0f805a8e1..912435bcb 100644 --- a/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl +++ b/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl @@ -10,7 +10,7 @@ // В локальном режиме работы возвращает регламентные задания, соответствующие отбору. // В модели сервиса - таблицу значений, в которой содержится описание найденных заданий -// в справочниках ОчередьЗаданий (если не установлены разделители) или ОчередьЗаданийОбластейДанных. +// в справочнике ОчередьЗаданий. // // Параметры: // Отбор - Структура - со свойствами: @@ -19,8 +19,7 @@ // режиме работы или идентификатор ссылки задания очереди в модели сервиса. // - Строка - строка уникального идентификатора регламентного задания в локальном // режиме работы или идентификатор ссылки задания очереди в модели сервиса. -// - СправочникСсылка.ОчередьЗаданий -// - СправочникСсылка.ОчередьЗаданийОбластейДанных - идентификатор задания +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания // очереди в модели сервиса. // * Метаданные - ОбъектМетаданныхРегламентноеЗадание - метаданные регламентного задания. // - Строка - имя регламентного задания. @@ -43,8 +42,7 @@ // * Ключ - Строка - прикладной идентификатор задания. // * Параметры - Массив - параметры, передаваемые в обработчик задания. // * Расписание - РасписаниеРегламентногоЗадания - расписание задания. -// * УникальныйИдентификатор - СправочникСсылка.ОчередьЗаданий -// - СправочникСсылка.ОчередьЗаданийОбластейДанных - идентификатор задания +// * УникальныйИдентификатор - СправочникСсылка.ОчередьЗаданий - идентификатор задания // очереди в модели сервиса. // * ЗапланированныйМоментЗапуска - Дата - дата и время запланированного запуска задания // (в часовом поясе области данных). @@ -145,8 +143,7 @@ // или идентификатор ссылки задания очереди в модели сервиса. // - РегламентноеЗадание - регламентное задание из которого нужно получить уникальный идентификатор // для получения свежей копии регламентного задания в локальном режиме работы. -// - СправочникСсылка.ОчередьЗаданий -// - СправочникСсылка.ОчередьЗаданийОбластейДанных - идентификатор задания очереди в модели сервиса. +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания очереди в модели сервиса. // - СтрокаТаблицыЗначений: см. НайтиЗадания // // Возвращаемое значение: @@ -290,8 +287,7 @@ // или идентификатор ссылки задания очереди в модели сервиса. // - РегламентноеЗадание - регламентное задание, уникальный идентификатор которого используется // для определения удаляемого экземпляра регламентного задания в локальном режиме работы. -// - СправочникСсылка.ОчередьЗаданий -// - СправочникСсылка.ОчередьЗаданийОбластейДанных - идентификатор задания очереди в модели сервиса. +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания очереди в модели сервиса. // - СтрокаТаблицыЗначений: см. НайтиЗадания // Процедура УдалитьЗадание(Знач Идентификатор) Экспорт @@ -358,8 +354,7 @@ // - УникальныйИдентификатор - идентификатор регламентного задания в локальном режиме работы // или идентификатор ссылки задания очереди в модели сервиса. // - РегламентноеЗадание - регламентное задание в локальном режиме работы. -// - СправочникСсылка.ОчередьЗаданий -// - СправочникСсылка.ОчередьЗаданийОбластейДанных - идентификатор задания очереди в модели сервиса. +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания очереди в модели сервиса. // - СтрокаТаблицыЗначений: см. НайтиЗадания // // Параметры - Структура - параметры, которые следует установить заданию, возможные свойства: @@ -1179,15 +1174,6 @@ МодульОчередьЗаданий = ОбщегоНазначения.ОбщийМодуль("ОчередьЗаданий"); СправочникДляЗадания = МодульОчередьЗаданий.СправочникОчередьЗаданий(); - МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); - Если МодульРаботаВМоделиСервиса.ЭтоРазделеннаяКонфигурация() Тогда - МодульОчередьЗаданийРазделениеДанных = ОбщегоНазначения.ОбщийМодуль("ОчередьЗаданийРазделениеДанных"); - ПереопределенныйСправочник = МодульОчередьЗаданийРазделениеДанных.ПриВыбореСправочникаДляЗадания(ПараметрыЗадания); - Если ПереопределенныйСправочник <> Неопределено Тогда - СправочникДляЗадания = ПереопределенныйСправочник; - КонецЕсли; - КонецЕсли; - Возврат СправочникДляЗадания.ПолучитьСсылку(Идентификатор); КонецФункции diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl index df24b77ff..8a3c9b244 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl @@ -541,45 +541,51 @@ Сообщения = Новый Соответствие; - // Переменные макетов Макет файла резервного копирования, Макет файла загрузка ИБ. - Сообщения.Вставить("[СообщениеНачалоЗапуска]", НСтр("ru = 'Запускается: {0}; параметры: {1}; окно: {2}; ожидание: {3}'")); - Сообщения.Вставить("[СообщениеДеталиИсключения]", НСтр("ru = 'Исключение в runApp: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатЗапуска]", НСтр("ru = 'Код возврата: {0}'")); - Сообщения.Вставить("[СообщениеОтказЗапуска]", НСтр("ru = 'Запускаемый файл не существует: {0}'")); - Сообщения.Вставить("[СообщениеЛогирование1С]", НСтр("ru = 'Исключение в log1CInternal: {0}, {1}'")); - Сообщения.Вставить("[СообщениеПутьКФайлуСкрипта]", НСтр("ru = 'Файл скрипта: {0}'")); - Сообщения.Вставить("[СообщениеПутьКФайлуРезервнойКопии]", НСтр("ru = 'Файл резервной копии: {0}'")); - Сообщения.Вставить("[СообщениеРезультатСозданияРезервнойКопииБазы]", НСтр("ru = 'Резервная копия успешно создана'")); - Сообщения.Вставить("[СообщениеОтказСозданияРезервнойКопииБазы]", НСтр("ru = 'Не удалось создать резервную копию базы'")); - Сообщения.Вставить("[СообщениеНачалоСеансаСоединенияСБазой]", НСтр("ru = 'Начат сеанс внешнего соединения с ИБ'")); - Сообщения.Вставить("[СообщениеРазрядностьОСНеопределена]", НСтр("ru = '<Неопределена>'")); - Сообщения.Вставить("[СообщениеВерсияCOMСоединителя]", НСтр("ru = 'Версия comcntr: {0} {1}'")); - Сообщения.Вставить("[СообщениеОтказСоединенияСБазой]", НСтр("ru = 'Исключение в createConnection на шаге: {0}, {1}, {2}'")); - Сообщения.Вставить("[СообщениеОтказЛогирования1С]", НСтр("ru = 'Исключение в write1CEventLog: {0}, {1}'")); - Сообщения.Вставить("[СообщениеОтказПриВызовеЗавершитьРезервноеКопирование]", НСтр("ru = 'Исключение при вызове РезервноеКопированиеИБСервер.ЗавершитьРезервноеКопирование: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатРезервногоКопированияБазы]", НСтр("ru = 'Резервное копирование базы выполнено успешно.'")); - Сообщения.Вставить("[СообщениеОтказРезервногоКопированияБазы]", НСтр("ru = 'Ошибка при резервном копировании информационной базы.'")); - Сообщения.Вставить("[СообщениеПараметрыБазы]", НСтр("ru = 'Параметры информационной базы: {0}.'")); - Сообщения.Вставить("[СообщениеРезервноеКопированиеЛогирование1С]", НСтр("ru = 'Протокол резервного копирования сохранен в журнал регистрации.'")); - Сообщения.Вставить("[СообщениеОтказЛогирования]", НСтр("ru = 'Исключение в writeEventLog: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРазмерФайлаРезервнойКопииВМб]", НСтр("ru = 'Размер файла 1Cv8.1CD: {0} Мб'")); - Сообщения.Вставить("[СообщениеОтказСжатияФайлаРезервнойКопиВZIP]", НСтр("ru = 'Размер файла 1Cv8.1CD превышает 2 Гб, поэтому сжатие в zip не используется'")); - Сообщения.Вставить("[СообщениеНачалоСозданияРезервнойКопииБазы]", НСтр("ru = 'Начато создание резервной копии...'")); - Сообщения.Вставить("[СообщениеОтказСозданияРезервнойКопииБазыПодробно]", НСтр("ru = 'Исключение при создании резервной копии базы: {0}, {1}'")); - Сообщения.Вставить("[СообщениеПредположениеОшибкиРезервногоКопированияБазы]", НСтр("ru = 'За 15 минут файл резервной копии все еще не начал создаваться (размер {0} байт), предположительно, из-за возникшей ошибки. Резервное копирование прервано'")); - Сообщения.Вставить("[СообщениеОшибкаУдаленияФайлаБлокировок]", НСтр("ru = 'Ошибка при удалении файла блокировок 1Cv8.cdn: {0}, {1}'")); + // Сообщения в макетах МакетФайлаРезервногоКопирования и МакетФайлаЗагрузкаИБ. + Сообщения["[СообщениеНачалоЗапуска]"] = НСтр("ru = 'Запускается: {0}; параметры: {1}; окно: {2}; ожидание: {3}'"); + Сообщения["[СообщениеДеталиИсключения]"] = НСтр("ru = 'Исключение при запуске приложения: {0}, {1}'"); + Сообщения["[СообщениеРезультатЗапуска]"] = НСтр("ru = 'Код возврата: {0}'"); + Сообщения["[СообщениеОтказЗапуска]"] = НСтр("ru = 'Запускаемый файл не существует: {0}'"); + Сообщения["[СообщениеЛогирование1С]"] = НСтр("ru = 'Исключение при записи журнала: {0}, {1}'"); + Сообщения["[СообщениеПутьКФайлуСкрипта]"] = НСтр("ru = 'Файл скрипта: {0}'"); + Сообщения["[СообщениеПутьКФайлуРезервнойКопии]"] = НСтр("ru = 'Файл резервной копии: {0}'"); + Сообщения["[СообщениеРезультатСозданияРезервнойКопииБазы]"] = НСтр("ru = 'Резервная копия успешно создана'"); + Сообщения["[СообщениеОтказСозданияРезервнойКопииБазы]"] = НСтр("ru = 'Не удалось создать резервную копию базы'"); + Сообщения["[СообщениеНачалоСеансаСоединенияСБазой]"] = НСтр("ru = 'Начат сеанс внешнего соединения с ИБ'"); + Сообщения["[СообщениеРазрядностьОСНеопределена]"] = НСтр("ru = '<Неопределена>'"); + Сообщения["[СообщениеВерсияCOMСоединителя]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Версия %1: {0} {1}'"), "comcntr.dll"); + Сообщения["[СообщениеОтказСоединенияСБазой]"] = НСтр("ru = 'Исключение при создании COM-соединения на шаге: {0}, {1}, {2}'"); + Сообщения["[СообщениеОтказЛогирования1С]"] = НСтр("ru = 'Исключение при записи в журнал регистрации: {0}, {1}'"); + Сообщения["[СообщениеОтказПриВызовеЗавершитьРезервноеКопирование]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}'"), "РезервноеКопированиеИБСервер.ЗавершитьРезервноеКопирование"); + Сообщения["[СообщениеРезультатРезервногоКопированияБазы]"] = НСтр("ru = 'Резервное копирование базы выполнено успешно.'"); + Сообщения["[СообщениеОтказРезервногоКопированияБазы]"] = НСтр("ru = 'Ошибка при резервном копировании информационной базы.'"); + Сообщения["[СообщениеПараметрыБазы]"] = НСтр("ru = 'Параметры информационной базы: {0}.'"); + Сообщения["[СообщениеРезервноеКопированиеЛогирование1С]"] = НСтр("ru = 'Протокол резервного копирования сохранен в журнал регистрации.'"); + Сообщения["[СообщениеОтказЛогирования]"] = НСтр("ru = 'Исключение при записи в журнал: {0}, {1}'"); + Сообщения["[СообщениеРазмерФайлаРезервнойКопииВМб]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Размер файла базы %1: {0} Мб'"), "1Cv8.1CD"); + Сообщения["[СообщениеОтказСжатияФайлаРезервнойКопиВZIP]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Размер файла базы %1 превышает 2 Гб, поэтому сжатие в zip не используется'"), "1Cv8.1CD"); + Сообщения["[СообщениеНачалоСозданияРезервнойКопииБазы]"] = НСтр("ru = 'Начато создание резервной копии...'"); + Сообщения["[СообщениеОтказСозданияРезервнойКопииБазыПодробно]"] = НСтр("ru = 'Исключение при создании резервной копии базы: {0}, {1}'"); + Сообщения["[СообщениеПредположениеОшибкиРезервногоКопированияБазы]"] = НСтр("ru = 'За 15 минут файл резервной копии все еще не начал создаваться (размер {0} байт), предположительно, из-за возникшей ошибки. Резервное копирование прервано.'"); + Сообщения["[СообщениеОшибкаУдаленияФайлаБлокировок]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при удалении файла блокировок %1: {0}, {1}'"), "1Cv8.CDN"); - // Переменные макетов Заставка резервного копирования, Заставка восстановления. - Сообщения.Вставить("[СообщениеЗаставкиОшибкаШага]", НСтр("ru = 'Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.'")); + // Сообщения в макетах ЗаставкаРезервногоКопирования и ЗаставкаВосстановления. + Сообщения["[СообщениеЗаставкиОшибкаШага]"] = НСтр("ru = 'Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.'"); - // Переменные макета Макет файла загрузка ИБ. - Сообщения.Вставить("[СообщениеОтказПриВызовеЗавершитьВосстановление]", НСтр("ru = 'Исключение при вызове РезервноеКопированиеИБСервер.ЗавершитьВосстановление: {0}, {1}'")); - Сообщения.Вставить("[СообщениеРезультатВосстановленияБазы]", НСтр("ru = 'Восстановление информационной базы прошло успешно.'")); - Сообщения.Вставить("[СообщениеОтказВосстановленияБазы]", НСтр("ru = 'Ошибка при восстановлении информационной базы.'")); - Сообщения.Вставить("[СообщениеВосстановлениеЛогирование1С]", НСтр("ru = 'Протокол восстановления сохранен в журнал регистрации.'")); - Сообщения.Вставить("[СообщениеОтказПереносаФайлаБазыВоВременныйКаталог]", НСтр("ru = 'Ошибка переноса файла базы во временный каталог (возможно к файлу базы подключены активные сеансы): {0}, {1}.'")); - Сообщения.Вставить("[СообщениеПопыткаПереносаФайлаБазыВоВременныйКаталог]", НСтр("ru = 'Попытка переноса файла базы во временный каталог ({0} из 5): {1}, {2}.'")); - Сообщения.Вставить("[СообщениеОтказВосстановленияБазыПодробно]", НСтр("ru = 'Исключение при восстановлении базы из резервной копии: {0}, {1}.'")); + // Сообщения в макетах МакетФайлаЗагрузкаИБ. + Сообщения["[СообщениеОтказПриВызовеЗавершитьВосстановление]"] = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Исключение при вызове %1: {0}, {1}'"), "РезервноеКопированиеИБСервер.ЗавершитьВосстановление"); + Сообщения["[СообщениеРезультатВосстановленияБазы]"] = НСтр("ru = 'Восстановление информационной базы прошло успешно.'"); + Сообщения["[СообщениеОтказВосстановленияБазы]"] = НСтр("ru = 'Ошибка при восстановлении информационной базы.'"); + Сообщения["[СообщениеВосстановлениеЛогирование1С]"] = НСтр("ru = 'Протокол восстановления сохранен в журнал регистрации.'"); + Сообщения["[СообщениеОтказПереносаФайлаБазыВоВременныйКаталог]"] = НСтр("ru = 'Ошибка переноса файла базы во временный каталог (возможно в программе есть активные сеансы): {0}, {1}.'"); + Сообщения["[СообщениеПопыткаПереносаФайлаБазыВоВременныйКаталог]"] = НСтр("ru = 'Попытка переноса файла базы во временный каталог ({0} из 5): {1}, {2}.'"); + Сообщения["[СообщениеОтказВосстановленияБазыПодробно]"] = НСтр("ru = 'Исключение при восстановлении базы из резервной копии: {0}, {1}.'"); Возврат Сообщения; diff --git a/SSL/src/CommonModules/СервисКриптографииDSS/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSS/Module.bsl index a98842215..c9f9d71e8 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSS/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSS/Module.bsl @@ -440,14 +440,15 @@ // Функция ПроверитьСертификат(ИдентификаторПользователя, ДанныеСертификата, ПараметрыОперации = Неопределено) Экспорт - НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, ПараметрыОперации); + НовыеПараметры = ПроверитьПараметрыОперации(ПараметрыОперации, "ТребуетАвторизации", Ложь); + НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, НовыеПараметры); АдресПодключения = НастройкиПользователя.Методы.СервисПроверки + "certificates"; СтруктураДокумента = СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента(ДанныеСертификата); ПараметрыЗапроса = Новый Структура; ПараметрыЗапроса.Вставить("Content", СтруктураДокумента.Документ); - РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , ПараметрыОперации); + РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , НовыеПараметры); Если РезультатЗапроса.Выполнено Тогда @@ -479,7 +480,8 @@ // Функция ПолучитьСведенияОПодписантах(ИдентификаторПользователя, ДанныеДокумента, ТипПодписи = "CMS", ПараметрыОперации = Неопределено) Экспорт - НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, ПараметрыОперации); + НовыеПараметры = ПроверитьПараметрыОперации(ПараметрыОперации, "ТребуетАвторизации", Ложь); + НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, НовыеПараметры); АдресПодключения = НастройкиПользователя.Методы.СервисПроверки + "signatures/signersInfo"; СтруктураДокумента = СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента(ДанныеДокумента); ИдТиповПодписей = СервисКриптографииDSSКлиентСервер.ПолучитьТипыПодписей(); @@ -488,7 +490,7 @@ ПараметрыЗапроса.Вставить("Content", СтруктураДокумента.Документ); ПараметрыЗапроса.Вставить("SignatureType", ИдТиповПодписей[ТипПодписи]); - РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , ПараметрыОперации); + РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , НовыеПараметры); Если РезультатЗапроса.Выполнено Тогда Результат = Новый Массив; @@ -551,7 +553,8 @@ Сертификат = Неопределено, ПараметрыОперации = Неопределено) Экспорт - НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, ПараметрыОперации); + НовыеПараметры = ПроверитьПараметрыОперации(ПараметрыОперации, "ТребуетАвторизации", Ложь); + НастройкиПользователя = ПолучитьНастройкиПользователя(ИдентификаторПользователя, НовыеПараметры); АдресПодключения = НастройкиПользователя.Методы.СервисПроверки + "signatures"; ИдТиповПодписей = СервисКриптографииDSSКлиентСервер.ПолучитьТипыПодписей(); СтруктураДокумента = СервисКриптографииDSSКлиентСервер.ПодготовитьДанныеДокумента(ДанныеДокумента); @@ -574,7 +577,7 @@ ПараметрыЗапроса.Вставить("Certificate", СтруктураДокумента.Документ); КонецЕсли; - РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , ПараметрыОперации); + РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(НастройкиПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , НовыеПараметры); МассивСертификатов = Новый Массив; Если РезультатЗапроса.Выполнено Тогда @@ -1642,7 +1645,7 @@ КонецЕсли; - РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(ИдентификаторПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , ПараметрыОперации); + РезультатЗапроса = ПодключитьВыполнитьМетодСервиса(ИдентификаторПользователя, АдресПодключения, ПараметрыЗапроса, "POST", "json", , ПараметрыОперации); Если РезультатЗапроса.Выполнено Тогда РезультатЗапроса.Вставить("ТипРезультата", ВозвращатьКак); @@ -3923,17 +3926,19 @@ КонецЕсли; ОбновилиТокен = Ложь; + ТребуетАвторизации = СвойствоСтруктуры(ПараметрыОперации, "ТребуетАвторизации", Истина); Для Счетчик = 1 По 2 Цикл // проверим на валидность токен авторизации - РезультатАвторизации = ПроверитьТокенАутентификации(НастройкиПользователя, Счетчик = 2, ПараметрыОперации); - ОбновилиТокен = ОбновилиТокен ИЛИ РезультатАвторизации.МаркерОбновлен; - Токен = ПолучитьЗначениеПароля(НастройкиПользователя.ТокенАвторизации.Токен, НастройкиПользователя); - Если ЗначениеЗаполнено(НастройкиПользователя.ТокенАвторизации.ТипТокена) Тогда - Заголовки.Вставить("Authorization", НастройкиПользователя.ТокенАвторизации.ТипТокена + " " - + Токен); + Если ТребуетАвторизации Тогда + РезультатАвторизации = ПроверитьТокенАутентификации(НастройкиПользователя, Счетчик = 2, ПараметрыОперации); + ОбновилиТокен = ОбновилиТокен ИЛИ РезультатАвторизации.МаркерОбновлен; + Токен = ПолучитьЗначениеПароля(НастройкиПользователя.ТокенАвторизации.Токен, НастройкиПользователя); + Если ЗначениеЗаполнено(НастройкиПользователя.ТокенАвторизации.ТипТокена) Тогда + Заголовки.Вставить("Authorization", НастройкиПользователя.ТокенАвторизации.ТипТокена + " " + Токен); + КонецЕсли; КонецЕсли; - РезультатЗапроса = СервисКриптографииDSSСлужебный.ВыполнитьМетодСервиса(Соединение, СвойстваПодключения.АдресПодключения, ПараметрыМетода, МетодHTTP, Заголовки, ТипСодержания); + РезультатЗапроса = СервисКриптографииDSSСлужебный.ВыполнитьМетодСервиса(Соединение, СвойстваПодключения.АдресПодключения, ПараметрыМетода, МетодHTTP, Заголовки, ТипСодержания); Если РезультатЗапроса.Выполнено ИЛИ НЕ СервисКриптографииDSSКлиентСервер.ЭтоОшибкаАутентификации(РезультатЗапроса.Ошибка) Тогда Прервать; КонецЕсли; diff --git a/SSL/src/CommonModules/СервисКриптографииDSSКлиентСервер/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSSКлиентСервер/Module.bsl index 0e5d82383..ce9382668 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSSКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSSКлиентСервер/Module.bsl @@ -2051,7 +2051,7 @@ // Функция ПодготовитьПараметрыОтправкиЗапроса(НастройкиПользователя, ДанныеПодтверждения) Экспорт - ПараметрыЗапроса = Новый Структура; + ПараметрыЗапроса = Новый Структура; Если ДанныеПодтверждения.ЭтапЦикла = "Начало" Тогда ПараметрыЗапроса.Вставить("Resource", НРег(НастройкиПользователя.Подключение.ИдентификаторПодписи)); @@ -2775,59 +2775,6 @@ КонецФункции -// Формируем представление перечисления способов авторизации на сервере. -// -// Параметры: -// ЗначениеВыбора - СписокЗначений - где значение ПеречислениеСсылка.СпособыАвторизацииDSS -// - ПеречислениеСсылка.СпособыАвторизацииDSS -// -// Возвращаемое значение: -// Строка -// Неопределено -// -Функция ПолучитьПредставлениеСпособовАвторизации(ЗначениеВыбора) Экспорт - - Результат = ""; - ВариантМобильногоПриложения = НСтр("ru = 'Мобильное приложение %1 или другое'"); - ВариантМобильногоПриложения = СтрШаблон(ВариантМобильногоПриложения, "myDSS 2.0"); - - Варианты = Новый Соответствие(); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные"), - НСтр("ru = 'Логин и пароль'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_ДвухФакторная"), - НСтр("ru = 'Логин и пароль с дополнительным подтверждением'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СертификатАвторизации"), - НСтр("ru = 'Сертификат авторизации'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_КодАвторизации"), - НСтр("ru = 'Авторизация через Web-форму'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_МобильноеПриложение"), - НСтр("ru = 'Мобильное приложение'") + " myDSS"); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_DSSSDK"), - ВариантМобильногоПриложения); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_ЭлектроннаяПочта"), - НСтр("ru = 'Электронная почта'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_СМС"), - НСтр("ru = 'SMS'")); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_AirKeyLite"), - НСтр("ru = 'Мобильное приложение'") + " AirKey DSS"); - Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_ОфлайнПодтверждение"), - НСтр("ru = 'Мобильное приложение недоступно'")); - - Если ТипЗнч(ЗначениеВыбора) = Тип("СписокЗначений") Тогда - Для Каждого СтрокаСписка Из ЗначениеВыбора Цикл - ТекущееЗначение = Варианты[СтрокаСписка.Значение]; - Если ЗначениеЗаполнено(ТекущееЗначение) Тогда - СтрокаСписка.Представление = ТекущееЗначение; - КонецЕсли; - КонецЦикла; - Иначе - Результат = Варианты[ЗначениеВыбора]; - КонецЕсли; - - Возврат Результат; - -КонецФункции - // Разбирает тип аутентификационного утверждения. // // Параметры: diff --git a/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеКлиент/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеКлиент/Module.bsl index c15a0add5..36a50a764 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеКлиент/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеКлиент/Module.bsl @@ -332,7 +332,7 @@ // Процедура ОформитьВремяИстекло(ЭлементФормы, ВремяИстекло = Истина) Экспорт - ПустойЦвет = Новый Цвет; + ПустойЦвет = Новый Цвет; // установка цвета элемента формы на значение по умолчанию ЦветФона = ?(ВремяИстекло, WebЦвета.НавахоБелый, ПустойЦвет); ЦветШрифта = ?(НЕ ВремяИстекло, WebЦвета.Серый, ПустойЦвет); ЭлементФормы.ЦветФона = ЦветФона; diff --git a/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеСервер/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеСервер/Module.bsl index ee5dcbc77..80c66a072 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеСервер/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSSПодтверждениеСервер/Module.bsl @@ -34,8 +34,12 @@ // * КодОшибки - Строка - код ошибки полученные при разборе результата запроса // * ГрафическийКод - Строка - полученный QRCode в формате строки Base64 // * Заголовок - Строка - заголовок формы подтверждения полученный от потребителя -// * СписокМетодов - Массив из см. СервисКриптографииDSSКлиентСервер.ОписаниеВторичнойАвторизации - -// варианты подтверждения полученные от сервиса. +// * СписокМетодов - Массив из Структура: +// ** Тип - ПеречислениеСсылка.СпособыАвторизацииDSS +// ** Идентификатор - ПеречислениеСсылка.СпособыАвторизацииDSS +// - Строка +// ** Адрес - Булево +// ** Описание - Строка // * ДоступныеМетоды - Массив - допустимые способы подтверждения полученные от потребителя // * КодПользователя - Строка - код подтверждения введенный пользователем // * ТипПодтверждения - Строка - поддерживаемые типы подтверждения: Транзакция, Аутентификация, ПроизвольнаяОперация diff --git a/SSL/src/CommonModules/СервисКриптографииDSSСлужебный/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSSСлужебный/Module.bsl index bd78ab0e4..56d4cc928 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSSСлужебный/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSSСлужебный/Module.bsl @@ -2890,14 +2890,14 @@ Функция ПолучитьЭлементСтиля(ИмяСтиля, ТипСтиля = "Шрифт") Экспорт Если ТипСтиля = "Шрифт" Тогда - Результат = Новый Шрифт(); + Результат = Новый Шрифт(); // установка шрифта элемента формы на значение по умолчанию ИначеЕсли ТипСтиля = "Рамка" Тогда ПараметрыОперации = Новый Массив; ПараметрыОперации.Добавить(ТипРамкиЭлементаУправления.БезРамки); ПараметрыОперации.Добавить(0); - Результат = Новый(Тип(ТипСтиля), ПараметрыОперации); + Результат = Новый(Тип(ТипСтиля), ПараметрыОперации); Иначе - Результат = Новый Цвет(); + Результат = Новый Цвет(); // установка цвета элемента формы на значение по умолчанию КонецЕсли; НашлиСтиль = Метаданные.ЭлементыСтиля.Найти(ИмяСтиля); @@ -3784,7 +3784,7 @@ Ответ = Соединение.Результат.ВызватьHTTPМетод(МетодHTTP, Запрос); Исключение ОтветМетода = ОтветСервисаПоУмолчанию(Ложь); - ПолучитьОписаниеОшибки(ОтветМетода, "ВыполнениеМетода"); + ПолучитьОписаниеОшибки(ОтветМетода, "ВыполнениеМетода", КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ПротоколОшибкиПриВызове(ОтветМетода.Ошибка, "ВыполнениеМетода", ПараметрыМетода, @@ -7292,6 +7292,59 @@ КонецФункции +// Формируем представление перечисления способов авторизации на сервере. +// +// Параметры: +// ЗначениеВыбора - СписокЗначений - где значение ПеречислениеСсылка.СпособыАвторизацииDSS +// - ПеречислениеСсылка.СпособыАвторизацииDSS +// +// Возвращаемое значение: +// Строка +// Неопределено +// +Функция ПолучитьПредставлениеСпособовАвторизации(ЗначениеВыбора) Экспорт + + Результат = ""; + ВариантМобильногоПриложения = НСтр("ru = 'Мобильное приложение %1 или другое'"); + ВариантМобильногоПриложения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ВариантМобильногоПриложения, "myDSS 2.0"); + + Варианты = Новый Соответствие(); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_УчетныеДанные"), + НСтр("ru = 'Логин и пароль'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_ДвухФакторная"), + НСтр("ru = 'Логин и пароль с дополнительным подтверждением'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_СертификатАвторизации"), + НСтр("ru = 'Сертификат авторизации'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Первичный_КодАвторизации"), + НСтр("ru = 'Авторизация через Web-форму'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_МобильноеПриложение"), + НСтр("ru = 'Мобильное приложение'") + " myDSS"); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_DSSSDK"), + ВариантМобильногоПриложения); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_ЭлектроннаяПочта"), + НСтр("ru = 'Электронная почта'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_СМС"), + НСтр("ru = 'SMS'")); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_AirKeyLite"), + НСтр("ru = 'Мобильное приложение'") + " AirKey DSS"); + Варианты.Вставить(ПредопределенноеЗначение("Перечисление.СпособыАвторизацииDSS.Вторичный_ОфлайнПодтверждение"), + НСтр("ru = 'Мобильное приложение недоступно'")); + + Если ТипЗнч(ЗначениеВыбора) = Тип("СписокЗначений") Тогда + Для Каждого СтрокаСписка Из ЗначениеВыбора Цикл + ТекущееЗначение = Варианты[СтрокаСписка.Значение]; + Если ЗначениеЗаполнено(ТекущееЗначение) Тогда + СтрокаСписка.Представление = ТекущееЗначение; + КонецЕсли; + КонецЦикла; + Иначе + Результат = Варианты[ЗначениеВыбора]; + КонецЕсли; + + Возврат Результат; + +КонецФункции + #КонецОбласти #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/СервисКриптографииDSSСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/СервисКриптографииDSSСлужебныйКлиент/Module.bsl index d5b243563..f05c4e015 100644 --- a/SSL/src/CommonModules/СервисКриптографииDSSСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/СервисКриптографииDSSСлужебныйКлиент/Module.bsl @@ -4247,6 +4247,8 @@ РезультатВыполнения = ОтветСервисаПоУмолчанию(Ложь); РезультатВыполнения.КодОшибки = ВходящийКонтекст.КодОшибки; РезультатВыполнения.Ошибка = ВходящийКонтекст.Ошибка; + РезультатВыполнения.СтатусОшибки = ВходящийКонтекст.СтатусОшибки; + РезультатВыполнения.Вставить("НастройкиПользователя", ВходящийКонтекст.НастройкиПользователя); ПроверитьСертификатРезультат(РезультатВыполнения, ВходящийКонтекст); КонецЕсли; @@ -4279,6 +4281,7 @@ Иначе ВходящийКонтекст.КодОшибки = РезультатВыполнения.КодОшибки; ВходящийКонтекст.Ошибка = РезультатВыполнения.Ошибка; + ВходящийКонтекст.СтатусОшибки = РезультатВыполнения.СтатусОшибки; ПроверитьСертификатПоОчереди(ВходящийКонтекст); КонецЕсли; @@ -4438,6 +4441,8 @@ РезультатВыполнения = ОтветСервисаПоУмолчанию(Ложь); РезультатВыполнения.КодОшибки = ВходящийКонтекст.КодОшибки; РезультатВыполнения.Ошибка = ВходящийКонтекст.Ошибка; + РезультатВыполнения.СтатусОшибки = ВходящийКонтекст.СтатусОшибки; + РезультатВыполнения.Вставить("НастройкиПользователя", ВходящийКонтекст.НастройкиПользователя); ПроверитьПодписьРезультат(РезультатВыполнения, ВходящийКонтекст); КонецЕсли; @@ -4474,6 +4479,7 @@ Иначе ВходящийКонтекст.КодОшибки = РезультатВыполнения.КодОшибки; ВходящийКонтекст.Ошибка = РезультатВыполнения.Ошибка; + ВходящийКонтекст.СтатусОшибки = РезультатВыполнения.СтатусОшибки; ПроверитьПодписьПоОчереди(ВходящийКонтекст); КонецЕсли; diff --git a/SSL/src/CommonModules/СклонениеПредставленийОбъектов/Module.bsl b/SSL/src/CommonModules/СклонениеПредставленийОбъектов/Module.bsl index e45b2560e..539fd5cad 100644 --- a/SSL/src/CommonModules/СклонениеПредставленийОбъектов/Module.bsl +++ b/SSL/src/CommonModules/СклонениеПредставленийОбъектов/Module.bsl @@ -142,6 +142,17 @@ КонецФункции +// Добавляет возможность склонения по падежам значения реквизита при печати. +// +// Параметры: +// ИсточникиДанныхПечати - см. УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати.ИсточникиДанныхПечати +// +Процедура ПодключитьИсточникДанныхПечатиСклоненияСтрок(ИсточникиДанныхПечати) Экспорт + + ИсточникиДанныхПечати.Добавить(СхемаДанныеПечатиСклоненияСтрок(), "ДанныеПечатиСклоненияСтрок"); + +КонецПроцедуры + #Область УстаревшиеПроцедурыИФункции // Устарела. Следует использовать СклонениеПредставленийОбъектов.ПриЗаписиФормыОбъектаСклонения. @@ -203,6 +214,21 @@ #КонецОбласти +#Область СлужебныйПрограммныйИнтерфейс + +// См. УправлениеПечатьюПереопределяемый.ПриПодготовкеДанныхПечати +Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, + ДополнительныеПараметры) Экспорт + + Если ИдентификаторСхемыКомпоновкиДанных = "ДанныеПечатиСклоненияСтрок" Тогда + ВнешниеНаборыДанных.Вставить("Данные", ДанныеПечатиСклоненияСтрок(ИсточникиДанных)); + Возврат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + #Область СлужебныеПроцедурыИФункции // Склоняет представление объекта. @@ -833,9 +859,11 @@ Процедура ПроверитьПараметрПадеж(Падеж, ИмяПроцедурыИлиФункции) ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра Падеж в СклонениеПредставлениеОбъектов.Просклонять. + НСтр("ru = 'Недопустимое значение параметра %1 в %2. |Параметр должен быть числом, обозначающим порядковый номер падежа, от 1 до 6. - |Передано значение %1 (тип %2).'"), + |Передано значение %3 (тип %4).'"), + "Падеж", + "СклонениеПредставлениеОбъектов.Просклонять", Падеж, ТипЗнч(Падеж)); @@ -846,4 +874,69 @@ КонецПроцедуры +Функция СхемаДанныеПечатиСклоненияСтрок() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью"); + Иначе + Возврат Неопределено; + КонецЕсли; + + СписокПолей = МодульУправлениеПечатью.ДеревоПолейДанныхПечати(); + + Поле = СписокПолей.Строки.Добавить(); + Поле.Идентификатор = "Ссылка"; + Поле.Представление = НСтр("ru = 'Ссылка'"); + Поле.ТипЗначения = Новый ОписаниеТипов(); + + Группа = СписокПолей.Строки.Добавить(); + Группа.Идентификатор = "Падеж"; + Группа.Представление = НСтр("ru = 'Падеж'"); + Группа.Порядок = 1; + Группа.Папка = Истина; + + Падежи = Новый Структура; + Падежи.Вставить("Именительный", НСтр("ru = 'Именительный'")); + Падежи.Вставить("Родительный", НСтр("ru = 'Родительный'")); + Падежи.Вставить("Дательный", НСтр("ru = 'Дательный'")); + Падежи.Вставить("Винительный", НСтр("ru = 'Винительный'")); + Падежи.Вставить("Творительный", НСтр("ru = 'Творительный'")); + Падежи.Вставить("Предложный", НСтр("ru = 'Предложный'")); + + Счетчик = 0; + Для Каждого Падеж Из Падежи Цикл + Счетчик = Счетчик + 1; + Поле = Группа.Строки.Добавить(); + Поле.Идентификатор = Падеж.Ключ; + Поле.Представление = Падеж.Значение; + Поле.ТипЗначения = Новый ОписаниеТипов("Строка"); + Поле.Порядок = Счетчик; + КонецЦикла; + + Возврат МодульУправлениеПечатью.СхемаКомпоновкиДанныхПечати(СписокПолей); + +КонецФункции + +Функция ДанныеПечатиСклоненияСтрок(Объекты) + + ДанныеПечати = Новый ТаблицаЗначений(); + ДанныеПечати.Колонки.Добавить("Ссылка"); + ДанныеПечати.Колонки.Добавить("Именительный"); + ДанныеПечати.Колонки.Добавить("Родительный"); + ДанныеПечати.Колонки.Добавить("Дательный"); + ДанныеПечати.Колонки.Добавить("Винительный"); + ДанныеПечати.Колонки.Добавить("Творительный"); + ДанныеПечати.Колонки.Добавить("Предложный"); + + Для Каждого Объект Из Объекты Цикл + НоваяСтрока = ДанныеПечати.Добавить(); + НоваяСтрока.Ссылка = Объект; + СклоненияСтроки = ПросклонятьПредставлениеПоВсемПадежам(Объект); + ЗаполнитьЗначенияСвойств(НоваяСтрока, СклоненияСтроки); + КонецЦикла; + + Возврат ДанныеПечати; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/СклонениеПредставленийОбъектовКлиент/Module.bsl b/SSL/src/CommonModules/СклонениеПредставленийОбъектовКлиент/Module.bsl index a028c3978..0b276a0c5 100644 --- a/SSL/src/CommonModules/СклонениеПредставленийОбъектовКлиент/Module.bsl +++ b/SSL/src/CommonModules/СклонениеПредставленийОбъектовКлиент/Module.bsl @@ -57,8 +57,11 @@ // Устарела. См. СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление. Процедура ПриИзмененииПредставления(Форма) Экспорт - ТекстСообщения = НСтр("ru = 'Метод СклонениеПредставленийОбъектовКлиент.ПриИзмененииПредставления более не поддерживается. - |Вместо него следует использовать СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 более не поддерживается. + |Вместо него следует использовать %2'"), + "СклонениеПредставленийОбъектовКлиент.ПриИзмененииПредставления", + "СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление"); ОбщегоНазначенияКлиентСервер.Проверить(Ложь, ТекстСообщения, Форма.ИмяФормы); КонецПроцедуры diff --git a/SSL/src/CommonModules/СоединенияИБ/Module.bsl b/SSL/src/CommonModules/СоединенияИБ/Module.bsl index fd35efec2..ec3d59b49 100644 --- a/SSL/src/CommonModules/СоединенияИБ/Module.bsl +++ b/SSL/src/CommonModules/СоединенияИБ/Module.bsl @@ -649,17 +649,19 @@ ТекстСообщения = Сообщение + Символы.ПС + Символы.ПС; КонецЕсли; + ИмяПараметра = "РазрешитьРаботуПользователей"; Если ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = '%1 - |Для разрешения работы пользователей можно открыть приложение с параметром РазрешитьРаботуПользователей. Например: - |http://<веб-адрес сервера>/?C=РазрешитьРаботуПользователей'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, СоединенияИБКлиентСервер.ТекстДляАдминистратора()); + |Для разрешения работы пользователей можно открыть приложение с параметром %2. Например: + |http://<веб-адрес сервера>/?C=%2'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, + СоединенияИБКлиентСервер.ТекстДляАдминистратора(), ИмяПараметра); Иначе ТекстСообщения = ТекстСообщения + НСтр("ru = '%1 |Для того чтобы разрешить работу пользователей, воспользуйтесь консолью кластера серверов или запустите ""1С:Предприятие"" с параметрами: - |ENTERPRISE %2 /CРазрешитьРаботуПользователей /UC%3'"); + |ENTERPRISE %2 /C%3 /UC%4'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, СоединенияИБКлиентСервер.ТекстДляАдминистратора(), - СтрокаПутиКИнформационнойБазе, НСтр("ru = '<код разрешения>'")); + СтрокаПутиКИнформационнойБазе, ИмяПараметра, НСтр("ru = '<код разрешения>'")); КонецЕсли; Возврат ТекстСообщения; diff --git a/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl b/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl index 8833738c8..024fc3506 100644 --- a/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl +++ b/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl @@ -425,27 +425,30 @@ Возврат Ложь; КонецЕсли; - // Обработка параметров запуска программы - - // ЗапретитьРаботуПользователей и РазрешитьРаботуПользователей. - Если КлючСодержитсяВПараметрахЗапуска(ПараметрыЗапуска, "РазрешитьРаботуПользователей") Тогда + // Обработка параметров запуска программы ЗапретитьРаботуПользователей и РазрешитьРаботуПользователей. + ИмяПараметраРазрешитьРаботуПользователей = "РазрешитьРаботуПользователей"; + ИмяПараметраЗавершитьРаботуПользователей = "ЗавершитьРаботуПользователей"; + Если КлючСодержитсяВПараметрахЗапуска(ПараметрыЗапуска, ИмяПараметраРазрешитьРаботуПользователей) Тогда Если НЕ СоединенияИБВызовСервера.РазрешитьРаботуПользователей() Тогда - ТекстСообщения = НСтр("ru = 'Параметр запуска РазрешитьРаботуПользователей не отработан. Нет прав на администрирование информационной базы.'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Параметр запуска %1 не отработан. Нет прав на администрирование информационной базы.'"), + ИмяПараметраРазрешитьРаботуПользователей); ПоказатьПредупреждение(,ТекстСообщения); Возврат Ложь; КонецЕсли; ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(),, - НСтр("ru = 'Выполнен запуск с параметром ""РазрешитьРаботуПользователей"". Работа программы будет завершена.'"), ,Истина); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнен запуск с параметром %1. Работа программы будет завершена.'"), + ИмяПараметраРазрешитьРаботуПользователей), ,Истина); ЗавершитьРаботуСистемы(Ложь); Возврат Истина; // Параметр может содержать две дополнительные части, разделенные символом ";" - // имя и пароль администратора ИБ, от имени которого происходит подключение к кластеру серверов - // в клиент-серверном варианте развертывания системы. Их необходимо передавать в случае, - // если текущий пользователь не является администратором ИБ. - // См. использование в процедуре ЗавершитьРаботуПользователей(). - ИначеЕсли КлючСодержитсяВПараметрахЗапуска(ПараметрыЗапуска, "ЗавершитьРаботуПользователей") Тогда + // в клиент-серверном варианте. См. использование в процедуре ЗавершитьРаботуПользователей. + ИначеЕсли КлючСодержитсяВПараметрахЗапуска(ПараметрыЗапуска, ИмяПараметраЗавершитьРаботуПользователей) Тогда ДополнительныеПараметры = ДополнительныеПараметрыЗавершенияРаботыПользователей(); @@ -456,20 +459,20 @@ ДополнительныеПараметры.ДлительностьБлокировкиМин); Если НЕ БлокировкаУстановлена Тогда - ТекстСообщения = НСтр("ru = 'Параметр запуска ЗавершитьРаботуПользователей не отработан. Нет прав на администрирование информационной базы.'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Параметр запуска %1 не отработан. Нет прав на администрирование информационной базы.'"), + "ИмяПараметраЗавершитьРаботуПользователей"); ПоказатьПредупреждение(,ТекстСообщения); Возврат Ложь; КонецЕсли; - ПараметрыЗапускаУточненные = ПараметрыЗапускаУточненные(ПараметрыЗапуска, ДополнительныеПараметры); - // Если выполнен запуск с ключом, то нужно зачитать параметры администрирования кластера. + ПараметрыЗапускаУточненные = ПараметрыЗапускаУточненные(ПараметрыЗапуска, ДополнительныеПараметры); ЗаполнитьПараметрыАдминистрированияКластера(ПараметрыЗапускаУточненные); ПодключитьОбработчикОжидания("ЗавершитьРаботуПользователей", 60); ЗавершитьРаботуПользователей(); - - Возврат Ложь; // Продолжить запуск программы. + Возврат Ложь; КонецЕсли; Возврат Ложь; @@ -479,7 +482,7 @@ // Возвращает строковую константу для формирования сообщений журнала регистрации. // // Возвращаемое значение: -// Строка - наименование события для журнала регистрации. +// Строка // Функция СобытиеЖурналаРегистрации() Экспорт diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl index e93b6ac91..6f33958bd 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl @@ -162,12 +162,12 @@ КонецФункции -// См. РаботаВМоделиСервиса.УстановитьРазделениеСеанса. -Процедура УстановитьРазделениеСеанса(Знач Использование, Знач ОбластьДанных = Неопределено) Экспорт +// См. РаботаВМоделиСервиса.ВойтиВОбластьДанных. +Процедура ВойтиВОбластьДанных(Знач ОбластьДанных) Экспорт Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Использование, ОбластьДанных); + МодульРаботаВМоделиСервиса.ВойтиВОбластьДанных(ОбластьДанных); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl index 173ac15ce..6a8866b9c 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl @@ -248,7 +248,7 @@ "ОповещениеЗавершения", ОповещениеЗавершения, Тип("ОписаниеОповещения")); КонецЕсли; - УстановитьРазделениеСеанса(); + ВойтиВОбластьДанных(); Параметры = ПараметрыОбработкиПередНачаломРаботыСистемы(); @@ -1797,11 +1797,7 @@ Если НЕ УжеВыполненоНаСервере Тогда СтандартныеПодсистемыВызовСервера.СкрытьРабочийСтолПриНачалеРаботыСистемы(Ложь); КонецЕсли; - ТекущееАктивноеОкно = АктивноеОкно(); - ОбновитьИнтерфейс(); - Если ТекущееАктивноеОкно <> Неопределено Тогда - ТекущееАктивноеОкно.Активизировать(); - КонецЕсли; + ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы(); КонецЕсли; КонецЕсли; @@ -2260,8 +2256,7 @@ КонецПроцедуры -// Установить разделения сеанса перед началом каких-либо действий в программе. -Процедура УстановитьРазделениеСеанса() +Процедура ВойтиВОбластьДанных() Если ПустаяСтрока(ПараметрЗапуска) Тогда Возврат; @@ -2275,19 +2270,20 @@ КонецЕсли; Если ПараметрыЗапуска.Количество() < 2 Тогда - ВызватьИсключение - НСтр("ru = 'При указании параметра запуска ВойтиВОбластьДанных, - |дополнительным параметром укажите значение разделителя.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В параметре запуска %1 дополнительно укажите значение разделителя (число).'"), + "ВойтиВОбластьДанных"); КонецЕсли; Попытка ЗначениеРазделителя = Число(ПараметрыЗапуска[1]); Исключение - ВызватьИсключение - НСтр("ru = 'Значением разделителя в параметре ВойтиВОбластьДанных должно быть число.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Значением разделителя в параметре %1 должно быть число.'"), + "ВойтиВОбластьДанных"); КонецПопытки; - СтандартныеПодсистемыВызовСервера.УстановитьРазделениеСеанса(Истина, ЗначениеРазделителя); + СтандартныеПодсистемыВызовСервера.ВойтиВОбластьДанных(ЗначениеРазделителя); КонецПроцедуры diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl index 85086fab5..f2798169f 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl @@ -84,10 +84,11 @@ ИмяПараметра = "СтандартныеПодсистемы.ЗапускПрограммыЗавершен"; Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда - ВызватьИсключение - НСтр("ru = 'Ошибка порядка запуска программы. - |Первой процедурой, которая вызывается из обработчика события ПередНачаломРаботыСистемы - |должна быть процедура БСП СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка запуска программы. + |Первой процедурой, которая вызывается из обработчика события %1 + |должна быть процедура %2.'"), + "ПередНачаломРаботыСистемы", "СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы"); КонецЕсли; КонецПроцедуры @@ -96,7 +97,7 @@ Если Не СтандартныеПодсистемыКлиент.ЗапускПрограммыЗавершен() Тогда ВызватьИсключение - НСтр("ru = 'Ошибка порядка запуска программы. + НСтр("ru = 'Ошибка запуска программы. |Перед получением параметров работы клиента запуск программы должен быть завершен. |Пока запуск не завершен следует использовать параметры работы клиента при запуске.'"); КонецЕсли; diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl index 86b8f84a5..6d3134310 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl @@ -42,9 +42,9 @@ Если ОписанияПодсистем.ПоИменам.Получить(Описание.Имя) <> Неопределено Тогда ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка при подготовке описаний подсистем: - |в описании подсистемы (см. процедуру %1.ПриДобавленииПодсистемы) + |в описании подсистемы (см. процедуру %1.%2) |указано имя подсистемы ""%2"", которое уже зарегистрировано ранее.'"), - ИмяМодуля, Описание.Имя); + ИмяМодуля, "ПриДобавленииПодсистемы", Описание.Имя); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -76,20 +76,21 @@ Если Описание.Версия <> Метаданные.Версия Тогда ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка при подготовке описаний подсистем: - |версия ""%2"" конфигурации ""%1"" (см. процедуру %3.ПриДобавленииПодсистемы) - |не совпадает с версией конфигурации в метаданных ""%4"".'"), + |версия ""%2"" конфигурации ""%1"" (см. процедуру %3.%4) + |не совпадает с версией конфигурации в метаданных ""%5"".'"), Описание.Имя, Описание.Версия, Описание.ОсновнойСерверныйМодуль, + "ПриДобавленииПодсистемы", Метаданные.Версия); ВызватьИсключение ТекстОшибки; КонецЕсли; Иначе ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка при подготовке описаний подсистем: - |в общих модулях, указанных в процедуре ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистемы - |не существует описание подсистемы, совпадающей с именем конфигурации ""%1"".'"), - Метаданные.Имя); + |в общих модулях, указанных в процедуре %1, + |не существует описание подсистемы, совпадающей с именем конфигурации ""%2"".'"), + "ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистемы", Метаданные.Имя); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -161,8 +162,7 @@ // Функция ПривилегированныйРежимУстановленПриЗапуске() Экспорт - УстановитьПривилегированныйРежим(Истина); - + УстановитьПривилегированныйРежим(Истина); Возврат ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить( "ПривилегированныйРежимУстановленПриЗапуске") = Истина; @@ -178,8 +178,7 @@ // Функция ОтключитьИдентификаторыОбъектовМетаданных() Экспорт - ОбщиеПараметры = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности(); - + ОбщиеПараметры = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности(); Если НЕ ОбщиеПараметры.ОтключитьИдентификаторыОбъектовМетаданных Тогда Возврат Ложь; КонецЕсли; @@ -189,13 +188,14 @@ ИЛИ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") ИЛИ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - ВызватьИсключение - НСтр("ru = 'Невозможно отключить справочник Идентификаторы объектов метаданных, + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно отключить справочник идентификаторов объектов метаданных, |если используется любая из следующих подсистем: - |- ВариантыОтчетов, - |- ДополнительныеОтчетыИОбработки, - |- РассылкаОтчетов, - |- УправлениеДоступом.'"); + |- %1, + |- %2, + |- %3, + |- %4.'"), + "ВариантыОтчетов", "ДополнительныеОтчетыИОбработки", "РассылкаОтчетов", "УправлениеДоступом"); КонецЕсли; Возврат Истина; diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl index b0ad1cd38..6c5590f34 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl @@ -522,12 +522,13 @@ //////////////////////////////////////////////////////////////////////////////// // Дополнительная базовая функциональность для анализа параметров клиента на сервере. -// Возвращает фиксированное соответствие, содержащее некоторые параметры клиента: -// ПараметрЗапуска - Строка, -// СтрокаСоединенияИнформационнойБазы - Строка - строка соединения, полученная на клиенте. -// // Возвращает пустое фиксированное соответствие, если ТекущийРежимЗапуска() = Неопределено. // +// Возвращаемое значение: +// ФиксированноеСоответствие: +// * ПараметрЗапуска - Строка +// * СтрокаСоединенияИнформационнойБазы - Строка - строка соединения, полученная на клиенте. +// Функция ПараметрыКлиентаНаСервере() Экспорт УстановитьПривилегированныйРежим(Истина); @@ -550,17 +551,17 @@ ПриЗапуске = ПараметрыКлиента.Получить("ПервыйСерверныйВызовВыполнен") = Ложь; Если ПриЗапуске Тогда - КомментарийДляЖурналаРегистрацииБезСтекаВызовов = + КомментарийДляЖурналаРегистрацииБезСтекаВызовов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недопустимое обращение к неинициализированным параметрам клиента на сервере. - |Вероятно, программный интерфейс БСП был преждевременно вызван до завершения - |инициализации в СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы.'", - ОбщегоНазначения.КодОсновногоЯзыка()); + |Вероятно, вызов выполнен преждевременно до завершения инициализации в %1.'", + ОбщегоНазначения.КодОсновногоЯзыка()), + "СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы"); Иначе - КомментарийДляЖурналаРегистрацииБезСтекаВызовов = + КомментарийДляЖурналаРегистрацииБезСтекаВызовов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недопустимое обращение к неинициализированным параметрам клиента на сервере. - |Вероятно, программный интерфейс БСП был вызван после некорректной очистки всех - |параметров сеанса без использования ОбщегоНазначения.ОчиститьПараметрыСеанса.'", - ОбщегоНазначения.КодОсновногоЯзыка()); + |Вероятно, вызван выполнен после некорректной очистки параметров сеанса без использования %2.'", + ОбщегоНазначения.КодОсновногоЯзыка()), + "ОбщегоНазначения.ОчиститьПараметрыСеанса"); КонецЕсли; Попытка @@ -814,6 +815,7 @@ // Параметры: // ИмяПараметра - Строка - не более 128 символов. Например, // "СтандартныеПодсистемы.ВариантыОтчетов.ОтчетыСНастройками". +// БезУчетаВерсииРасширений - Булево // // Возвращаемое значение: // Произвольный - возвращается Неопределено, если параметр не заполнен @@ -834,6 +836,7 @@ // "СтандартныеПодсистемы.ВариантыОтчетов.ОтчетыСНастройками". // // Значение - Произвольный - значение параметра. +// БезУчетаВерсииРасширений - Булево // Процедура УстановитьПараметрРаботыРасширения(ИмяПараметра, Значение, БезУчетаВерсииРасширений = Ложь) Экспорт @@ -985,8 +988,9 @@ КонецПроцедуры -// Проверят, что выполнение происходит на учебной платформе, -// на которой, например, недоступно получение свойства ПользовательОС. +// Возвращаемое значение: +// Булево - Истина, если выполнение происходит на учебной платформе, +// на которой, например, недоступно получение свойства ПользовательОС. // Функция ЭтоУчебнаяПлатформа() Экспорт @@ -1009,9 +1013,13 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// +// См. описание параметров в обработчике события ПриОтправкеДанныхПодчиненному в синтакс-помощнике. +// // Параметры: -// см. описание обработчика события ПриОтправкеДанныхПодчиненному() в синтакс-помощнике. +// ЭлементДанных - Произвольный +// ОтправкаЭлемента - ОтправкаЭлементаДанных +// СозданиеНачальногоОбраза - Булево +// Получатель - ПланОбменаОбъект // Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза, Знач Получатель) Экспорт @@ -1062,9 +1070,13 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// +// См. описание параметров в обработчике события ПриПолученииДанныхОтПодчиненного в синтакс-помощнике. +// // Параметры: -// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтакс-помощнике. +// ЭлементДанных - Произвольный +// ПолучениеЭлемента - ПолучениеЭлементаДанных +// ОтправкаНазад - Булево +// Отправитель - ПланОбменаОбъект // Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Знач Отправитель) Экспорт @@ -1100,7 +1112,7 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// См. описание обработчика события ПриПолученииДанныхОтГлавного() в синтакс-помощнике. +// См. описание обработчика события ПриПолученииДанныхОтГлавного в синтакс-помощнике. // Параметр Отправитель может быть не заполнен, например, при получении сообщения начального образа в АРМе. // // Параметры: @@ -1226,6 +1238,12 @@ // Выполняет проверку, что переданный объект имеет тип СправочникОбъект.ИдентификаторыОбъектовМетаданных. // +// Параметры: +// Объект - Произвольный +// +// Возвращаемое значение: +// Булево +// Функция ЭтоИдентификаторОбъектаМетаданных(Объект) Экспорт Возврат ТипЗнч(Объект) = Тип("СправочникОбъект.ИдентификаторыОбъектовМетаданных"); @@ -1242,6 +1260,7 @@ // Параметры: // Форма - ФормаКлиентскогоПриложения - форма ПриСозданииНаСервере, которой устанавливается ключ. // Ключ - Строка - новый ключ назначения формы. +// КлючПоложения - Строка // УстановитьНастройки - Булево - установить новому ключу настройки, сохраненные для текущего ключа. // Процедура УстановитьКлючНазначенияФормы(Форма, Ключ, КлючПоложения = "", УстановитьНастройки = Истина) Экспорт @@ -1255,21 +1274,29 @@ // Прочие процедуры и функции. // Возвращает уточнения при возникновении проблем с параметрами работы программы. +// +// Возвращаемое значение: +// Строка +// Функция УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика() Экспорт - Возврат Символы.ПС + Символы.ПС - + НСтр("ru = 'Для разработчика: возможно требуется обновить вспомогательные данные, - |которые влияют на работу программы. Для выполнения обновления можно: - |- воспользоваться внешней обработкой - | ""Инструменты разработчика: Обновление вспомогательных данных"", - |- либо запустить программу с параметром командной строки 1С:Предприятия 8 - | ""/С ЗапуститьОбновлениеИнформационнойБазы"", - |- либо увеличить номер версии конфигурации, чтобы при очередном запуске - | выполнились процедуры обновления данных информационной базы.'"); + Возврат Символы.ПС + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для разработчика: возможно требуется обновить вспомогательные данные, + |которые влияют на работу программы. Для выполнения обновления можно: + |- воспользоваться внешней обработкой + | ""Инструменты разработчика: Обновление вспомогательных данных"", + |- либо запустить программу с параметром командной строки 1С:Предприятия 8 + | ""/С %1"", + |- либо увеличить номер версии конфигурации, чтобы при очередном запуске + | выполнились процедуры обновления данных информационной базы.'"), + "ЗапуститьОбновлениеИнформационнойБазы"); КонецФункции // Возвращает текущего пользователя информационной базы. +// +// Возвращаемое значение: +// ПользовательИнформационнойБазы // Функция ТекущийПользователь() Экспорт @@ -1447,9 +1474,12 @@ КонецФункции // Проверяет, что переданная таблица является регистром. -// +// // Параметры: // ИмяТаблицы - Строка - полное имя таблицы. +// +// Возвращаемое значение: +// Булево // Функция ЭтоТаблицаРегистра(ИмяТаблицы) Экспорт ВРегИмяТаблицы = ВРег(ИмяТаблицы); @@ -1474,32 +1504,6 @@ КонецФункции -// Проверяет используемую версию платформы и возвращает признак -// возможности установки подписанных расширений в базовой версии конфигурации. -// -// Возвращаемое значение: -// Булево - Истина, если возможно. -// -Функция ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Экспорт - - ДоступнаУстановка = Истина; - СистемнаяИнформация = Новый СистемнаяИнформация; - ВерсияПлатформы = СистемнаяИнформация.ВерсияПриложения; - ВерсияПлатформыБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияПлатформы); - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформыБезНомераСборки, "8.3.15") < 0 - Или (ВерсияПлатформыБезНомераСборки = "8.3.15" - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.15.1958") < 0) - Или (ВерсияПлатформыБезНомераСборки = "8.3.16" - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.16.1476") < 0) - Или (ВерсияПлатформыБезНомераСборки = "8.3.17" - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.17.1480") < 0) Тогда - ДоступнаУстановка = Ложь; - КонецЕсли; - - Возврат ДоступнаУстановка; - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем конфигурации. @@ -1707,6 +1711,9 @@ КонецПроцедуры // Формирует текст для вывода пользователю при необходимости динамического обновления. +// +// Возвращаемое значение: +// Строка // Функция ТекстСообщенияПриДинамическомОбновлении(ДинамическиеИзмененияКонфигурации) Экспорт @@ -1771,14 +1778,7 @@ // Функция ТипФайлаТабличногоДокументаPDF() Экспорт - СистемнаяИнформация = Новый СистемнаяИнформация; - ВерсияПлатформы = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(СистемнаяИнформация.ВерсияПриложения); - - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформы, "8.3.16") >= 0 Тогда - Возврат ТипФайлаТабличногоДокумента["PDF_A_3"]; - Иначе - Возврат ТипФайлаТабличногоДокумента["PDF"]; - КонецЕсли; + Возврат ТипФайлаТабличногоДокумента["PDF_A_3"]; КонецФункции @@ -1789,14 +1789,7 @@ // Функция ПредставлениеТипаФайлаТабличногоДокументаPDF() Экспорт - СистемнаяИнформация = Новый СистемнаяИнформация; - ВерсияПлатформы = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(СистемнаяИнформация.ВерсияПриложения); - - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформы, "8.3.16") >= 0 Тогда - Возврат НСтр("ru = 'Документ PDF/A (.pdf)'"); - Иначе - Возврат НСтр("ru = 'Документ PDF (.pdf)'"); - КонецЕсли; + Возврат НСтр("ru = 'Документ PDF/A (.pdf)'"); КонецФункции @@ -1827,8 +1820,6 @@ КонецФункции -// Компонента последней версии. -// // Параметры: // Идентификатор - Строка - идентификатор компоненты. // Местоположение - Строка - местоположение макета компоненты (без указания версии). @@ -1840,7 +1831,7 @@ // * Доступна - Булево - признак доступности. // // Возвращаемое значение: -// Структура - компонента последней версии из справочника или макета: +// Структура: // * Идентификатор - Строка - идентификатор компоненты в справочнике. // * Местоположение - Строка - макет компоненты, адрес ссылки в справочнике. // * Версия - Строка - версия. @@ -2304,14 +2295,26 @@ УстановитьПривилегированныйРежим(Истина); + Если НЕ Параметры.МонопольныйРежим Тогда + + Параметры.МонопольныйРежим = Истина; + Возврат; + + КонецЕсли; + НовыеЗначения = Новый Соответствие; Если Константы.ИспользоватьРазделениеПоОбластямДанных.Получить() Тогда НовыеЗначения.Вставить("НеИспользоватьРазделениеПоОбластямДанных", Ложь); - НовыеЗначения.Вставить("ЭтоАвтономноеРабочееМесто", Ложь) - ИначеЕсли Константы.ЭтоАвтономноеРабочееМесто.Получить() Тогда + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда + + НовыеЗначения.Вставить("ЭтоАвтономноеРабочееМесто", Ложь) + + КонецЕсли; + + ИначеЕсли ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда НовыеЗначения.Вставить("НеИспользоватьРазделениеПоОбластямДанных", Ложь); @@ -2323,15 +2326,17 @@ Для каждого КлючИЗначения Из НовыеЗначения Цикл - Если Константы[КлючИЗначения.Ключ].Получить() <> КлючИЗначения.Значение Тогда - - Если НЕ Параметры.МонопольныйРежим Тогда - Параметры.МонопольныйРежим = Истина; - Возврат; // Требуется изменение - КонецЕсли; + Если КлючИЗначения.Ключ = "НеИспользоватьРазделениеПоОбластямДанных" + И Константы[КлючИЗначения.Ключ].Получить() <> КлючИЗначения.Значение Тогда Константы[КлючИЗначения.Ключ].Установить(КлючИЗначения.Значение); + ИначеЕсли КлючИЗначения.Ключ = "ЭтоАвтономноеРабочееМесто" + И ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() = Истина Тогда + + МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ВыключитьСвойствоИБ(); + КонецЕсли; КонецЦикла; @@ -2472,9 +2477,13 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// +// См. описание параметров в обработчике события ПриОтправкеДанныхПодчиненному в синтакс-помощнике. +// // Параметры: -// см. описание обработчика события ПриОтправкеДанныхПодчиненному() в синтакс-помощнике. +// Источник - ПланОбменаОбъект +// ЭлементДанных - Произвольный +// ОтправкаЭлемента - ОтправкаЭлементаДанных +// СозданиеНачальногоОбраза - Булево // Процедура ПриОтправкеДанныхПодчиненномуСобытие(Источник, ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза) Экспорт @@ -2489,10 +2498,13 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// -// Параметры: -// см. описание обработчика события ПриОтправкеДанныхГлавному() в синтакс-помощнике. +// См. описание параметров в обработчике события ПриОтправкеДанныхГлавному в синтакс-помощнике. // +// Параметры: +// Источник - ПланОбменаОбъект +// ЭлементДанных - Произвольный +// ОтправкаЭлемента - ОтправкаЭлементаДанных +// Процедура ПриОтправкеДанныхГлавномуСобытие(Источник, ЭлементДанных, ОтправкаЭлемента) Экспорт ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента, Источник); @@ -2506,9 +2518,13 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// +// См. описание параметров в обработчике события ПриПолученииДанныхОтПодчиненного в синтакс-помощнике. +// // Параметры: -// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтакс-помощнике. +// Источник - ПланОбменаОбъект +// ЭлементДанных - Произвольный +// ПолучениеЭлемента - ПолучениеЭлементаДанных +// ОтправкаНазад - Булево // Процедура ПриПолученииДанныхОтПодчиненногоСобытие(Источник, ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) Экспорт @@ -2523,10 +2539,14 @@ // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной // информационной базе. -// -// Параметры: -// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтакс-помощнике. +// См. описание обработчика события ПриПолученииДанныхОтГлавного в синтакс-помощнике. // +// Параметры: +// Источник - ПланОбменаОбъект +// ЭлементДанных - Произвольный +// ПолучениеЭлемента - ПолучениеЭлементаДанных +// ОтправкаНазад - Булево +// Процедура ПриПолученииДанныхОтГлавногоСобытие(Источник, ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) Экспорт ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Источник); @@ -2540,6 +2560,10 @@ // Процедура-обработчик подписки на событие ПередЗаписью для ПланОбменаОбъект. // Используется для вызова обработчика события ПослеПолученияДанных при обмене в распределенной ИБ. +// +// Параметры: +// Источник - ПланОбменаОбъект +// Отказ - Булево // Процедура ПослеПолученияДанных(Источник, Отказ) Экспорт @@ -2557,7 +2581,6 @@ КонецЕсли; ПолучениеИзГлавногоУзла = (ПланыОбмена.ГлавныйУзел() = Источник.Ссылка); - ИнтеграцияПодсистемБСП.ПослеПолученияДанных(Источник, Отказ, ПолучениеИзГлавногоУзла); КонецПроцедуры @@ -2863,7 +2886,7 @@ // Проверка настройки совместимости конфигурации с версией платформы. СистемнаяИнформация = Новый СистемнаяИнформация; - МинимальнаяВерсияПлатформы = "8.3.14.1694"; + МинимальнаяВерсияПлатформы = "8.3.17.1851"; Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, МинимальнаяВерсияПлатформы) < 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для запуска необходима версия платформы 1С:Предприятие %1 или выше.'"), МинимальнаяВерсияПлатформы); @@ -2966,9 +2989,9 @@ Если Не Метаданные.ОсновныеРоли.Содержит(Метаданные.Роли.АдминистраторСистемы) Или Не Метаданные.ОсновныеРоли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда - ВызватьИсключение - НСтр("ru = 'В конфигурации в свойстве ОсновныеРоли не указаны - |стандартные роли АдминистраторСистемы и ПолныеПрава.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'В конфигурации в свойстве %1 не указаны стандартные роли %2 и %3.'"), + "ОсновныеРоли", Метаданные.Роли.АдминистраторСистемы.Имя, Метаданные.Роли.ПолныеПрава.Имя); КонецЕсли; // Проверка возможности выполнения обработчиков установки параметров сеанса для запуска программы. @@ -2984,6 +3007,7 @@ КонецЕсли; ИнтеграцияПодсистемБСП.ПередЗапускомПрограммы(); + ОбщегоНазначенияПереопределяемый.ПередЗапускомПрограммы(); СкорректироватьНачальнуюСтраницуНеразделенногоПользователя(); ОбработатьОчередьСкопированныхНастроек(); diff --git a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl index e61e224bc..1fbca539f 100644 --- a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl @@ -1052,7 +1052,7 @@ // // Строка = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка( // НСтр("ru=';остался %1 день;;осталось %1 дня;осталось %1 дней;осталось %1 дня'; -// |en=';left %1 day;;;;left %1 days'"), +// |en=';%1 day left;;;;%1 days left'"), // 0.05,, "ЧДЦ=1"); // Функция СтрокаСЧисломДляЛюбогоЯзыка(Шаблон, Число, Вид = Неопределено, ФорматнаяСтрока = Неопределено) Экспорт diff --git a/SSL/src/CommonModules/УдалениеПомеченныхОбъектовПереопределяемый/Module.bsl b/SSL/src/CommonModules/УдалениеПомеченныхОбъектовПереопределяемый/Module.bsl index 3994c70e0..f5d9a191a 100644 --- a/SSL/src/CommonModules/УдалениеПомеченныхОбъектовПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/УдалениеПомеченныхОбъектовПереопределяемый/Module.bsl @@ -24,6 +24,29 @@ КонецПроцедуры +// Вызывается вне транзакции перед удалением группы связанных объектов. +// +// Параметры: +// Контекст - Структура - произвольные данные, которые можно принициализировать для передачи +// в УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов. +// УдаляемыеОбъекты - Массив из ЛюбаяСсылка - объекты, которые будут удалены. +// +Процедура ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты) Экспорт + +КонецПроцедуры + +// Вызывается вне транзакции после удаления группы связанных объектов. +// Например, для очистки связанных данных на внешних ресурсах и других операций, +// которые недопустимо выполнять в транзакции удаления. +// +// Параметры: +// Контекст - см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов.Контекст +// Успешно - Булево - Истина, если группа объектов успешно удалена. +// +Процедура ПослеУдаленияГруппыОбъектов(Контекст, Успешно) Экспорт + +КонецПроцедуры + #Область УстаревшиеПроцедурыИФункции // Устарела. Вызывается перед поиском объектов, помеченных на удаление. diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl index 2f1bc7207..9a8fcbfb6 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl @@ -470,7 +470,7 @@ КонецПроцедуры -// Для функций ОписаниеДопустимыхШаблонов, КлючевоеСловоСУчетомЯзыка. +// Только для внутреннего использования. // // Возвращаемое значение: // Булево @@ -2125,15 +2125,19 @@ // См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов. Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ПраваДоступа); - МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты["АнализПравДоступа"]); + МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализПравДоступа); + МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ПраваРолей); + КонецПроцедуры // См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов. Процедура ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка) Экспорт Отчеты.АнализПравДоступа.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка); + Отчеты.ПраваРолей.ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры, СтандартнаяОбработка); КонецПроцедуры @@ -3957,6 +3961,8 @@ ОформитьТаблицуВидыДоступаВФорме(Форма); + ОформитьТаблицуЗначенияДоступаВФорме(Форма); + УдалитьНесуществующиеВидыИЗначенияДоступа(Форма); УправлениеДоступомСлужебныйКлиентСервер.ЗаполнитьСвойстваВидовДоступаВФорме(Форма); @@ -7031,6 +7037,32 @@ КонецПроцедуры +Процедура ОформитьТаблицуЗначенияДоступаВФорме(Форма) + + Параметры = ПараметрыФормыРедактированияРазрешенныхЗначений(Форма); + ПустыеСсылкиЗначенийДоступа = ПустыеСсылкиЗначенийДоступа(); + + // Оформление отображения пустых ссылок значений доступа. + Для Каждого Строка Из ПустыеСсылкиЗначенийДоступа Цикл + ЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить(); + + ЭлементОформленияТекст = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Text"); + ЭлементОформленияТекст.Значение = Строка.Представление; + ЭлементОформленияТекст.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Параметры.ПутьКТаблицам + "ЗначенияДоступа.ЗначениеДоступа"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Строка.ПустаяСсылка; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ЗначенияДоступаЗначениеДоступа"); + ЭлементОформляемогоПоля.Использование = Истина; + КонецЦикла; + +КонецПроцедуры + Процедура УдалитьЛишниеЗначенияДоступа(Форма, ТекущийОбъект = Неопределено) Параметры = ПараметрыФормыРедактированияРазрешенныхЗначений(Форма, ТекущийОбъект); @@ -7096,6 +7128,27 @@ КонецФункции +Функция ПустыеСсылкиЗначенийДоступа() Экспорт + + Таблица = Новый ТаблицаЗначений; + Таблица.Колонки.Добавить("ПустаяСсылка", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип); + Таблица.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка", + ,,, Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная))); + + Для Каждого Тип Из Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип.Типы() Цикл + Типы = Новый Массив; + Типы.Добавить(Тип); + ОписаниеТипа = Новый ОписаниеТипов(Типы); + НоваяСтрока = Таблица.Добавить(); + НоваяСтрока.ПустаяСсылка = ОписаниеТипа.ПривестиЗначение(Неопределено); + НоваяСтрока.Представление = "<" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Пустая ссылка %1'"), Строка(Тип)) + ">"; + КонецЦикла; + + Возврат Таблица; + +КонецФункции + // Для процедуры УстановкаПараметровСеанса. Функция ВсеКомбинацииВидовДоступа(НеупорядоченныйМассивИмен) @@ -8032,67 +8085,211 @@ // в переопределяемых модулях без проверки. // // Возвращаемое значение: -// ТаблицаЗначений - если ДляПроверки = Ложь, состав колонок: -// Таблица - Строка - имя таблицы объекта метаданных, например, Справочник.Файлы. -// Право - Строка: "Чтение", "Изменение". -// ВидДоступа - ЛюбаяСсылка - пустая ссылка основного типа значений вида доступа, +// Строка - когда ДляПроверки = Истина - ограничения прав, как они добавлены в переопределяемом модуле. +// ТаблицаЗначений: +// * ДляВнешнихПользователей - Булево - если Ложь, тогда ограничение для пользователей, +// если Истина, тогда для внешних пользователей. +// Колонка присутствует только для универсального ограничения. +// * ПолноеИмя - Строка - полное имя таблицы. +// * Таблица - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - идентификатор таблицы. +// * ВидДоступа - ЛюбаяСсылка - пустая ссылка основного типа значений вида доступа, // пустая ссылка владельца настроек прав. +// * Право - Строка - "Чтение", "Изменение". // - Неопределено - для вида доступа Объект. -// ТаблицаОбъекта - ЛюбаяСсылка - пустая ссылка объекта метаданных, через который ограничивается доступ, -// используя наборы значений доступа, например, Справочник.ПапкиФайлов. -// - Неопределено - если ВидДоступа <> Неопределено. -// -// Строка - если ДляПроверки = Истина - ограничения прав, как они добавлены в переопределяемом модуле. +// * ТаблицаОбъекта - ЛюбаяСсылка - пустая ссылка объекта метаданных, через который ограничивается доступ, +// используя наборы значений доступа, например, Справочник.ПапкиФайлов. +// - Неопределено - если ВидДоступа <> Неопределено. +// Колонка присутствует только для стандартного ограничения. // Функция ПостоянныеВидыОграниченийПравОбъектовМетаданных(ДляПроверки = Ложь) Экспорт УстановитьПривилегированныйРежим(Истина); - ВидыДоступаПрав = Новый ТаблицаЗначений; - ВидыДоступаПрав.Колонки.Добавить("Таблица", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных")); - ВидыДоступаПрав.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20))); - ВидыДоступаПрав.Колонки.Добавить("ВидДоступа", УправлениеДоступомСлужебныйПовтИсп.ОписаниеТиповЗначенийДоступаИВладельцевНастроекПрав()); - ВидыДоступаПрав.Колонки.Добавить("ТаблицаОбъекта", Метаданные.РегистрыСведений.НаборыЗначенийДоступа.Измерения.Объект.Тип); - - ОграниченияПрав = ""; - УниверсальноеОграничение = ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина, Истина); Если ДляПроверки Или Не УниверсальноеОграничение Тогда + ОграниченияПрав = ""; ИнтеграцияПодсистемБСП.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(ОграниченияПрав); УправлениеДоступомПереопределяемый.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(ОграниченияПрав); - Иначе - ОграниченияПрав = ВсеВидыОграниченийПравДляОтчетаПраваДоступа(); + Если ДляПроверки Тогда + Возврат ОграниченияПрав; + КонецЕсли; КонецЕсли; - Если ДляПроверки Тогда - Возврат ОграниченияПрав; - КонецЕсли; + ТипыИдентификаторов = Новый Массив; + ТипыИдентификаторов.Добавить(Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных")); + ТипыИдентификаторов.Добавить(Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений")); + + ВидыОграниченийПрав = Новый ТаблицаЗначений; + ВидыОграниченийПрав.Колонки.Добавить("ДляВнешнихПользователей", Новый ОписаниеТипов("Булево")); + ВидыОграниченийПрав.Колонки.Добавить("ПолноеИмя", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(430))); + ВидыОграниченийПрав.Колонки.Добавить("Таблица", Новый ОписаниеТипов(ТипыИдентификаторов)); + ВидыОграниченийПрав.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20))); + ВидыОграниченийПрав.Колонки.Добавить("ВидДоступа", УправлениеДоступомСлужебныйПовтИсп.ОписаниеТиповЗначенийДоступаИВладельцевНастроекПрав()); + ВидыОграниченийПрав.Колонки.Добавить("ТаблицаОбъекта", + Метаданные.РегистрыСведений.НаборыЗначенийДоступа.Измерения.Объект.Тип); + ВидыОграниченийПрав.Колонки.Добавить("ВедущееПраво", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20))); ВидыДоступаПоИменам = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа().ПоИменам; + Если УниверсальноеОграничение Тогда + ВсеВидыОграничений = ВсеВидыОграниченийПравДляОтчетаПраваДоступа(); + ДобавитьВидыОграниченияПрав(ВидыОграниченийПрав, + ВсеВидыОграничений.ДляПользователей, ВидыДоступаПоИменам, Истина, Ложь); + ДобавитьВидыОграниченияПрав(ВидыОграниченийПрав, + ВсеВидыОграничений.ДляВнешнихПользователей, ВидыДоступаПоИменам, Истина, Истина); + Иначе + ДобавитьВидыОграниченияПрав(ВидыОграниченийПрав, + ОграниченияПрав, ВидыДоступаПоИменам, Ложь); + КонецЕсли; + + ПолныеИмена = ВидыОграниченийПрав.ВыгрузитьКолонку("ПолноеИмя"); + ИдентификаторыИмен = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИмена); + Для Каждого Строка Из ВидыОграниченийПрав Цикл + Строка.Таблица = ИдентификаторыИмен.Получить(Строка.ПолноеИмя); + КонецЦикла; + + // Добавление видов доступа объектов, которые определяются не только через наборы значений доступа. + Если Не УниверсальноеОграничение Тогда + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЗависимостиПравДоступа.ПодчиненнаяТаблица, + | ЗависимостиПравДоступа.ТипВедущейТаблицы + |ИЗ + | РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа"; + ЗависимостиПрав = Запрос.Выполнить().Выгрузить(); + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("УниверсальноеОграничение", УниверсальноеОграничение); + Контекст.Вставить("ВидыОграниченийПрав", ВидыОграниченийПрав); + Контекст.Вставить("ЗависимостиПрав", ЗависимостиПрав); + Контекст.Вставить("ТекущиеЗависимыеТаблицы", Новый Соответствие); + Контекст.Вставить("ВидыДоступаВедущихТаблиц", Новый Соответствие); + Отбор = Новый Структура("ВидДоступа", Неопределено); + ВидыДоступаОбъект = ВидыОграниченийПрав.НайтиСтроки(Отбор); + Отбор = Новый Структура("ДляВнешнихПользователей, ПолноеИмя, Таблица, Право, ВидДоступа"); + Для Каждого СтрокаВидДоступаОбъект Из ВидыДоступаОбъект Цикл + ВидыДоступа = ВидыДоступаВедущейТаблицы(Контекст, СтрокаВидДоступаОбъект); + Для Каждого ВидДоступа Из ВидыДоступа Цикл + ЗаполнитьЗначенияСвойств(Отбор, СтрокаВидДоступаОбъект); + Отбор.ВидДоступа = ВидДоступа; + Если ВидыОграниченийПрав.НайтиСтроки(Отбор).Количество() = 0 Тогда + ЗаполнитьЗначенияСвойств(ВидыОграниченийПрав.Добавить(), Отбор); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + ВидыОграниченийПрав.Колонки.Удалить("ВедущееПраво"); + Если УниверсальноеОграничение Тогда + ВидыОграниченийПрав.Колонки.Удалить("ТаблицаОбъекта"); + Иначе + ВидыОграниченийПрав.Колонки.Удалить("ДляВнешнихПользователей"); + КонецЕсли; + + Возврат ВидыОграниченийПрав; + +КонецФункции + +// Для функции ПостоянныеВидыОграниченийПравОбъектовМетаданных. +Функция ВидыДоступаВедущейТаблицы(Контекст, СтрокаВидДоступаОбъект) + + ИдентификаторТаблицы = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + ТипЗнч(СтрокаВидДоступаОбъект.ТаблицаОбъекта)); + + Если Контекст.УниверсальноеОграничение Тогда + ВедущееПраво = СтрокаВидДоступаОбъект.ВедущееПраво; + Иначе + Отбор = Новый Структура; + Отбор.Вставить("ПодчиненнаяТаблица", СтрокаВидДоступаОбъект.Таблица); + Отбор.Вставить("ТипВедущейТаблицы", СтрокаВидДоступаОбъект.ТаблицаОбъекта); + Если Контекст.ЗависимостиПрав.НайтиСтроки(Отбор).Количество() = 0 Тогда + ВедущееПраво = СтрокаВидДоступаОбъект.Право; + Иначе + ВедущееПраво = "Чтение"; + КонецЕсли; + КонецЕсли; + + Ключ = ?(СтрокаВидДоступаОбъект.ДляВнешнихПользователей, "1:", "0:") + + Строка(ИдентификаторТаблицы.УникальныйИдентификатор()) + ":" + ВедущееПраво; + + Если Контекст.ТекущиеЗависимыеТаблицы.Получить(Ключ) <> Неопределено Тогда + Возврат Новый Массив; + КонецЕсли; + + ВидыДоступа = Контекст.ВидыДоступаВедущихТаблиц.Получить(Ключ); + Если ВидыДоступа <> Неопределено Тогда + Возврат ВидыДоступа; + КонецЕсли; + + Контекст.ТекущиеЗависимыеТаблицы.Вставить(Ключ, Истина); + ВидыДоступа = Новый Массив; + + Отбор = Новый Структура("ДляВнешнихПользователей, Таблица, Право", + СтрокаВидДоступаОбъект.ДляВнешнихПользователей, ИдентификаторТаблицы, ВедущееПраво); + ВидыДоступаВедущейТаблицы = Контекст.ВидыОграниченийПрав.НайтиСтроки(Отбор); + + Для Каждого ОписаниеВидаДоступа Из ВидыДоступаВедущейТаблицы Цикл + Если ОписаниеВидаДоступа.ВидДоступа = Неопределено Тогда + ВидыДоступаВложеннойВедущейТаблицы = ВидыДоступаВедущейТаблицы(Контекст, + ОписаниеВидаДоступа); + Для Каждого ВидДоступа Из ВидыДоступаВложеннойВедущейТаблицы Цикл + ДобавитьВидДоступаВедущейТаблицы(ВидыДоступа, ВидДоступа); + КонецЦикла; + Иначе + ДобавитьВидДоступаВедущейТаблицы(ВидыДоступа, ОписаниеВидаДоступа.ВидДоступа); + КонецЕсли; + КонецЦикла; + + Контекст.ТекущиеЗависимыеТаблицы.Удалить(Ключ); + Контекст.ВидыДоступаВедущихТаблиц.Вставить(Ключ, ВидыДоступа); + + Возврат ВидыДоступа; + +КонецФункции + +// Для функции ВидыДоступаВедущейТаблицы. +Процедура ДобавитьВидДоступаВедущейТаблицы(ВидыДоступа, ВидДоступа) + + Если ВидыДоступа.Найти(ВидДоступа) = Неопределено Тогда + ВидыДоступа.Добавить(ВидДоступа); + КонецЕсли; + +КонецПроцедуры + +// Для функции ПостоянныеВидыОграниченийПравОбъектовМетаданных. +Процедура ДобавитьВидыОграниченияПрав(ВидыОграниченийПрав, ОграниченияПрав, ВидыДоступаПоИменам, + УниверсальноеОграничение, ДляВнешнихПользователей = Неопределено) + Для НомерСтроки = 1 По СтрЧислоСтрок(ОграниченияПрав) Цикл ТекущаяСтрока = СокрЛП(СтрПолучитьСтроку(ОграниченияПрав, НомерСтроки)); Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда ПояснениеОшибки = ""; - Если СтрЧислоВхождений(ТекущаяСтрока, ".") <> 3 И СтрЧислоВхождений(ТекущаяСтрока, ".") <> 5 Тогда - ПояснениеОшибки = НСтр("ru = 'Строка должна быть в формате ""<Полное имя таблицы>.<Имя права>.<Имя вида доступа>[.Таблица объекта]"".'"); + ЧастиСтроки = СтрРазделить(ТекущаяСтрока, "."); + Если Не УниверсальноеОграничение + И ЧастиСтроки.Количество() <> 4 + И ЧастиСтроки.Количество() <> 6 Тогда + ПояснениеОшибки = НСтр("ru = 'Строка должна быть в формате ""<Полное имя таблицы>.<Имя права>.<Имя вида доступа>[.<Таблица объекта>]"".'"); + ИначеЕсли УниверсальноеОграничение + И ЧастиСтроки.Количество() <> 4 + И ЧастиСтроки.Количество() <> 7 Тогда + ПояснениеОшибки = НСтр("ru = 'Строка должна быть в формате ""<Полное имя таблицы>.<Имя права>.<Имя вида доступа>[.<Таблица объекта>.<Имя ведущего права>]"".'"); Иначе - ПозицияПрава = СтрНайти(ТекущаяСтрока, "."); - ПозицияПрава = СтрНайти(Сред(ТекущаяСтрока, ПозицияПрава + 1), ".") + ПозицияПрава; - Таблица = Лев(ТекущаяСтрока, ПозицияПрава - 1); - ПозицияВидаДоступа = СтрНайти(Сред(ТекущаяСтрока, ПозицияПрава + 1), ".") + ПозицияПрава; - Право = Сред(ТекущаяСтрока, ПозицияПрава + 1, ПозицияВидаДоступа - ПозицияПрава - 1); - Если СтрЧислоВхождений(ТекущаяСтрока, ".") = 3 Тогда - ВидДоступа = Сред(ТекущаяСтрока, ПозицияВидаДоступа + 1); + Таблица = ЧастиСтроки[0] + "." + ЧастиСтроки[1]; + Право = ЧастиСтроки[2]; + ВидДоступа = ЧастиСтроки[3]; + Если ЧастиСтроки.Количество() = 4 Тогда ТаблицаОбъекта = ""; + ВедущееПраво = ""; Иначе - ПозицияТаблицыОбъекта = СтрНайти(Сред(ТекущаяСтрока, ПозицияВидаДоступа + 1), ".") + ПозицияВидаДоступа; - ВидДоступа = Сред(ТекущаяСтрока, ПозицияВидаДоступа + 1, ПозицияТаблицыОбъекта - ПозицияВидаДоступа - 1); - ТаблицаОбъекта = Сред(ТекущаяСтрока, ПозицияТаблицыОбъекта + 1); + ТаблицаОбъекта = ЧастиСтроки[4] + "." + ЧастиСтроки[5]; + ВедущееПраво = ?(УниверсальноеОграничение, ЧастиСтроки[6], ""); КонецЕсли; - Если Метаданные.НайтиПоПолномуИмени(Таблица) = Неопределено Тогда + ОбъектМетаданныхТаблицы = Метаданные.НайтиПоПолномуИмени(Таблица); + Если ОбъектМетаданныхТаблицы = Неопределено Тогда Если УниверсальноеОграничение Тогда Продолжить; КонецЕсли; @@ -8114,6 +8311,12 @@ Иначе ВидДоступаСсылка = Неопределено; ТаблицаОбъектаСсылка = ПустаяСсылкаОбъектаМетаданных(ТаблицаОбъекта); + Если УниверсальноеОграничение + И ВедущееПраво <> "Чтение" + И ВедущееПраво <> "Изменение" Тогда + ПояснениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не существует ведущее право ""%1"".'"), ВедущееПраво); + КонецЕсли; КонецЕсли; ИначеЕсли ВРег(ВидДоступа) = ВРег("НастройкиПрав") Тогда @@ -8161,64 +8364,18 @@ КонецЕсли; ВызватьИсключение ТекстОшибки; Иначе - НовоеОписание = ВидыДоступаПрав.Добавить(); - НовоеОписание.Таблица = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Таблица); + НовоеОписание = ВидыОграниченийПрав.Добавить(); + НовоеОписание.ДляВнешнихПользователей = ДляВнешнихПользователей; + НовоеОписание.ПолноеИмя = ОбъектМетаданныхТаблицы.ПолноеИмя(); НовоеОписание.Право = Право; НовоеОписание.ВидДоступа = ВидДоступаСсылка; НовоеОписание.ТаблицаОбъекта = ТаблицаОбъектаСсылка; + НовоеОписание.ВедущееПраво = ВедущееПраво; КонецЕсли; КонецЕсли; КонецЦикла; - // Добавление видов доступа объектов, которые определяются не только через наборы значений доступа. - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | ЗависимостиПравДоступа.ПодчиненнаяТаблица, - | ЗависимостиПравДоступа.ТипВедущейТаблицы - |ИЗ - | РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа"; - ЗависимостиПрав = Запрос.Выполнить().Выгрузить(); - - ПрекратитьПопытки = Ложь; - Пока НЕ ПрекратитьПопытки Цикл - ПрекратитьПопытки = Истина; - Отбор = Новый Структура("ВидДоступа", Неопределено); - ВидыДоступаОбъект = ВидыДоступаПрав.НайтиСтроки(Отбор); - Для каждого Строка Из ВидыДоступаОбъект Цикл - ИдентификаторТаблицы = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( - ТипЗнч(Строка.ТаблицаОбъекта)); - - Отбор = Новый Структура; - Отбор.Вставить("ПодчиненнаяТаблица", Строка.Таблица); - Отбор.Вставить("ТипВедущейТаблицы", Строка.ТаблицаОбъекта); - Если ЗависимостиПрав.НайтиСтроки(Отбор).Количество() = 0 Тогда - ВедущееПраво = Строка.Право; - Иначе - ВедущееПраво = "Чтение"; - КонецЕсли; - Отбор = Новый Структура("Таблица, Право", ИдентификаторТаблицы, ВедущееПраво); - ВидыДоступаВедущейТаблицы = ВидыДоступаПрав.НайтиСтроки(Отбор); - Для каждого ОписаниеВидаДоступа Из ВидыДоступаВедущейТаблицы Цикл - Если ОписаниеВидаДоступа.ВидДоступа = Неопределено Тогда - // Вид доступа объект нельзя добавлять. - Продолжить; - КонецЕсли; - Отбор = Новый Структура; - Отбор.Вставить("Таблица", Строка.Таблица); - Отбор.Вставить("Право", Строка.Право); - Отбор.Вставить("ВидДоступа", ОписаниеВидаДоступа.ВидДоступа); - Если ВидыДоступаПрав.НайтиСтроки(Отбор).Количество() = 0 Тогда - ЗаполнитьЗначенияСвойств(ВидыДоступаПрав.Добавить(), Отбор); - ПрекратитьПопытки = Ложь; - КонецЕсли; - КонецЦикла; - КонецЦикла; - КонецЦикла; - - Возврат ВидыДоступаПрав; - -КонецФункции +КонецПроцедуры // Только для внутреннего использования. // @@ -23671,14 +23828,19 @@ // Для отчета ПраваДоступа. // // Возвращаемое значение: -// Строка +// Структура: +// * ДляПользователей - Строка +// * ДляВнешнихПользователей - Строка // Функция ВсеВидыОграниченийПравДляОтчетаПраваДоступа() Кэш = КэшПараметровОграничения(); - Если Кэш.ВсеВидыОграниченийПрав <> Неопределено Тогда - Возврат Кэш.ВсеВидыОграниченийПрав; + Если Кэш.ВидыОграниченийПравДляПользователей <> Неопределено + И Кэш.ВидыОграниченийПравДляВнешнихПользователей <> Неопределено Тогда + Возврат Новый Структура("ДляПользователей, ДляВнешнихПользователей", + Кэш.ВидыОграниченийПравДляПользователей, + Кэш.ВидыОграниченийПравДляВнешнихПользователей); КонецЕсли; ДействующиеПараметрыОграниченияДоступа(Неопределено, Неопределено, Ложь, Ложь, Истина); @@ -24365,8 +24527,11 @@ Состав.Добавить("[ВсеВерсииСтрокой] |" + СтрокиВерсии.ВсеВерсииСтрокой); - Состав.Добавить("[ВсеВидыОграниченийСтрокой] - |" + СтрокиВерсии.ВсеВидыОграниченийСтрокой); + Состав.Добавить("[ВидыОграниченийПравДляПользователейСтрокой] + |" + СтрокиВерсии.ВидыОграниченийПравДляПользователейСтрокой); + + Состав.Добавить("[ВидыОграниченийПравДляВнешнихПользователейСтрокой] + |" + СтрокиВерсии.ВидыОграниченийПравДляВнешнихПользователейСтрокой); Состав.Добавить("[СпискиСОграничениемПоПолямВСеансахПользователей] |" + СтрокиВерсии.СпискиСОграничениемПоПолямВСеансахПользователей); @@ -24508,7 +24673,7 @@ // Число нужно увеличивать при внесении изменений в состав параметров кэша // (в том числе при изменении версии шаблонов). - Возврат "24" + ВерсияПеревода(); + Возврат "25" + ВерсияПеревода(); КонецФункции @@ -24625,7 +24790,10 @@ Возврат; КонецЕсли; Кэш = КэшПараметровОграничения(); - Кэш.ВсеВидыОграниченийПрав = ДляОтчетаПоПравамДоступа.ВсеВидыОграниченийПрав; + Кэш.ВидыОграниченийПравДляПользователей + = ДляОтчетаПоПравамДоступа.ВидыОграниченийПравДляПользователей; + Кэш.ВидыОграниченийПравДляВнешнихПользователей + = ДляОтчетаПоПравамДоступа.ВидыОграниченийПравДляВнешнихПользователей; КонецЕсли; Если УстановкаПараметровСеансаДляШаблонов @@ -24949,14 +25117,17 @@ СпискиСДатой = Новый Соответствие; ИдентификаторыСписков = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИменаСписков); - ВсеВидыОграниченийПрав = Новый Соответствие; - ДобавитьНестандартныеВидыОграниченийПрав(ВсеВидыОграниченийПрав); + ВидыОграниченийПравДляПользователей = Новый Соответствие; + ВидыОграниченийПравДляВнешнихПользователей = Новый Соответствие; Если ОбщийКонтекст.Свойство("СтрокиВерсииХранимыхПараметров") Тогда СтрокиВерсийСписков = НовыеСтрокиВерсийСписков(); - ОбщийКонтекст.СтрокиВерсииХранимыхПараметров = - Новый Структура("ВсеВерсииСтрокой, ВсеВидыОграниченийСтрокой, СтрокиВерсийСписков", - "", "", СтрокиВерсийСписков); + СтрокиВерсииХранимыхПараметров = Новый Структура; + СтрокиВерсииХранимыхПараметров.Вставить("ВсеВерсииСтрокой", ""); + СтрокиВерсииХранимыхПараметров.Вставить("ВидыОграниченийПравДляПользователейСтрокой", ""); + СтрокиВерсииХранимыхПараметров.Вставить("ВидыОграниченийПравДляВнешнихПользователейСтрокой", ""); + СтрокиВерсииХранимыхПараметров.Вставить("СтрокиВерсийСписков", СтрокиВерсийСписков); + ОбщийКонтекст.СтрокиВерсииХранимыхПараметров = СтрокиВерсииХранимыхПараметров; КонецЕсли; // Заполнение для пользователей. @@ -24971,7 +25142,7 @@ КонтекстДляПользователей.Вставить("ВерсииПараметровШаблонов", НовыеВерсииПараметровШаблонов()); КонтекстДляПользователей.Вставить("СпискиСДатой", СпискиСДатой); КонтекстДляПользователей.Вставить("ИдентификаторыСписков", ИдентификаторыСписков); - КонтекстДляПользователей.Вставить("ВсеВидыОграниченийПрав", ВсеВидыОграниченийПрав); + КонтекстДляПользователей.Вставить("ВсеВидыОграниченийПрав", ВидыОграниченийПравДляПользователей); КонтекстДляПользователей.Вставить("ВедущиеРоли", Новый Соответствие); ДобавитьХранимыеПараметрыОграниченияДляВидаПользователей(КонтекстДляПользователей); @@ -24988,7 +25159,7 @@ КонтекстДляВнешнихПользователей.Вставить("ВерсииПараметровШаблонов", НовыеВерсииПараметровШаблонов()); КонтекстДляВнешнихПользователей.Вставить("СпискиСДатой", СпискиСДатой); КонтекстДляВнешнихПользователей.Вставить("ИдентификаторыСписков", ИдентификаторыСписков); - КонтекстДляВнешнихПользователей.Вставить("ВсеВидыОграниченийПрав", ВсеВидыОграниченийПрав); + КонтекстДляВнешнихПользователей.Вставить("ВсеВидыОграниченийПрав", ВидыОграниченийПравДляВнешнихПользователей); КонтекстДляВнешнихПользователей.Вставить("ВедущиеРоли", Новый Соответствие); ДобавитьХранимыеПараметрыОграниченияДляВидаПользователей(КонтекстДляВнешнихПользователей); @@ -25031,9 +25202,10 @@ ОбщаяВерсия = ОбщаяВерсия(ОбщийКонтекст, ОписаниеВерсии.Ключ, ОписаниеВерсии.Значение, КонтекстДляВнешнихПользователей.ВерсииОграниченийСписков.Получить(ОписаниеВерсии.Ключ)); ВерсииОграниченийСписков.Вставить(ОписаниеВерсии.Ключ, ОбщаяВерсия); - Версии.Добавить(ОбщаяВерсия); + Версии.Добавить(ОбщаяВерсия, ПолучитьHexСтрокуИзДвоичныхДанных( + ПолучитьДвоичныеДанныеИзСтроки(Строка(ОбщаяВерсия)))); КонецЦикла; - Версии.СортироватьПоЗначению(); + Версии.СортироватьПоПредставлению(); ВерсииСтрокой = СтрСоединить(Версии.ВыгрузитьЗначения(), Символы.ПС); ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.SHA256); ХешированиеДанных.Добавить(ВерсииСтрокой); @@ -25084,18 +25256,18 @@ ХранимыеПараметры.Вставить("ДляЗаписиОбъектовИПроверкиПрав", Новый ХранилищеЗначения(ОбщегоНазначения.ФиксированныеДанные(ПараметрыЗаписи))); - ВсеВидыОграничений = Новый СписокЗначений; - Для Каждого КлючИЗначение Из ВсеВидыОграниченийПрав Цикл - ВсеВидыОграничений.Добавить(КлючИЗначение.Ключ); - КонецЦикла; - ВсеВидыОграничений.СортироватьПоЗначению(); - ВсеВидыОграниченийСтрокой = СтрСоединить(ВсеВидыОграничений.ВыгрузитьЗначения(), Символы.ПС); - ХранимыеПараметрыОтчета = НоваяСтруктураХранимыхПараметровОтчета(); - ХранимыеПараметрыОтчета.ВсеВидыОграниченийПрав = ВсеВидыОграниченийСтрокой; - ХешированиеДанных.Добавить(ВсеВидыОграниченийСтрокой); + ХранимыеПараметрыОтчета.ВидыОграниченийПравДляПользователей = + ВидыОграниченийПравСтрокой(ВидыОграниченийПравДляПользователей); + ХешированиеДанных.Добавить(ХранимыеПараметрыОтчета.ВидыОграниченийПравДляПользователей); + ХранимыеПараметрыОтчета.ВидыОграниченийПравДляВнешнихПользователей = + ВидыОграниченийПравСтрокой(ВидыОграниченийПравДляВнешнихПользователей); + ХешированиеДанных.Добавить(ХранимыеПараметрыОтчета.ВидыОграниченийПравДляВнешнихПользователей); Если ОбщийКонтекст.Свойство("СтрокиВерсииХранимыхПараметров") Тогда - ОбщийКонтекст.СтрокиВерсииХранимыхПараметров.ВсеВидыОграниченийСтрокой = ВсеВидыОграниченийСтрокой; + ОбщийКонтекст.СтрокиВерсииХранимыхПараметров.ВидыОграниченийПравДляПользователейСтрокой + = ХранимыеПараметрыОтчета.ВидыОграниченийПравДляПользователей; + ОбщийКонтекст.СтрокиВерсииХранимыхПараметров.ВидыОграниченийПравДляВнешнихПользователейСтрокой + = ХранимыеПараметрыОтчета.ВидыОграниченийПравДляВнешнихПользователей; КонецЕсли; ХранимыеПараметры.Вставить("ДляОтчетаПоПравамДоступа", @@ -25131,20 +25303,6 @@ КонецФункции -// Для функции ХранимыеПараметрыОграниченияДоступа. -Процедура ДобавитьНестандартныеВидыОграниченийПрав(ВсеВидыОграниченийПрав) - - ВсеВидыОграниченийПрав.Вставить("Справочник.ВнешниеПользователи.Чтение.ВнешниеПользователи"); - ВсеВидыОграниченийПрав.Вставить("Справочник.ВнешниеПользователи.Изменение.ВнешниеПользователи"); - ВсеВидыОграниченийПрав.Вставить("Справочник.ГруппыВнешнихПользователей.Чтение.ВнешниеПользователи"); - ВсеВидыОграниченийПрав.Вставить("Справочник.ГруппыПользователей.Чтение.Пользователи"); - ВсеВидыОграниченийПрав.Вставить("Справочник.Пользователи.Чтение.Пользователи"); - ВсеВидыОграниченийПрав.Вставить("Справочник.Пользователи.Изменение.Пользователи"); - ВсеВидыОграниченийПрав.Вставить("РегистрСведений.СоставыГруппПользователей.Чтение.ВнешниеПользователи"); - ВсеВидыОграниченийПрав.Вставить("РегистрСведений.СоставыГруппПользователей.Чтение.Пользователи"); - -КонецПроцедуры - // Для функций РассчитанныеПараметрыОграничения и ХранимыеПараметрыОграниченияДоступа. // // Возвращаемое значение: @@ -25251,7 +25409,7 @@ КонецФункции -// Для процедуры ХранимыеПараметрыОграниченияДоступа. +// Для функции ХранимыеПараметрыОграниченияДоступа. Процедура ДобавитьХранимыеПараметрыОграниченияДляВидаПользователей(Контекст) // Подготовка параметров с учетом зависимостей только по ключам доступа. @@ -27002,8 +27160,9 @@ // // Возвращаемое значение: // ФиксированнаяСтруктура: -// * ВерсияСтруктурыКэша - см. ВерсияСтруктурыКэша -// * ВсеВидыОграниченийПрав - Строка +// * ВерсияСтруктурыКэша - см. ВерсияСтруктурыКэша +// * ВидыОграниченийПравДляПользователей - Строка +// * ВидыОграниченийПравДляВнешнихПользователей - Строка // Функция СтруктураХранимыхПараметровОтчета(Значения) @@ -27013,8 +27172,10 @@ Если ТипЗнч(Значения) = Тип("ФиксированнаяСтруктура") И Значения.Свойство("ВерсияСтруктурыКэша") И ТипЗнч(Значения.ВерсияСтруктурыКэша) = Тип("Строка") - И Значения.Свойство("ВсеВидыОграниченийПрав") - И ТипЗнч(Значения.ВсеВидыОграниченийПрав) = Тип("Строка") Тогда + И Значения.Свойство("ВидыОграниченийПравДляПользователей") + И ТипЗнч(Значения.ВидыОграниченийПравДляПользователей) = Тип("Строка") + И Значения.Свойство("ВидыОграниченийПравДляВнешнихПользователей") + И ТипЗнч(Значения.ВидыОграниченийПравДляВнешнихПользователей) = Тип("Строка") Тогда ЗаполнитьЗначенияСвойств(ХранимыеПараметрыОтчета, Значения); КонецЕсли; @@ -27028,18 +27189,34 @@ // Возвращаемое значение: // Структура: // * ВерсияСтруктурыКэша - см. ВерсияСтруктурыКэша -// * ВсеВидыОграниченийПрав - Строка +// * ВидыОграниченийПравДляПользователей - Строка +// * ВидыОграниченийПравДляВнешнихПользователей - Строка // Функция НоваяСтруктураХранимыхПараметровОтчета() ХранимыеПараметрыОтчета = Новый Структура; ХранимыеПараметрыОтчета.Вставить("ВерсияСтруктурыКэша", ВерсияСтруктурыКэша()); - ХранимыеПараметрыОтчета.Вставить("ВсеВидыОграниченийПрав", ""); + ХранимыеПараметрыОтчета.Вставить("ВидыОграниченийПравДляПользователей", ""); + ХранимыеПараметрыОтчета.Вставить("ВидыОграниченийПравДляВнешнихПользователей", ""); Возврат ХранимыеПараметрыОтчета; КонецФункции +// Для функции ХранимыеПараметрыОграниченияДоступа. +Функция ВидыОграниченийПравСтрокой(ВидыОграниченийПрав) + + Список = Новый СписокЗначений; + Для Каждого КлючИЗначение Из ВидыОграниченийПрав Цикл + Список.Добавить(КлючИЗначение.Ключ); + КонецЦикла; + Список.СортироватьПоЗначению(); + ВидыОграниченийСтрокой = СтрСоединить(Список.ВыгрузитьЗначения(), Символы.ПС); + + Возврат ВидыОграниченийСтрокой; + +КонецФункции + #КонецОбласти #Область ПараметрыОграниченияДоступаДляСпискаОтдельно @@ -29447,11 +29624,16 @@ Контекст.Вставить("ПоляКлючаДоступаПослеУпрощения", ПоляКлючаДоступаПослеУпрощения); Контекст.Вставить("СвойстваПолейКлючаДоступа", Новый Соответствие); + Контекст.Вставить("ОбратныйТипПользователя", ?(Контекст.ДляВнешнихПользователей, + Тип("СправочникСсылка.Пользователи"), Тип("СправочникСсылка.ВнешниеПользователи"))); + Контекст.Вставить("ОбратныйТипГруппыПользователей", ?(Контекст.ДляВнешнихПользователей, + Тип("СправочникСсылка.ГруппыПользователей"), Тип("СправочникСсылка.ГруппыВнешнихПользователей"))); ДобавленныеПоля = Новый Соответствие; ИменаПолейДляЗапроса = Новый Массив; Для Каждого ОписаниеПоля Из ПоляКлючаДоступаПослеУпрощения Цикл СвойстваПоля = СвойстваВсехПолей.Получить(ОписаниеПоля.Поле); // см. СвойстваПоля - СвойстваПоля.Вставить("Чтение", ОписаниеПоля.Чтение); + СвойстваПоля.Вставить("Чтение", ОписаниеПоля.Чтение); + СвойстваПоля.Вставить("Изменение", ОписаниеПоля.Изменение); УточнитьСвойстваПоляСравнения(СвойстваПоля, ОписаниеПоля, Контекст); НаборПолей = НаборПолейУсловияКогда(СвойстваПоля, ОписаниеПоля, Контекст); Для Каждого СвойстваПоля Из НаборПолей Цикл @@ -30220,13 +30402,16 @@ Свойства.ТипыСохраненияПустойСсылки.Добавить(Тип); КонецЕсли; + ИмяВедущегоПрава = ?(Родитель.Узел = "ЧтениеОбъектаРазрешено", "Чтение", "Изменение"); + Значение = Контекст.ТипыВладельцевНастроекПрав.Получить(Тип); Если Значение <> Неопределено И ВРег(Контекст.Список) = ВРег(Значение[0].ВладелецПрав) Тогда Свойства.ТипыСохраненияЗначений.Добавить(Тип); Свойства.ЕстьТипВладельцаНастроекПрав = Истина; - ДобавитьВидОграниченияПрав("НастройкиПрав." + ИмяТипа, Свойства, Контекст); + ВидОграничения = "НастройкиПрав." + ИмяТипа + "." + ИмяВедущегоПрава; + ДобавитьВидОграниченияПрав(ВидОграничения, Свойства, Контекст, Истина); Продолжить; КонецЕсли; @@ -30237,7 +30422,9 @@ ДобавитьВедущийСписокПоПолюСсылка(Контекст.ВедущиеСпискиПоКлючамДоступа, ИмяТипа, ОписаниеПоля, Свойства, Контекст); - ДобавитьВидОграниченияПрав("Объект." + ИмяТипа, Свойства, Контекст); + + ВидОграничения = "Объект." + ИмяТипа + "." + ИмяВедущегоПрава; + ДобавитьВидОграниченияПрав(ВидОграничения, Свойства, Контекст, Истина); КонецЕсли; КонецЦикла; @@ -30271,6 +30458,12 @@ Продолжить; КонецЕсли; + Если Тип = Контекст.ОбратныйТипПользователя + Или Тип = Контекст.ОбратныйТипГруппыПользователей Тогда + Свойства.ТипыСохраненияТипаЗапрещенный.Добавить(Тип); + Продолжить; + КонецЕсли; + ДобавитьВидОграниченияПрав(СвойстваВидаДоступа.Имя, Свойства, Контекст); Если Не ТипЗначенийДоступаИспользуется(Контекст, СвойстваВидаДоступа.ТипЗначений) Тогда @@ -30390,13 +30583,14 @@ КонецФункции // Для процедуры ДобавитьСвойстваТиповПоля. -Процедура ДобавитьВидОграниченияПрав(ВидОграничения, СвойстваПоля, Контекст) +Процедура ДобавитьВидОграниченияПрав(ВидОграничения, СвойстваПоля, Контекст, ПоОбъекту = Ложь) Если СвойстваПоля.Чтение Тогда Контекст.ВсеВидыОграниченийПрав.Вставить("Чтение." + ВидОграничения, Истина); КонецЕсли; - - Контекст.ВсеВидыОграниченийПрав.Вставить("Изменение." + ВидОграничения, Истина); + Если Не ПоОбъекту Или СвойстваПоля.Изменение Тогда + Контекст.ВсеВидыОграниченийПрав.Вставить("Изменение." + ВидОграничения, Истина); + КонецЕсли; КонецПроцедуры @@ -36796,7 +36990,8 @@ Если Не Контекст.ЭтоУсловиеСоединения Тогда ПолеКлючаДоступа = НовоеПолеКлючаДоступа(); ПолеКлючаДоступа.Вставить("Поле", Условие); - ПолеКлючаДоступа.Вставить("Чтение", Контекст.Чтение); + ПолеКлючаДоступа.Вставить("Чтение", Контекст.Чтение); + ПолеКлючаДоступа.Вставить("Изменение", Контекст.Изменение); Контекст.ПоляКлючаДоступа.Добавить(ПолеКлючаДоступа); КонецЕсли; @@ -37209,6 +37404,9 @@ Контекст.Вставить("Чтение", СвойстваЧасти.Имя = "РазрешитьЧтениеИзменение" Или СвойстваЧасти.Имя = "РазрешитьЧтение"); + Контекст.Вставить("Изменение", + СвойстваЧасти.Имя = "РазрешитьЧтениеИзменение" + Или СвойстваЧасти.Имя = "РазрешитьИзменениеЕслиРазрешеноЧтение"); ДобавитьПсевдонимыПоУмолчанию(Контекст); diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl index e4f4fdde9..b6569ea84 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl @@ -31,8 +31,31 @@ Функция ПараметрыРасшифровкиОтчетаАнализПравДоступа(АдресДанныхРасшифровки, Расшифровка) Экспорт - Возврат Отчеты["АнализПравДоступа"].ПараметрыРасшифровки(АдресДанныхРасшифровки, Расшифровка); + Возврат Отчеты.АнализПравДоступа.ПараметрыРасшифровки(АдресДанныхРасшифровки, Расшифровка); КонецФункции #КонецОбласти + + +#Область СлужебныеПроцедурыИФункции + +Функция СокращенныйКлючНазначенияИспользования(Знач КлючНазначенияИспользования) Экспорт + + Если СтрДлина(КлючНазначенияИспользования) <= 128 Тогда + Возврат КлючНазначенияИспользования; + КонецЕсли; + + ДлинаХеша = 33; + Остаток = Сред(КлючНазначенияИспользования, 129 - ДлинаХеша); + Начало = Лев(КлючНазначенияИспользования, 128 - ДлинаХеша); + + Хеширование = Новый ХешированиеДанных(ХешФункция.MD5); + Хеширование.Добавить(Остаток); + СтрокаХеша = ПолучитьHexСтрокуИзДвоичныхДанных(Хеширование.ХешСумма); + + Возврат Начало + "_" + СтрокаХеша; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиент/Module.bsl index faea8d3be..8797d99a9 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиент/Module.bsl @@ -444,169 +444,29 @@ // См. ОтчетыКлиентПереопределяемый.ОбработкаРасшифровки Процедура ПриОбработкеРасшифровки(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) Экспорт - Если ФормаОтчета.НастройкиОтчета.ПолноеИмя <> "Отчет.АнализПравДоступа" Тогда - Возврат; + Если ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.АнализПравДоступа" Тогда + ПриОбработкеРасшифровкиОтчетаАнализПравДоступа(ФормаОтчета, + Элемент, Расшифровка, СтандартнаяОбработка); + + ИначеЕсли ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.ПраваРолей" Тогда + ПриОбработкеРасшифровкиОтчетаПраваРолей(ФормаОтчета, + Элемент, Расшифровка, СтандартнаяОбработка); КонецЕсли; - СтандартнаяОбработка = Ложь; - ПараметрыРасшифровки = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа( - ФормаОтчета.ОтчетДанныеРасшифровки, Расшифровка); - - ПараметрыОтчета = Новый Структура; - ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); - ПараметрыОтчета.Вставить("Расшифровка", Расшифровка); - - Отбор = Новый Структура; - Для Каждого ЭлементОтбора Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл - Настройка = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти( - ЭлементОтбора.ИдентификаторПользовательскойНастройки); - Если Настройка = Неопределено Тогда - Настройка = ЭлементОтбора; - КонецЕсли; - Если Настройка.Использование Тогда - Если ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно - Или ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда - - Отбор.Вставить(ЭлементОтбора.ЛевоеЗначение, Настройка.ПравоеЗначение); - КонецЕсли; - КонецЕсли; - КонецЦикла; - - ИмяПараметра = "Пользователь"; - ЗначениеПараметра = ЗначениеПараметра(ФормаОтчета.Отчет.КомпоновщикНастроек, ИмяПараметра); - Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда - Отбор.Вставить(ИмяПараметра, ЗначениеПараметра); - КонецЕсли; - - Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицыОтчета" - И ПараметрыРасшифровки.ИмяПоляРасшифровки <> "Пользователь" - Или ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователяНаТаблицыОтчета" Тогда - - Отбор.Удалить("Отчет"); - КонецЕсли; - - Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "Право" - Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоПросмотр" - Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоРедактирование" - Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоИнтерактивноеДобавление" Тогда - - КлючВарианта = "ПраваПользователяНаТаблицу"; - - Если ПараметрыРасшифровки.СписокПолей["Пользователь"] <> Неопределено Тогда - Отбор.Вставить("Пользователь", ПараметрыРасшифровки.СписокПолей["Пользователь"]); - КонецЕсли; - - Если ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"] <> Неопределено Тогда - Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"]); - ИначеЕсли ПараметрыРасшифровки.СписокПолей["Отчет"] <> Неопределено Тогда - Отбор.Вставить("Отчет", ПараметрыРасшифровки.СписокПолей["Отчет"]); - КлючВарианта = "ПраваПользователяНаТаблицыОтчета"; - КонецЕсли; - - Если КлючВарианта = ФормаОтчета.КлючТекущегоВарианта Тогда - Возврат; - КонецЕсли; - - Если КлючВарианта <> "ПраваПользователяНаТаблицыОтчета" Тогда - ЗначениеПрава = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]; - Если ТипЗнч(ЗначениеПрава) = Тип("Число") И ЗначениеПрава = 0 - Или ТипЗнч(ЗначениеПрава) = Тип("Булево") И Не ЗначениеПрава Тогда - Возврат; - КонецЕсли; - КонецЕсли; - - ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "ОбъектМетаданных" Тогда - - КлючВарианта = "ПраваПользователейНаТаблицу"; - Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"]); +КонецПроцедуры - Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователяНаТаблицы" - Или ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователяНаТаблицыОтчета" Тогда - КлючВарианта = "ПраваПользователяНаТаблицу"; - КонецЕсли; - - ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "Пользователь" - И ФормаОтчета.КлючТекущегоВарианта <> "ПраваПользователяНаТаблицы" - И ФормаОтчета.КлючТекущегоВарианта <> "ПраваПользователяНаТаблицу" - И ФормаОтчета.КлючТекущегоВарианта <> "ПраваПользователяНаТаблицыОтчетов" Тогда - - КлючВарианта = "ПраваПользователяНаТаблицы"; - Отбор.Вставить("Пользователь", ПараметрыРасшифровки.СписокПолей["Пользователь"]); - Отбор.Удалить("ВходВПрограммуРазрешен"); - - Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицу" Тогда - КлючВарианта = "ПраваПользователяНаТаблицу"; - КонецЕсли; - - Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицыОтчета" Тогда - КлючВарианта = "ПраваПользователяНаТаблицыОтчета"; - КонецЕсли; - - Если ФормаОтчета.КлючТекущегоВарианта = "АнализПравДоступа" - И ГруппировкаПоОтчетамВключена(ФормаОтчета.Отчет.КомпоновщикНастроек) Тогда - - КлючВарианта = "ПраваПользователяНаТаблицыОтчетов"; - КонецЕсли; - - ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "Отчет" Тогда - - Если ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователяНаТаблицыОтчета" - Или ФормаОтчета.КлючТекущегоВарианта = "ПраваПользователейНаТаблицыОтчета" Тогда - Возврат; - КонецЕсли; - - КлючВарианта = "ПраваПользователейНаТаблицыОтчета"; - Отбор.Вставить("Отчет", ПараметрыРасшифровки.СписокПолей["Отчет"]); - - Иначе - - ЗначениеРасшифровки = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]; - Если ЗначениеЗаполнено(ЗначениеРасшифровки) Тогда - Пользователь = ПараметрыРасшифровки.СписокПолей["Пользователь"]; - - Если Пользователь = Неопределено - И Отбор.Свойство("Пользователь") - И ТипЗнч(Отбор.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда - - Пользователь = Отбор.Пользователь; - КонецЕсли; - - Если ЗначениеЗаполнено(Пользователь) - И ТипЗнч(ЗначениеРасшифровки) = Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда - - ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента(); - Если ПараметрыРаботыКлиента.УпрощенныйИнтерфейсНастройкиПравДоступа Тогда - ИмяФормы = "ОбщаяФорма.ПраваДоступаУпрощенно"; - Иначе - ИмяФормы = "ОбщаяФорма.ПраваДоступа"; - КонецЕсли; - - Форма = ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", Новый Структура("Ключ", Пользователь)); - ОткрытьФорму(ИмяФормы, Новый Структура("Пользователь", Пользователь), Форма, , Форма.Окно); - Иначе - ПоказатьЗначение(Неопределено, - ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]); - КонецЕсли; - КонецЕсли; - - Возврат; - +// См. ОтчетыКлиентПереопределяемый.ПриНачалеВыбораЗначений +Процедура ПриНачалеВыбораЗначений(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) Экспорт + + Если ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.АнализПравДоступа" Тогда + ПриНачалеВыбораЗначенийОтчетаАнализПравДоступа(ФормаОтчета, + УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка); + + ИначеЕсли ФормаОтчета.НастройкиОтчета.ПолноеИмя = "Отчет.ПраваРолей" Тогда + ПриНачалеВыбораЗначенийОтчетаПраваРолей(ФормаОтчета, + УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка); КонецЕсли; - Если Отбор.Свойство("ОбъектМетаданных") - И Не ЗначениеЗаполнено(Отбор.ОбъектМетаданных) - И ( КлючВарианта = "ПраваПользователейНаТаблицу" - Или КлючВарианта = "ПраваПользователяНаТаблицу" ) Тогда - - Возврат; - КонецЕсли; - - ПараметрыОтчета.Вставить("Отбор", Отбор); - ПараметрыОтчета.Вставить("КлючВарианта", КлючВарианта); - ПараметрыОтчета.Вставить("КлючНазначенияИспользования", КлючВарианта); - - ОткрытьФорму("Отчет.АнализПравДоступа.Форма", ПараметрыОтчета, ФормаОтчета); - КонецПроцедуры Процедура ПоказатьПраваПользователейОтчета(Отчет, ИспользуемыеТаблицы) Экспорт @@ -642,9 +502,6 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// Вспомогательные процедуры и функции. - // Завершение обработчика события ЗначениеДоступаНачалоВыбора. // // Параметры: @@ -727,6 +584,478 @@ КонецПроцедуры +// Обработка расшифровки отчета. + +// Для процедуры ПриОбработкеРасшифровки. +Процедура ПриОбработкеРасшифровкиОтчетаАнализПравДоступа(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПараметрыРасшифровки = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа( + ФормаОтчета.ОтчетДанныеРасшифровки, Расшифровка); + + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "ЗначениеПрава" Тогда + Возврат; + ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "ВладелецИлиПользовательНастроек" Тогда + Если ПараметрыРасшифровки.СписокПолей.Получить("ЭтоВладелецНастроек") <> Истина Тогда + СтандартнаяОбработка = Истина; + Возврат; + КонецЕсли; + ВладелецНастроек = ПараметрыРасшифровки.СписокПолей.Получить("ВладелецИлиПользовательНастроек"); + Если Не ЗначениеЗаполнено(ВладелецНастроек) Тогда + Возврат; + КонецЕсли; + ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ВладелецНастроек); + ОткрытьФорму("ОбщаяФорма.НастройкиПравОбъектов", ПараметрыФормы); + Возврат; + ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "ЗначениеДоступа" Тогда + ГруппаДоступа = ПараметрыРасшифровки.СписокПолей.Получить("ГруппаДоступа"); + Если Не ЗначениеЗаполнено(ГруппаДоступа) + Или ТипЗнч(ГруппаДоступа) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда + Возврат; + КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Ключ", ГруппаДоступа); + ПараметрыФормы.Вставить("ПерейтиКВидуДоступа", + ПараметрыРасшифровки.СписокПолей.Получить("ВидДоступа")); + ПараметрыФормы.Вставить("ПерейтиКЗначениюДоступа", + ПараметрыРасшифровки.СписокПолей.Получить("ЗначениеДоступа")); + Форма = ОткрытьФорму("Справочник.ГруппыДоступа.ФормаОбъекта", ПараметрыФормы); + ПараметрыФормы.Удалить("Ключ"); + ЗаполнитьЗначенияСвойств(Форма, ПараметрыФормы); + Возврат; + КонецЕсли; + + ТекущийВариант = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.КлючПредопределенногоВарианта; + + ПараметрыОтчета = Новый Структура; + ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыОтчета.Вставить("Расшифровка", Расшифровка); + + Отбор = Новый Структура; + Для Каждого ЭлементОтбора Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл + Настройка = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти( + ЭлементОтбора.ИдентификаторПользовательскойНастройки); + Если Настройка = Неопределено Тогда + Настройка = ЭлементОтбора; + КонецЕсли; + Если Настройка.Использование Тогда + Если ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно + Или ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда + + Отбор.Вставить(ЭлементОтбора.ЛевоеЗначение, Настройка.ПравоеЗначение); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + ИмяПараметра = "Пользователь"; + ЗначениеПараметра = ЗначениеПараметра(ФормаОтчета.Отчет.КомпоновщикНастроек, ИмяПараметра); + Если ЗначениеПараметра <> Null Тогда + Отбор.Вставить(ИмяПараметра, ЗначениеПараметра); + КонецЕсли; + + Если ТекущийВариант = "ПраваПользователейНаТаблицыОтчета" + И ПараметрыРасшифровки.ИмяПоляРасшифровки <> "Пользователь" + Или ТекущийВариант = "ПраваПользователяНаТаблицыОтчета" Тогда + + Отбор.Удалить("Отчет"); + КонецЕсли; + + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "Право" + Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоПросмотр" + Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоРедактирование" + Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ПравоИнтерактивноеДобавление" Тогда + + КлючВарианта = "ПраваПользователяНаТаблицу"; + + Если ПараметрыРасшифровки.СписокПолей["Пользователь"] <> Неопределено Тогда + Отбор.Вставить("Пользователь", ПараметрыРасшифровки.СписокПолей["Пользователь"]); + КонецЕсли; + + Если ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"] <> Неопределено Тогда + Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"]); + ИначеЕсли ПараметрыРасшифровки.СписокПолей["Отчет"] <> Неопределено Тогда + Отбор.Вставить("Отчет", ПараметрыРасшифровки.СписокПолей["Отчет"]); + КлючВарианта = "ПраваПользователяНаТаблицыОтчета"; + КонецЕсли; + + Если КлючВарианта = ТекущийВариант Тогда + Возврат; + КонецЕсли; + + Если КлючВарианта <> "ПраваПользователяНаТаблицыОтчета" Тогда + ЗначениеПрава = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]; + Если ТипЗнч(ЗначениеПрава) = Тип("Число") И ЗначениеПрава = 0 + Или ТипЗнч(ЗначениеПрава) = Тип("Булево") И Не ЗначениеПрава Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "ОбъектМетаданных" Тогда + + КлючВарианта = "ПраваПользователейНаТаблицу"; + Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ОбъектМетаданных"]); + + Если ТекущийВариант = "ПраваПользователяНаТаблицы" + Или ТекущийВариант = "ПраваПользователяНаТаблицыОтчета" Тогда + КлючВарианта = "ПраваПользователяНаТаблицу"; + КонецЕсли; + + ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "Пользователь" + И ТекущийВариант <> "ПраваПользователяНаТаблицы" + И ТекущийВариант <> "ПраваПользователяНаТаблицу" + И ТекущийВариант <> "ПраваПользователяНаТаблицыОтчетов" Тогда + + КлючВарианта = "ПраваПользователяНаТаблицы"; + Отбор.Вставить("Пользователь", ПараметрыРасшифровки.СписокПолей["Пользователь"]); + Отбор.Удалить("ВходВПрограммуРазрешен"); + + Если ТекущийВариант = "ПраваПользователейНаТаблицу" Тогда + КлючВарианта = "ПраваПользователяНаТаблицу"; + КонецЕсли; + + Если ТекущийВариант = "ПраваПользователейНаТаблицыОтчета" Тогда + КлючВарианта = "ПраваПользователяНаТаблицыОтчета"; + КонецЕсли; + + Если ТекущийВариант = "АнализПравДоступа" + И ГруппировкаПоОтчетамВключена(ФормаОтчета.Отчет.КомпоновщикНастроек) Тогда + + КлючВарианта = "ПраваПользователяНаТаблицыОтчетов"; + КонецЕсли; + + ИначеЕсли ПараметрыРасшифровки.ИмяПоляРасшифровки = "Отчет" Тогда + + Если ТекущийВариант = "ПраваПользователяНаТаблицыОтчета" + Или ТекущийВариант = "ПраваПользователейНаТаблицыОтчета" Тогда + Возврат; + КонецЕсли; + + КлючВарианта = "ПраваПользователейНаТаблицыОтчета"; + Отбор.Вставить("Отчет", ПараметрыРасшифровки.СписокПолей["Отчет"]); + + Иначе + + ЗначениеРасшифровки = ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]; + Если ЗначениеЗаполнено(ЗначениеРасшифровки) Тогда + Пользователь = ПараметрыРасшифровки.СписокПолей["Пользователь"]; + + Если Пользователь = Неопределено + И Отбор.Свойство("Пользователь") + И ТипЗнч(Отбор.Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда + + Пользователь = Отбор.Пользователь; + КонецЕсли; + + Если ЗначениеЗаполнено(Пользователь) + И ТипЗнч(ЗначениеРасшифровки) = Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда + + ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента(); + Если ПараметрыРаботыКлиента.УпрощенныйИнтерфейсНастройкиПравДоступа Тогда + ИмяФормы = "ОбщаяФорма.ПраваДоступаУпрощенно"; + Иначе + ИмяФормы = "ОбщаяФорма.ПраваДоступа"; + КонецЕсли; + + Форма = ОткрытьФорму("Справочник.Пользователи.ФормаОбъекта", Новый Структура("Ключ", Пользователь)); + ОткрытьФорму(ИмяФормы, Новый Структура("Пользователь", Пользователь), Форма, , Форма.Окно); + Иначе + ПоказатьЗначение(Неопределено, + ПараметрыРасшифровки.СписокПолей[ПараметрыРасшифровки.ИмяПоляРасшифровки]); + КонецЕсли; + КонецЕсли; + + Возврат; + + КонецЕсли; + + Если Отбор.Свойство("ОбъектМетаданных") + И Не ЗначениеЗаполнено(Отбор.ОбъектМетаданных) + И ( КлючВарианта = "ПраваПользователейНаТаблицу" + Или КлючВарианта = "ПраваПользователяНаТаблицу" ) Тогда + + Возврат; + КонецЕсли; + + КлючНазначенияИспользования = КлючВарианта; + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "Отчет"); + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "Пользователь"); + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "ОбъектМетаданных"); + СократитьКлючНазначенияИспользования(КлючНазначенияИспользования); + + ПараметрыОтчета.Вставить("Отбор", Отбор); + ПараметрыОтчета.Вставить("КлючВарианта", КлючВарианта); + ПараметрыОтчета.Вставить("КлючНазначенияИспользования", КлючНазначенияИспользования); + + ОткрытьФорму(ФормаОтчета.НастройкиОтчета.ПолноеИмя + ".Форма", ПараметрыОтчета, ФормаОтчета); + +КонецПроцедуры + +// Для процедуры ПриОбработкеРасшифровки. +Процедура ПриОбработкеРасшифровкиОтчетаПраваРолей(ФормаОтчета, Элемент, Расшифровка, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ПараметрыРасшифровки = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа( + ФормаОтчета.ОтчетДанныеРасшифровки, Расшифровка); + + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "Профиль" Тогда + Профиль = ПараметрыРасшифровки.СписокПолей["Профиль"]; + Если ТипЗнч(Профиль) = Тип("СправочникСсылка.ПрофилиГруппДоступа") + И ЗначениеЗаполнено(Профиль) Тогда + ПоказатьЗначение(, Профиль); + КонецЕсли; + Возврат; + КонецЕсли; + + ТекущийВариант = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.КлючПредопределенногоВарианта; + Если ТекущийВариант = "ПодробныеПраваРолиНаОбъектМетаданных" Тогда + Возврат; + КонецЕсли; + + ПараметрыОтчета = Новый Структура; + ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина); + ПараметрыОтчета.Вставить("Расшифровка", Расшифровка); + + Отбор = Новый Структура; + УстановитьЗначениеПараметра(Отбор, "ФорматИмени", ФормаОтчета); + + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "УровеньДоступа" Тогда + Если ЗначениеЗаполнено(ПараметрыРасшифровки.СписокПолей["ПолноеИмяОбъекта"]) Тогда + Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ПолноеИмяОбъекта"]); + Иначе + Свойства = Новый Структура("ОтчетТабличныйДокумент"); + ЗаполнитьЗначенияСвойств(Свойства, ФормаОтчета); + Если ТипЗнч(Свойства.ОтчетТабличныйДокумент) <> Тип("ТабличныйДокумент") Тогда + Возврат; + КонецЕсли; + ОбластьОбъекта = Свойства.ОтчетТабличныйДокумент.Область(Элемент.ТекущаяОбласть.Верх, 2); + Если ТипЗнч(ОбластьОбъекта.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда + Возврат; + КонецЕсли; + ПараметрыРасшифровкиОбъекта = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа( + ФормаОтчета.ОтчетДанныеРасшифровки, ОбластьОбъекта.Расшифровка); + Если ЗначениеЗаполнено(ПараметрыРасшифровкиОбъекта.СписокПолей["ПолноеИмяОбъекта"]) Тогда + Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровкиОбъекта.СписокПолей["ПолноеИмяОбъекта"]); + Иначе + Возврат; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ТекущийВариант = "ПраваРолей" + И ПараметрыРасшифровки.ИмяПоляРасшифровки = "УровеньДоступа" Тогда + + КлючВарианта = "ПодробныеПраваРолиНаОбъектМетаданных"; + + Если ЗначениеЗаполнено(ПараметрыРасшифровки.СписокПолей["ИмяРоли"]) Тогда + Отбор.Вставить("Роль", ПараметрыРасшифровки.СписокПолей["ИмяРоли"]); + ИначеЕсли ТипЗнч(ПараметрыРасшифровкиОбъекта) = Тип("Структура") Тогда + НомерСтрокиЭлемента = ПараметрыРасшифровкиОбъекта.СписокПолей["НомерСтрокиЭлемента"]; + Если Не ЗначениеЗаполнено(НомерСтрокиЭлемента) Тогда + Возврат; + КонецЕсли; + ОбластьРоли = Свойства.ОтчетТабличныйДокумент.Область(Элемент.ТекущаяОбласть.Верх - НомерСтрокиЭлемента, + Элемент.ТекущаяОбласть.Лево); + Если ТипЗнч(ОбластьРоли.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда + Возврат; + КонецЕсли; + ПараметрыРасшифровкиРоли = УправлениеДоступомСлужебныйВызовСервера.ПараметрыРасшифровкиОтчетаАнализПравДоступа( + ФормаОтчета.ОтчетДанныеРасшифровки, ОбластьРоли.Расшифровка); + Если ЗначениеЗаполнено(ПараметрыРасшифровкиРоли.СписокПолей["ИмяРоли"]) Тогда + Отбор.Вставить("Роль", ПараметрыРасшифровкиРоли.СписокПолей["ИмяРоли"]); + Иначе + Возврат; + КонецЕсли; + КонецЕсли; + + ИначеЕсли ТекущийВариант = "ПраваРолей" + И ПараметрыРасшифровки.ИмяПоляРасшифровки = "ИмяРоли" Тогда + + КлючВарианта = "ПраваРолиНаОбъектыМетаданных"; + + ИмяРоли = ПараметрыРасшифровки.СписокПолей["ИмяРоли"]; + Если Не ЗначениеЗаполнено(ИмяРоли) Тогда + Возврат; + КонецЕсли; + Отбор.Вставить("Роль", ИмяРоли); + УстановитьЗначениеПараметра(Отбор, "ОбъектМетаданных", ФормаОтчета); + УстановитьЗначениеПараметра(Отбор, "ПраваНаРеквизиты", ФормаОтчета, Истина); + УстановитьЗначениеПараметра(Отбор, "ПоказыватьПраваНеинтерфейсныхПодсистем", ФормаОтчета, Истина); + УстановитьЗначениеПараметра(Отбор, "НеПредупреждатьОБольшомРазмереОтчета", ФормаОтчета, Истина); + + ИначеЕсли ТекущийВариант = "ПраваРолей" + И ПараметрыРасшифровки.ИмяПоляРасшифровки = "Уровень" Тогда + + КлючВарианта = "ПраваРолейНаОбъектМетаданных"; + + ПолноеИмяОбъекта = ПараметрыРасшифровки.СписокПолей["ПолноеИмяОбъекта"]; + Если Не ЗначениеЗаполнено(ПолноеИмяОбъекта) Тогда + Возврат; + КонецЕсли; + Отбор.Вставить("ОбъектМетаданных", ПолноеИмяОбъекта); + УстановитьЗначениеПараметра(Отбор, "Роль", ФормаОтчета); + + ИначеЕсли ТекущийВариант = "ПраваРолейНаОбъектМетаданных" + И ( ПараметрыРасшифровки.ИмяПоляРасшифровки = "ЕстьОграничение" + Или ПараметрыРасшифровки.ИмяПоляРасшифровки = "ИмяРоли3") Тогда + + КлючВарианта = "ПодробныеПраваРолиНаОбъектМетаданных"; + + Отбор.Вставить("ОбъектМетаданных", ЗначениеНачальногоОтбора(ФормаОтчета, "ОбъектМетаданных")); + Если Не ЗначениеЗаполнено(Отбор.ОбъектМетаданных) Тогда + Возврат; + КонецЕсли; + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "ИмяРоли3" Тогда + Отбор.Вставить("Роль", ПараметрыРасшифровки.СписокПолей["ИмяРоли3"]); + Иначе + Отбор.Вставить("Профиль", ПараметрыРасшифровки.СписокПолей["Профиль3"]); + Если Не ЗначениеЗаполнено(Отбор.Профиль) Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ИначеЕсли ТекущийВариант = "ПраваРолиНаОбъектыМетаданных" Тогда + + КлючВарианта = "ПодробныеПраваРолиНаОбъектМетаданных"; + + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "Уровень" Тогда + Отбор.Вставить("ОбъектМетаданных", ПараметрыРасшифровки.СписокПолей["ПолноеИмяОбъекта"]); + КонецЕсли; + Если Не Отбор.Свойство("ОбъектМетаданных") + Или Не ЗначениеЗаполнено(Отбор.ОбъектМетаданных) Тогда + Возврат; + КонецЕсли; + Если ПараметрыРасшифровки.ИмяПоляРасшифровки = "УровеньДоступа" Тогда + Отбор.Вставить("Профиль", ПараметрыРасшифровки.СписокПолей["Профиль4"]); + Если Не ЗначениеЗаполнено(Отбор.Профиль) Тогда + Возврат; + КонецЕсли; + Иначе + НачальнаяРоль = ЗначениеНачальногоОтбора(ФормаОтчета, "Роль"); + Если ЗначениеЗаполнено(НачальнаяРоль) Тогда + Отбор.Вставить("Роль", НачальнаяРоль); + Иначе + УстановитьЗначениеПараметра(Отбор, "Роль", ФормаОтчета); + КонецЕсли; + КонецЕсли; + Иначе + Возврат; + КонецЕсли; + + КлючНазначенияИспользования = КлючВарианта; + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "Роль"); + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "Профиль"); + УточнитьКлючНазначенияИспользования(КлючНазначенияИспользования, Отбор, "ОбъектМетаданных"); + СократитьКлючНазначенияИспользования(КлючНазначенияИспользования); + + ФиксированныйОтбор = Новый Структура; + Если Отбор.Свойство("ОбъектМетаданных") + И ( КлючВарианта = "ПодробныеПраваРолиНаОбъектМетаданных" + Или КлючВарианта = "ПраваРолейНаОбъектМетаданных") Тогда + + ФиксированныйОтбор.Вставить("ОбъектМетаданных", Отбор.ОбъектМетаданных); + Отбор.Удалить("ОбъектМетаданных"); + КонецЕсли; + ФиксированныйОтбор.Вставить("НачальныйОтбор", Отбор); + + ПараметрыОтчета.Вставить("Отбор", ФиксированныйОтбор); + ПараметрыОтчета.Вставить("КлючВарианта", КлючВарианта); + ПараметрыОтчета.Вставить("КлючНазначенияИспользования", КлючНазначенияИспользования); + + ОткрытьФорму(ФормаОтчета.НастройкиОтчета.ПолноеИмя + ".Форма", ПараметрыОтчета, ФормаОтчета); + +КонецПроцедуры + +// Для процедур ПриОбработкеРасшифровкиОтчетаАнализПравДоступа и +// ПриОбработкеРасшифровкиОтчетаПраваРолей. +// +Функция ЗначениеПараметра(КомпоновщикНастроек, ИмяПараметра, ИспользуетсяВсегда = Ложь) + + Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); + Настройка = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки); + + Если Настройка <> Неопределено + И (ИспользуетсяВсегда Или Настройка.Использование) Тогда + + Возврат Настройка.Значение; + КонецЕсли; + + Если Параметр <> Неопределено + И (ИспользуетсяВсегда Или Параметр.Использование) Тогда + + Возврат Параметр.Значение; + КонецЕсли; + + Возврат Null; + +КонецФункции + +Функция ЗначениеНачальногоОтбора(ФормаОтчета, ИмяПараметра) + + Если ФормаОтчета.ФормаПараметры.Отбор.Свойство(ИмяПараметра) Тогда + Отбор = ФормаОтчета.ФормаПараметры.Отбор; + + ИначеЕсли Не ФормаОтчета.ФормаПараметры.Отбор.Свойство("НачальныйОтбор") Тогда + Возврат Неопределено; + Иначе + Отбор = ФормаОтчета.ФормаПараметры.Отбор.НачальныйОтбор; + + Если ТипЗнч(Отбор) <> Тип("Структура") + Или Не Отбор.Свойство(ИмяПараметра) Тогда + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + + Возврат Отбор[ИмяПараметра]; + +КонецФункции + +// Для процедур ПриОбработкеРасшифровкиОтчетаАнализПравДоступа и +// ПриОбработкеРасшифровкиОтчетаПраваРолей. +// +Процедура УточнитьКлючНазначенияИспользования(Ключ, Отбор, ИмяСвойства) + + Если Не Отбор.Свойство(ИмяСвойства) Тогда + Возврат; + КонецЕсли; + + Значение = Отбор[ИмяСвойства]; + Если Не ЗначениеЗаполнено(Значение) Тогда + Возврат; + КонецЕсли; + + ТипСсылки = Новый ОписаниеТипов( + "СправочникСсылка.ИдентификаторыОбъектовМетаданных, + |СправочникСсылка.ИдентификаторыОбъектовРасширений, + |СправочникСсылка.Пользователи, + |СправочникСсылка.ГруппыПользователей, + |СправочникСсылка.ВнешниеПользователи, + |СправочникСсылка.ГруппыВнешнихПользователей"); + + Если ТипСсылки.СодержитТип(ТипЗнч(Значение)) Тогда + Ключ = Ключ + "/" + Строка(Значение.УникальныйИдентификатор()); + ИначеЕсли ТипЗнч(Значение) = Тип("Строка") Тогда + Ключ = Ключ + "/" + Значение; + КонецЕсли; + +КонецПроцедуры + +// Для процедур ПриОбработкеРасшифровкиОтчетаАнализПравДоступа и +// ПриОбработкеРасшифровкиОтчетаПраваРолей. +// +Процедура СократитьКлючНазначенияИспользования(КлючНазначенияИспользования) + + Если СтрДлина(КлючНазначенияИспользования) <= 128 Тогда + Возврат; + КонецЕсли; + + КлючНазначенияИспользования = + УправлениеДоступомСлужебныйВызовСервера.СокращенныйКлючНазначенияИспользования( + КлючНазначенияИспользования); + +КонецПроцедуры + +// Для процедуры ПриОбработкеРасшифровкиОтчетаАнализПравДоступа. Функция ГруппировкаПоОтчетамВключена(КомпоновщикНастроек) Результат = Ложь; @@ -743,6 +1072,7 @@ КонецФункции +// Для функции ГруппировкаПоОтчетамВключена Функция НайтиЭлементГруппировкиПоИмени(КоллекцияЭлементов, Имя) Результат = Неопределено; @@ -767,17 +1097,161 @@ КонецФункции -Функция ЗначениеПараметра(КомпоновщикНастроек, ИмяПараметра) +// Для процедуры ПриОбработкеРасшифровкиОтчетаПраваРолей. +Процедура УстановитьЗначениеПараметра(Отбор, ИмяПараметра, ФормаОтчета, ИспользуетсяВсегда = Ложь) - Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); - Настройка = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки); - - Если Настройка <> Неопределено И Настройка.Использование Тогда - Возврат Настройка.Значение; + ЗначениеПараметра = ЗначениеПараметра(ФормаОтчета.Отчет.КомпоновщикНастроек, ИмяПараметра, ИспользуетсяВсегда); + Если ЗначениеПараметра <> Null Тогда + Отбор.Вставить(ИмяПараметра, ЗначениеПараметра); КонецЕсли; - Возврат Параметр.Значение; +КонецПроцедуры + + +// Для процедуры ПриНачалеВыбораЗначений +Процедура ПриНачалеВыбораЗначенийОтчетаАнализПравДоступа(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) -КонецФункции + Если УсловияВыбора.ИмяПоля <> "ОбъектМетаданных" Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + Коллекции = Новый СписокЗначений; + Коллекции.Добавить("Справочники"); + Коллекции.Добавить("Документы"); + Коллекции.Добавить("ЖурналыДокументов"); + Коллекции.Добавить("ПланыВидовХарактеристик"); + Коллекции.Добавить("ПланыСчетов"); + Коллекции.Добавить("ПланыВидовРасчета"); + Коллекции.Добавить("РегистрыСведений"); + Коллекции.Добавить("РегистрыНакопления"); + Коллекции.Добавить("РегистрыБухгалтерии"); + Коллекции.Добавить("РегистрыРасчета"); + Коллекции.Добавить("БизнесПроцессы"); + Коллекции.Добавить("Задачи"); + + Выбранные = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(УсловияВыбора.Отмеченные); + УдалитьОтключенныеЗначения(Выбранные); + + ПараметрыПодбора = Новый Структура; + ПараметрыПодбора.Вставить("ВыбиратьСсылки", Истина); + ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные); + ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции); + ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоРазделам,ПоВидам"); + ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор таблиц'")); + + Контекст = Новый Структура; + Контекст.Вставить("УсловияВыбора", УсловияВыбора); + Контекст.Вставить("ОповещениеОЗакрытии", ОповещениеОЗакрытии); + + Обработчик = Новый ОписаниеОповещения("ПослеВыбораОбъектовМетаданных", ЭтотОбъект, Контекст); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, Обработчик); + +КонецПроцедуры + +// Для процедуры ПриНачалеВыбораЗначений +Процедура ПриНачалеВыбораЗначенийОтчетаПраваРолей(ФормаОтчета, УсловияВыбора, ОповещениеОЗакрытии, СтандартнаяОбработка) + + Если УсловияВыбора.ИмяПоля <> "Роль" + И УсловияВыбора.ИмяПоля <> "ОбъектМетаданных" Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + Выбранные = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(УсловияВыбора.Отмеченные); + УдалитьОтключенныеЗначения(Выбранные); + Коллекции = Новый СписокЗначений; + + ПараметрыПодбора = Новый Структура; + ПараметрыПодбора.Вставить("ВыбранныеОбъектыМетаданных", Выбранные); + ПараметрыПодбора.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", Коллекции); + + Если УсловияВыбора.ИмяПоля = "Роль" Тогда + Для Каждого ЭлементСписка Из Выбранные Цикл + ЭлементСписка.Значение = "Роль." + ЭлементСписка.Значение; + КонецЦикла; + ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам"); + ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор ролей'")); + Коллекции.Добавить("Роли"); + Иначе + ПараметрыПодбора.Вставить("СпособГруппировкиОбъектов", "ПоВидам,ПоРазделам"); + ПараметрыПодбора.Вставить("Заголовок", НСтр("ru = 'Подбор объектов метаданных'")); + ПараметрыПодбора.Вставить("ВыбиратьКоллекцииКогдаВыбраныВсеОбъекты", Истина); + ДобавитьКоллекцииОбъектовМетаданныхСПравами(Коллекции); + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("УсловияВыбора", УсловияВыбора); + Контекст.Вставить("ОповещениеОЗакрытии", ОповещениеОЗакрытии); + + Обработчик = Новый ОписаниеОповещения("ПослеВыбораОбъектовМетаданных", ЭтотОбъект, Контекст); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыПодбора,,,,, Обработчик); + +КонецПроцедуры + +// Для процедуры ПриНачалеВыбораЗначений. +Процедура ПослеВыбораОбъектовМетаданных(ВыбранныеЗначения, Контекст) Экспорт + + Если Контекст.УсловияВыбора.ИмяПоля = "Роль" + И ЗначениеЗаполнено(ВыбранныеЗначения) Тогда + + Для Каждого ЭлементСписка Из ВыбранныеЗначения Цикл + ЭлементСписка.Значение = СтрРазделить(ЭлементСписка.Значение, ".")[1]; + КонецЦикла; + КонецЕсли; + + ВыполнитьОбработкуОповещения(Контекст.ОповещениеОЗакрытии, ВыбранныеЗначения); + +КонецПроцедуры + +// Для процедуры ПриНачалеВыбораЗначений. +Процедура УдалитьОтключенныеЗначения(ОтмеченныеЗначения) + + Индекс = ОтмеченныеЗначения.Количество() - 1; + + Пока Индекс >= 0 Цикл + Элемент = ОтмеченныеЗначения[Индекс]; + Индекс = Индекс - 1; + + Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда + ОтмеченныеЗначения.Удалить(Элемент); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Для процедуры ПриНачалеВыбораЗначений. +Процедура ДобавитьКоллекцииОбъектовМетаданныхСПравами(Коллекции) + + Коллекции.Добавить("Подсистемы"); + Коллекции.Добавить("ПараметрыСеанса"); + Коллекции.Добавить("ОбщиеРеквизиты"); + Коллекции.Добавить("ПланыОбмена"); + Коллекции.Добавить("КритерииОтбора"); + Коллекции.Добавить("ОбщиеФормы"); + Коллекции.Добавить("ОбщиеКоманды"); + Коллекции.Добавить("WebСервисы"); + Коллекции.Добавить("HTTPСервисы"); + Коллекции.Добавить("Константы"); + Коллекции.Добавить("Справочники"); + Коллекции.Добавить("Документы"); + Коллекции.Добавить("ЖурналыДокументов"); + Коллекции.Добавить("Перечисления"); + Коллекции.Добавить("Отчеты"); + Коллекции.Добавить("Обработки"); + Коллекции.Добавить("ПланыВидовХарактеристик"); + Коллекции.Добавить("ПланыСчетов"); + Коллекции.Добавить("ПланыВидовРасчета"); + Коллекции.Добавить("РегистрыСведений"); + Коллекции.Добавить("РегистрыНакопления"); + Коллекции.Добавить("РегистрыБухгалтерии"); + Коллекции.Добавить("РегистрыРасчета"); + Коллекции.Добавить("БизнесПроцессы"); + Коллекции.Добавить("Задачи"); + Коллекции.Добавить("ВнешниеИсточникиДанных"); + +КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl index 439c7d32b..1a29b9767 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl @@ -450,16 +450,19 @@ // * ИдентификаторыТранзакции - Соответствие из КлючИЗначение: // ** Ключ - УникальныйИдентификатор - произвольный УИД. // ** Значение - Булево - значение Истина. -// * ВсеВидыОграниченийПрав - Неопределено -// - Строка -// +// * ВидыОграниченийПравДляПользователей - Неопределено +// - Строка +// * ВидыОграниченийПравДляВнешнихПользователей - Неопределено +// - Строка +// Функция КэшПараметровОграничения(КлючДанныхПовторногоИспользования) Экспорт Хранилище = Новый Структура; Хранилище.Вставить("ВедущиеСпискиПроверенные", Новый Соответствие); Хранилище.Вставить("ОграниченияСписков", Новый Соответствие); Хранилище.Вставить("ИдентификаторыТранзакции", Новый Соответствие); - Хранилище.Вставить("ВсеВидыОграниченийПрав", Неопределено); + Хранилище.Вставить("ВидыОграниченийПравДляПользователей", Неопределено); + Хранилище.Вставить("ВидыОграниченийПравДляВнешнихПользователей", Неопределено); Возврат Хранилище; diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl index 1d7966b74..c430db7a1 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl @@ -1729,7 +1729,7 @@ МетаданныеОбъекта = СсылкаНаОбъект.Метаданные(); ПолноеИмяОбъектаМетаданных = МетаданныеОбъекта.ПолноеИмя(); ИмяОбъекта = МетаданныеОбъекта.Имя; - ЭтоОсновнойЯзык = ТекущийЯзык() = Метаданные.ОсновнойЯзык; + ЭтоОсновнойЯзык = ОбщегоНазначения.ЭтоОсновнойЯзык(); ГруппаВидовКонтактнойИнформации = ГруппаВидовКонтактнойИнформацииОбъекта(ПолноеИмяОбъектаМетаданных); ИспользуетсяКонтактнаяИнформация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаВидовКонтактнойИнформации, "Используется"); @@ -4504,33 +4504,93 @@ //////////////////////////////////////////////////////////////////////////////// // Заполнение дополнительных реквизитов табличной части "Контактная информация". -Процедура УстановитьНаименованиеВидаКонтактнойИнформации(Знач Объект, Наименование) + +Процедура УстановитьНаименованиеВидаКонтактнойИнформации(Знач Объект, Знач Наименование) НаименованияНаРазныхЯзыках = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации(); - Для каждого Язык Из Метаданные.Языки Цикл - Представление = НаименованияНаРазныхЯзыках[Язык.КодЯзыка][СокрЛП(Объект.ИмяПредопределенногоВида)]; - Если ЗначениеЗаполнено(Представление) Тогда - Если Язык = Метаданные.ОсновнойЯзык Тогда - Объект.Наименование = Представление; - Иначе - - НайденныеСтроки = Объект.Представления.НайтиСтроки(Новый Структура("КодЯзыка", Язык.КодЯзыка)); - Если НайденныеСтроки.Количество() = 0 Тогда - НоваяСтрока = Объект.Представления.Добавить(); - НоваяСтрока.КодЯзыка = Язык.КодЯзыка; - Иначе - НоваяСтрока = НайденныеСтроки[0]; - КонецЕсли; - НоваяСтрока.Наименование = Представление; - - КонецЕсли; - ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда - Объект.Наименование = Наименование; + ИмяПредопределенногоВида = СокрЛП(Объект.ИмяПредопределенногоВида); + + Представление = НаименованияНаРазныхЯзыках.Получить(ОбщегоНазначения.КодОсновногоЯзыка())[ИмяПредопределенногоВида]; + Если ЗначениеЗаполнено(Представление) Тогда + Объект.Наименование = Представление; + ИначеЕсли ЗначениеЗаполнено(Наименование) Тогда + Объект.Наименование = Наименование; + КонецЕсли; + + ПредопределенныеДанныеОбъекта = Неопределено; + + ПараметрыЗаполнения = ОбновлениеИнформационнойБазыСлужебный.НаборПараметровДляЗаполненияОбъекта(Объект.Метаданные()); + ИмяКлючевогоРеквизита = ПараметрыЗаполнения.НастройкиПредопределенныхЭлементов.ПереопределяемыеНастройки.ИмяКлючевогоРеквизита; + + Если ЗначениеЗаполнено(ИмяКлючевогоРеквизита) Тогда + + ЗначениеКлючаОбъекта = Объект[ИмяКлючевогоРеквизита]; + + Если ЗначениеЗаполнено(ЗначениеКлючаОбъекта) Тогда + ПредопределенныеДанныеОбъекта = ПараметрыЗаполнения.ПредопределенныеДанные.Найти(ЗначениеКлючаОбъекта, ИмяКлючевогоРеквизита); КонецЕсли; - КонецЦикла; + + КонецЕсли; + + Если ПредопределенныеДанныеОбъекта = Неопределено Или ПустаяСтрока(ИмяКлючевогоРеквизита) Тогда + ПредопределенныеДанныеОбъекта = ПараметрыЗаполнения.ПредопределенныеДанные.Найти(ЗначениеКлючаОбъекта, "ИмяПредопределенныхДанных"); + КонецЕсли; + + Если ПустаяСтрока(Объект.Наименование) И ПредопределенныеДанныеОбъекта <> Неопределено Тогда + + Представление = ПредопределенныеДанныеОбъекта["Наименование" + "_" + ОбщегоНазначения.КодОсновногоЯзыка()]; + Если ПустаяСтрока(Представление) Тогда + Представление = ПредопределенныеДанныеОбъекта["Наименование"]; + КонецЕсли; + + Если ЗначениеЗаполнено(Представление) Тогда + Объект.Наименование = Представление; + КонецЕсли; + + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + СведенияОбЯзыках = МодульМультиязычностьСервер.СведенияОбЯзыках(); + + ПредставлениеЯзык1 = ""; + ПредставлениеЯзык2 = ""; + + Если ПредопределенныеДанныеОбъекта <> Неопределено Тогда + + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык1) Тогда + ПредставлениеЯзык1 = ПредопределенныеДанныеОбъекта["Наименование" + "_" + СведенияОбЯзыках.Язык1]; + КонецЕсли; + Если ЗначениеЗаполнено(СведенияОбЯзыках.Язык2) Тогда + ПредставлениеЯзык2 = ПредопределенныеДанныеОбъекта["Наименование" + "_" + СведенияОбЯзыках.Язык2]; + КонецЕсли; + + КонецЕсли; + + Если ПустаяСтрока(ПредставлениеЯзык1) Тогда + + ПредставленияЯзыка1 = НаименованияНаРазныхЯзыках.Получить(МодульМультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы()); + Если ТипЗнч(ПредставленияЯзыка1) = Тип("Соответствие") Тогда + ПредставлениеЯзык1 = ПредставленияЯзыка1.Получить(ИмяПредопределенногоВида); + КонецЕсли; + + КонецЕсли; + + Если ПустаяСтрока(ПредставлениеЯзык2) Тогда + ПредставленияЯзыка2 = НаименованияНаРазныхЯзыках.Получить(МодульМультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы()); + Если ТипЗнч(ПредставленияЯзыка2) = Тип("Соответствие") Тогда + ПредставлениеЯзык2 = ПредставленияЯзыка2.Получить(ИмяПредопределенногоВида); + КонецЕсли; + КонецЕсли; + + Объект.НаименованиеЯзык1 = ?(ЗначениеЗаполнено(ПредставлениеЯзык1), ПредставлениеЯзык1, Объект.Наименование); + Объект.НаименованиеЯзык2 = ?(ЗначениеЗаполнено(ПредставлениеЯзык2), ПредставлениеЯзык2, Объект.Наименование); + + КонецЕсли; КонецПроцедуры + Процедура КонвертацияКонтактнойИнформацииВJSON(КонтактнаяИнформация) // Конвертация @@ -5872,138 +5932,88 @@ Функция СформироватьТекстЗапроса(Знач ЕстьКолонкаИдентификаторСтрокиТабличнойЧасти, Знач ТекстЗапросаИсторическаяИнформация, Знач ЭтоОсновнойЯзык) - Если ЭтоОсновнойЯзык Тогда - ТекстЗапроса = "ВЫБРАТЬ - | КонтактнаяИнформация.Представление КАК Представление, - | КонтактнаяИнформация.Значение КАК Значение, - | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, - | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, - | &ДействуетС КАК ДействуетС, - | &ЭтоИсторическаяКонтактнаяИнформация КАК ЭтоИсторическаяКонтактнаяИнформация, - | КонтактнаяИнформация.Вид КАК Вид, - | &ИдентификаторСтрокиТабличнойЧасти КАК ИдентификаторСтрокиТабличнойЧасти - |ПОМЕСТИТЬ - | КонтактнаяИнформация - |ИЗ - | &ТаблицаКонтактнойИнформации КАК КонтактнаяИнформация - |ИНДЕКСИРОВАТЬ ПО - | Вид - |;//////////////////////////////////////////////////////////////////////////////// - | - |ВЫБРАТЬ - | ВидыКонтактнойИнформации.Ссылка КАК Вид, - |ВЫБОР - | КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """" - | ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида - | ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных - |КОНЕЦ КАК ИмяПредопределенногоВида, - | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, - | ВидыКонтактнойИнформации.Тип КАК Тип, - | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, - | ВидыКонтактнойИнформации.ВидПоляДругое КАК ВидПоляДругое, - | ВидыКонтактнойИнформации.РазрешитьВводНесколькихЗначений КАК РазрешитьВводНесколькихЗначений, - | ВидыКонтактнойИнформации.Наименование КАК Наименование, - | ВидыКонтактнойИнформации.ХранитьИсториюИзменений КАК ХранитьИсториюИзменений, - | ВидыКонтактнойИнформации.ВидРедактирования КАК ВидРедактирования, - | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, - | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, - | ВидыКонтактнойИнформации.МеждународныйФорматАдреса КАК МеждународныйФорматАдреса, - | ВидыКонтактнойИнформации.ВводитьНомерПоМаске КАК ВводитьНомерПоМаске, - | ВидыКонтактнойИнформации.МаскаНомераТелефона КАК МаскаНомераТелефона, - | ЕСТЬNULL(КонтактнаяИнформация.ЭтоИсторическаяКонтактнаяИнформация, ЛОЖЬ) КАК ЭтоИсторическаяКонтактнаяИнформация, - | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, - | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, - | ЕСТЬNULL(КонтактнаяИнформация.Значение, """") КАК Значение, - | ЕСТЬNULL(КонтактнаяИнформация.ДействуетС, 0) КАК ДействуетС, - | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки, - | 0 КАК ИдентификаторСтрокиТабличнойЧасти, - | ВЫРАЗИТЬ("""" КАК СТРОКА(200)) КАК ИмяРеквизита, - | ВидыКонтактнойИнформации.ПометкаУдаления КАК ПометкаУдаления, - | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий - |ИЗ - | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации - |ЛЕВОЕ СОЕДИНЕНИЕ - | КонтактнаяИнформация КАК КонтактнаяИнформация - |ПО - | ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид - |ГДЕ - | ВидыКонтактнойИнформации.Используется - | И ЕСТЬNULL(ВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) - | И ( - | ВидыКонтактнойИнформации.Родитель = &ГруппаВидовКИ - | ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель = &ГруппаВидовКИ) - | И ВидыКонтактнойИнформации.Ссылка НЕ В (&СкрываемыеВиды) - |УПОРЯДОЧИТЬ ПО - | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ - |"; + ТекстЗапроса = "ВЫБРАТЬ + | КонтактнаяИнформация.Представление КАК Представление, + | КонтактнаяИнформация.Значение КАК Значение, + | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, + | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, + | &ДействуетС КАК ДействуетС, + | &ЭтоИсторическаяКонтактнаяИнформация КАК ЭтоИсторическаяКонтактнаяИнформация, + | КонтактнаяИнформация.Вид КАК Вид, + | &ИдентификаторСтрокиТабличнойЧасти КАК ИдентификаторСтрокиТабличнойЧасти + |ПОМЕСТИТЬ + | КонтактнаяИнформация + |ИЗ + | &ТаблицаКонтактнойИнформации КАК КонтактнаяИнформация + |ИНДЕКСИРОВАТЬ ПО + | Вид + |;//////////////////////////////////////////////////////////////////////////////// + | + |ВЫБРАТЬ + | ВидыКонтактнойИнформации.Ссылка КАК Вид, + |ВЫБОР + | КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """" + | ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида + | ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных + |КОНЕЦ КАК ИмяПредопределенногоВида, + | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + | ВидыКонтактнойИнформации.Тип КАК Тип, + | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, + | ВидыКонтактнойИнформации.ВидПоляДругое КАК ВидПоляДругое, + | ВидыКонтактнойИнформации.РазрешитьВводНесколькихЗначений КАК РазрешитьВводНесколькихЗначений, + | ВидыКонтактнойИнформации.Наименование КАК Наименование, + | ВидыКонтактнойИнформации.ХранитьИсториюИзменений КАК ХранитьИсториюИзменений, + | ВидыКонтактнойИнформации.ВидРедактирования КАК ВидРедактирования, + | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, + | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + | ВидыКонтактнойИнформации.МеждународныйФорматАдреса КАК МеждународныйФорматАдреса, + | ВидыКонтактнойИнформации.ВводитьНомерПоМаске КАК ВводитьНомерПоМаске, + | ВидыКонтактнойИнформации.МаскаНомераТелефона КАК МаскаНомераТелефона, + | ЕСТЬNULL(КонтактнаяИнформация.ЭтоИсторическаяКонтактнаяИнформация, ЛОЖЬ) КАК ЭтоИсторическаяКонтактнаяИнформация, + | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, + | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, + | ЕСТЬNULL(КонтактнаяИнформация.Значение, """") КАК Значение, + | ЕСТЬNULL(КонтактнаяИнформация.ДействуетС, 0) КАК ДействуетС, + | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки, + | 0 КАК ИдентификаторСтрокиТабличнойЧасти, + | ВЫРАЗИТЬ("""" КАК СТРОКА(200)) КАК ИмяРеквизита, + | ВидыКонтактнойИнформации.ПометкаУдаления КАК ПометкаУдаления, + | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ЛЕВОЕ СОЕДИНЕНИЕ + | КонтактнаяИнформация КАК КонтактнаяИнформация + |ПО + | ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид + |ГДЕ + | ВидыКонтактнойИнформации.Используется + | И ЕСТЬNULL(ВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) + | И ( + | ВидыКонтактнойИнформации.Родитель = &ГруппаВидовКИ + | ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель = &ГруппаВидовКИ) + | И ВидыКонтактнойИнформации.Ссылка НЕ В (&СкрываемыеВиды) + |УПОРЯДОЧИТЬ ПО + | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ + |"; + + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + + Если СуффиксТекущегоЯзыка <> Неопределено Тогда + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, "ВидыКонтактнойИнформации.Наименование КАК Наименование"); + КонецЕсли; Иначе - ТекстЗапроса = "ВЫБРАТЬ - | КонтактнаяИнформация.Представление КАК Представление, - | КонтактнаяИнформация.Значение КАК Значение, - | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, - | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, - | &ДействуетС КАК ДействуетС, - | &ЭтоИсторическаяКонтактнаяИнформация КАК ЭтоИсторическаяКонтактнаяИнформация, - | КонтактнаяИнформация.Вид КАК Вид, - | &ИдентификаторСтрокиТабличнойЧасти КАК ИдентификаторСтрокиТабличнойЧасти - |ПОМЕСТИТЬ - | КонтактнаяИнформация - |ИЗ - | &ТаблицаКонтактнойИнформации КАК КонтактнаяИнформация - |ИНДЕКСИРОВАТЬ ПО - | Вид - |;//////////////////////////////////////////////////////////////////////////////// - | - |ВЫБРАТЬ - | ВидыКонтактнойИнформации.Ссылка КАК Вид, - |ВЫБОР - | КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """" - | ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида - | ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных - |КОНЕЦ КАК ИмяПредопределенногоВида, - | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, - | ВидыКонтактнойИнформации.Тип КАК Тип, - | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, - | ВидыКонтактнойИнформации.ВидПоляДругое КАК ВидПоляДругое, - | ВидыКонтактнойИнформации.РазрешитьВводНесколькихЗначений КАК РазрешитьВводНесколькихЗначений, - | ВидыКонтактнойИнформации.ВводитьНомерПоМаске КАК ВводитьНомерПоМаске, - | ВидыКонтактнойИнформации.МаскаНомераТелефона КАК МаскаНомераТелефона, - | ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, ВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) КАК Наименование, - | ВидыКонтактнойИнформации.ХранитьИсториюИзменений КАК ХранитьИсториюИзменений, - | ВидыКонтактнойИнформации.ВидРедактирования КАК ВидРедактирования, - | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, - | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, - | ВидыКонтактнойИнформации.МеждународныйФорматАдреса КАК МеждународныйФорматАдреса, - | ЕСТЬNULL(КонтактнаяИнформация.ЭтоИсторическаяКонтактнаяИнформация, ЛОЖЬ) КАК ЭтоИсторическаяКонтактнаяИнформация, - | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, - | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, - | ЕСТЬNULL(КонтактнаяИнформация.Значение, """") КАК Значение, - | ЕСТЬNULL(КонтактнаяИнформация.ДействуетС, 0) КАК ДействуетС, - | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки, - | 0 КАК ИдентификаторСтрокиТабличнойЧасти, - | ВЫРАЗИТЬ("""" КАК СТРОКА(200)) КАК ИмяРеквизита, - | ВидыКонтактнойИнформации.ПометкаУдаления КАК ПометкаУдаления, - | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий - |ИЗ - | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации - |ЛЕВОЕ СОЕДИНЕНИЕ - | КонтактнаяИнформация КАК КонтактнаяИнформация - |ПО - | ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид - |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВидыКонтактнойИнформации.Наименование КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, ВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) КАК Наименование"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ГДЕ", "ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления |ПО ВидыКонтактнойИнформацииПредставления.Ссылка = ВидыКонтактнойИнформации.Ссылка | И ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка - |ГДЕ - | ВидыКонтактнойИнформации.Используется - | И ЕСТЬNULL(ВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) - | И ( - | ВидыКонтактнойИнформации.Родитель = &ГруппаВидовКИ - | ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель = &ГруппаВидовКИ) - | И ВидыКонтактнойИнформации.Ссылка НЕ В (&СкрываемыеВиды) - |УПОРЯДОЧИТЬ ПО - | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ - |"; + |ГДЕ"); КонецЕсли; diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейПереопределяемый/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейПереопределяемый/Module.bsl index 91e9c8a21..c49715686 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейПереопределяемый/Module.bsl @@ -23,6 +23,40 @@ +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента +// +// Параметры: +// Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект. +// Данные - СтрокаТаблицыЗначений - данные заполнения объекта. +// ДополнительныеПараметры - Структура: +// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов. +// +Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСлужебный/Module.bsl index f6cee93ff..4cadc5bac 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСлужебный/Module.bsl @@ -2112,7 +2112,8 @@ // Параметры: // ВидКонтактнойИнформации - ДанныеФормыСтруктура // - СправочникОбъект.ВидыКонтактнойИнформации: -// * Наименование - Строка +// * Наименование - Строка +// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации // // Возвращаемое значение: // Структура: @@ -2123,13 +2124,6 @@ Результат = Новый Структура("ЕстьОшибки, ТекстОшибки", Ложь, ""); - Если НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.Тип) Тогда - Результат.ЕстьОшибки = Истина; - Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено обязательное поле Тип у вида контактной информации ""%1"".'"), - Строка(ВидКонтактнойИнформации.Наименование)); - Возврат Результат; - КонецЕсли; - Если НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.Наименование) Тогда Результат.ЕстьОшибки = Истина; Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено обязательное поле Наименование у вида контактной информации ""%1"".'"), @@ -2137,6 +2131,17 @@ Возврат Результат; КонецЕсли; + Если ВидКонтактнойИнформации.ЭтоГруппа Тогда + Возврат Результат; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.Тип) Тогда + Результат.ЕстьОшибки = Истина; + Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено обязательное поле Тип у вида контактной информации ""%1"".'"), + Строка(ВидКонтактнойИнформации.Наименование)); + Возврат Результат; + КонецЕсли; + Разделитель = ""; Если ВидКонтактнойИнформации.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда diff --git a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl index bccd3bf2d..160d847f8 100644 --- a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl @@ -8,6 +8,64 @@ #Область ПрограммныйИнтерфейс +// Конструктор списка полей данных печати для функции СхемаКомпоновкиДанныхПечати. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * Идентификатор - Строка - имя поля. +// * Представление - Строка - заголовок поля. +// * ТипЗначения - ОписаниеТипов - тип значения поля. +// * ИмяКартинки - Строка - картинка поля, выводится в списке доступных полей редактора макета. +// * Порядок - Число - используется для упорядочивания поля в списке доступных полей редактора макета. +// +Функция ТаблицаПолейДанныхПечати() Экспорт + + Возврат КонструкторФормул.ТаблицаПолей(); + +КонецФункции + +// Конструктор списка полей данных печати для функции СхемаКомпоновкиДанныхПечати. +// +// Возвращаемое значение: +// ДеревоЗначений: +// * Идентификатор - Строка - имя поля. +// * Представление - Строка - заголовок поля. +// * ТипЗначения - ОписаниеТипов - тип значения поля. +// * ИмяКартинки - Строка - картинка поля, выводится в списке доступных полей редактора макета. +// * Порядок - Число - используется для упорядочивания поля в списке доступных полей редактора макета. +// * Папка - Булево - указывает на то, что поле является папкой. В отличие от групп, папка входит в полный +// путь к полю. +// * Таблица - Булево - используется для описания табличной части. Подчиненные поля - поля этой табличной части. +// +Функция ДеревоПолейДанныхПечати() Экспорт + + Возврат КонструкторФормул.ДеревоПолей(); + +КонецФункции + +// Формирует схему компоновки данных печати с заданным списком полей. +// +// Параметры: +// СписокПолей - см. ТаблицаПолейДанныхПечати +// - ДеревоЗначений - см. ДеревоПолейДанныхПечати +// +// Возвращаемое значение: +// СхемаКомпоновкиДанных +// +Функция СхемаКомпоновкиДанныхПечати(СписокПолей) Экспорт + + Если ТипЗнч(СписокПолей) = Тип("ТаблицаЗначений") Тогда + Возврат СхемаКомпоновкиДанныхИзТаблицыЗначений(СписокПолей); + ИначеЕсли ТипЗнч(СписокПолей) = Тип("ДеревоЗначений") Тогда + Возврат СхемаКомпоновкиДанныхИзДереваЗначений(СписокПолей); + КонецЕсли; + + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр( + "ru = 'Передан неверный тип ""%1"" в параметре ""%2""'"), + ТипЗнч(СписокПолей), "СписокПолей"); + +КонецФункции + // Возвращает описание найденной в коллекции печатной формы. // Если описание не существует, возвращает Неопределено. // Функция предназначена для использования только внутри процедуры Печать. @@ -229,6 +287,7 @@ МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()); ДобавляемыеКомандыПечати = СоздатьКоллекциюКомандПечати(); МенеджерПечати.ДобавитьКомандыПечати(ДобавляемыеКомандыПечати); + ДобавитьКомандыПечати(ДобавляемыеКомандыПечати, ОбъектМетаданных); Для Каждого КомандаПечати Из ДобавляемыеКомандыПечати Цикл Если КомандаПечати.МенеджерПечати = Неопределено Тогда @@ -298,24 +357,28 @@ // форму, которую необходимо сформировать. // Например, "СчетЗаказ". // -// Для печати нескольких печатных форм можно указывать одновременно несколько их -// идентификаторов (строкой, через запятую либо массивом строк), например: -// "СчетЗаказ,ГарантийноеПисьмо". +// Для печати нескольких печатных форм можно указывать одновременно несколько их +// идентификаторов (строкой, через запятую либо массивом строк), например: +// "СчетЗаказ,ГарантийноеПисьмо". // -// Если необходимо задать количество копий печати для печатной формы, то ее -// идентификатор нужно продублировать столько раз, сколько копий необходимо -// сформировать. При этом следует учитывать, что порядок следования печатных -// форм в комплекте будет соответствовать порядку идентификаторов печатных форм, -// указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо): -// "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо". +// Если необходимо задать количество копий печати для печатной формы, то ее +// идентификатор нужно продублировать столько раз, сколько копий необходимо +// сформировать. При этом следует учитывать, что порядок следования печатных +// форм в комплекте будет соответствовать порядку идентификаторов печатных форм, +// указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо): +// "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо". // -// Идентификатор печатной формы может содержать в себе и альтернативный менеджер -// печати, если он отличается от указанного в параметре МенеджерПечати, -// например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо". +// Идентификатор печатной формы может содержать в себе и альтернативный менеджер +// печати, если он отличается от указанного в параметре МенеджерПечати, +// например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо". // -// В этом примере ГарантийноеПисьмо формируется в менеджере печати -// Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в -// параметре МенеджерПечати. +// В этом примере ГарантийноеПисьмо формируется в менеджере печати +// Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в +// параметре МенеджерПечати. +// +// Для печатных форм, менеджером печати которых является общий модуль +// "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету. +// Например, "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату". // // - Массив - список идентификаторов команд печати. // @@ -324,8 +387,10 @@ // // * МенеджерПечати - Строка - (необязательный) имя объекта, в модуле менеджера которого располагается // процедура Печать, формирующая табличные документы для этой команды. +// Если печатная форма формируется автоматически по данным печати и макету, то +// в параметре необходимо указать общий модуль "УправлениеПечатью". // Значение по умолчанию - имя модуля менеджера объекта. -// Например, "Документ.СчетНаОплатуПокупателю". +// Например, "Документ.СчетНаОплатуПокупателю". // * ТипыОбъектовПечати - Массив - (необязательный) список типов объектов, для которых предназначена команда // печати. Параметр предназначен для команд печати в журналах документов, где // требуется проверка передаваемого типа объекта перед вызовом менеджера печати. @@ -724,6 +789,10 @@ // Функция ИспользуетсяПользовательскийМакет(ПутьКМакету) Экспорт + Если СтрНачинаетсяС(ПутьКМакету, "ПФ_") Тогда // Нет поставляемого макета. + Возврат Ложь; + КонецЕсли; + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); @@ -1607,9 +1676,6 @@ КонецФункции -//////////////////////////////////////////////////////////////////////////////// -// Шаблоны сообщений. - Функция КомандыПечатиОбъектаДоступныеДляВложений(ОбъектМетаданных) Экспорт Если ИсточникиКомандПечати().Найти(ОбъектМетаданных) <> Неопределено Тогда @@ -1673,9 +1739,6 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// Обработчики событий подсистем конфигурации. - // См. ПодключаемыеКомандыПереопределяемый.ПриОпределенииСоставаНастроекПодключаемыхОбъектов Процедура ПриОпределенииСоставаНастроекПодключаемыхОбъектов(НастройкиПрограммногоИнтерфейса) Экспорт Настройка = НастройкиПрограммногоИнтерфейса.Добавить(); @@ -1880,6 +1943,572 @@ КонецФункции +Функция ОбъектМетаданныхМакета(ПутьКМакету) Экспорт + + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда + Возврат Неопределено; + КонецЕсли; + + ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()]; + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ИмяОбъекта = СтрСоединить(ЧастиПути, "."); + + ЭтоОбщийМакет = СтрРазделить(ИмяОбъекта, ".").Количество() = 1; + + КоллекцияМакетов = Метаданные.ОбщиеМакеты; + Если Не ЭтоОбщийМакет Тогда + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта); + Если ОбъектМетаданных = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + КоллекцияМакетов = ОбъектМетаданных.Макеты; + КонецЕсли; + + Возврат КоллекцияМакетов.Найти(ИмяМакета); + +КонецФункции + +#Область РедактированиеТабличногоДокумента + +Функция ДоступныеПоляОбъекта(ИмяОбъектаМетаданных) Экспорт + + КоллекцииПолей = Новый Массив; + Для Каждого Элемент Из СхемыКомпоновкиДанныхИсточникаПолей(ИмяОбъектаМетаданных, Истина) Цикл + СхемаКомпоновкиДанных = Элемент.Значение; + КоллекцииПолей.Добавить(КонструкторФормул.КоллекцияПолей(СхемаКомпоновкиДанных)); + КонецЦикла; + + Возврат КоллекцииПолей; + +КонецФункции + +Функция СписокОператоров() Экспорт + + СписокОператоров = КонструкторФормул.СписокОператоров(); + + Группа = СписокОператоров.Строки.Найти("СтроковыеФункции"); + Если Группа = Неопределено Тогда + Группа = СписокОператоров.Строки.Добавить(); + Группа.Идентификатор = "СтроковыеФункции"; + Группа.Представление = НСтр("ru = 'Строковые функции'"); + Группа.Порядок = 5; + Группа.Картинка = БиблиотекаКартинок.ТипФункция; + КонецЕсли; + + Оператор = Группа.Строки.Добавить(); + Оператор.Идентификатор = "УправлениеПечатью_СтрокаЛатиницей"; + Оператор.Представление = НСтр("ru = 'СтрокаЛатиницей'"); + Оператор.ТипЗначения = Новый ОписаниеТипов("Строка"); + + Группа = СписокОператоров.Строки.Найти("ПрочиеФункции"); + Если Группа = Неопределено Тогда + Группа = СписокОператоров.Строки.Добавить(); + Группа.Идентификатор = "ПрочиеФункции"; + Группа.Представление = НСтр("ru = 'Прочие функции'"); + Группа.Порядок = 6; + Группа.Картинка = БиблиотекаКартинок.ТипФункция; + КонецЕсли; + + Оператор = Группа.Строки.Добавить(); + Оператор.Идентификатор = "УправлениеПечатью_КоличествоСтрок"; + Оператор.Представление = НСтр("ru = 'КоличествоСтрок'"); + Оператор.ТипЗначения = Новый ОписаниеТипов("Число"); + + Возврат КонструкторФормул.КоллекцияПолей(СписокОператоров); + +КонецФункции + +Функция ФормулыИзТекста(Знач Текст, Знач Форма) Экспорт + + Результат = Новый Соответствие(); + + Если Не ЗначениеЗаполнено(Текст) Тогда + Возврат Результат; + КонецЕсли; + + ПараметрыТекста = НайтиПараметрыВТексте(Текст); + + Для Каждого Параметр Из ПараметрыТекста Цикл + Представление = Параметр; + Если СтрЧислоВхождений(Параметр, "[") > 1 Тогда + Представление = Сред(Параметр, 2, СтрДлина(Параметр) - 2); + КонецЕсли; + Формула = КонструкторФормул.ФормулаИзПредставления(Форма, Представление); + Если Не СтрНачинаетсяС(Формула, "[") Тогда + Формула = "[" + Формула + "]"; + КонецЕсли; + Результат.Вставить(Параметр, Формула); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ПредставленияПараметровТекста(Знач Текст, Знач Форма) Экспорт + + Результат = Новый Соответствие(); + + Если Не ЗначениеЗаполнено(Текст) Тогда + Возврат Результат; + КонецЕсли; + + ПараметрыТекста = НайтиПараметрыВТексте(Текст); + Для Каждого Параметр Из ПараметрыТекста Цикл + Формула = Сред(Параметр, 2, СтрДлина(Параметр) - 2); + Представление = КонструкторФормул.ПредставлениеФормулыПоДаннымФормы(Форма, Формула); + Если Не СтрНачинаетсяС(Представление, "[") Или Не СтрЗаканчиваетсяНа(Представление, "]") Тогда + Представление = "[" + Представление + "]"; + КонецЕсли; + Результат.Вставить(Параметр, Представление); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ВладелецМакета(ПутьКМакету) Экспорт + + ВладелецМакета = Справочники.МакетыПечатныхФорм.ВладелецМакета(ПутьКМакету); + Если ВладелецМакета <> Неопределено Тогда + Возврат ВладелецМакета; + КонецЕсли; + + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда + Возврат Неопределено; + КонецЕсли; + + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ИмяОбъекта = СтрСоединить(ЧастиПути, "."); + + ВладелецМакета = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ИмяОбъекта, Ложь); + + Возврат ВладелецМакета; + +КонецФункции + +Функция ЭтоПечатнаяФорма(Знач ИдентификаторМакета, Владелец) Экспорт + + Если Не ЗначениеЗаполнено(Владелец) Тогда + Возврат Ложь; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ИдентификаторМакета) Тогда + Возврат Истина; + КонецЕсли; + + СсылкаМакета = Справочники.МакетыПечатныхФорм.СсылкаМакета(ИдентификаторМакета); + Если ЗначениеЗаполнено(СсылкаМакета) Тогда + Возврат Истина; + КонецЕсли; + + ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Владелец); + + ИсточникиКомандПечати = ИсточникиКомандПечати(); + Если ИсточникиКомандПечати.Найти(ОбъектМетаданных) = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ЧастиПути = СтрРазделить(ИдентификаторМакета, ".", Истина); + ИдентификаторМакета = ЧастиПути[ЧастиПути.ВГраница()]; + КомандыПечати = КомандыПечатиОбъекта(ОбъектМетаданных, Ложь); + Для Каждого КомандаПечати Из КомандыПечати Цикл + Если КомандаПечати.МенеджерПечати = "УправлениеПечатью" И СтрНайти(КомандаПечати.Идентификатор, ИдентификаторМакета) Тогда + Возврат Истина; + КонецЕсли; + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +Функция ДанныеПечати(Объекты, Поля, КодЯзыка) Экспорт + + ДанныеПечати = Новый Соответствие; + ДанныеПечати["ИменаТабличныхЧастейОбъекта"] = Новый Массив; + ДанныеПечати["НастройкиФорматаПолей"] = Новый Соответствие; + + Для Каждого Объект Из Объекты Цикл + ДанныеПечати[Объект] = Новый Соответствие(); + КонецЦикла; + + Если Не ЗначениеЗаполнено(Поля) Тогда + Возврат ДанныеПечати; + КонецЕсли; + + ИмяОбъекта = Объекты[0].Метаданные().ПолноеИмя(); + + СхемыКомпоновкиДанных = СхемыКомпоновкиДанныхИсточникаПолей(ИмяОбъекта, Истина); + СпискиПолей = ОписаниеСписковПолей(СхемыКомпоновкиДанных, , ИмяОбъекта); + + ОписаниеПолей = Новый ТаблицаЗначений; + ОписаниеПолей.Колонки.Добавить("Поле"); + ОписаниеПолей.Колонки.Добавить("Владелец"); + ОписаниеПолей.Колонки.Добавить("СхемаКомпоновкиДанных"); + ОписаниеПолей.Колонки.Добавить("ИдентификаторСхемыКомпоновкиДанных"); + ОписаниеПолей.Колонки.Добавить("ПутьКДанным"); + ОписаниеПолей.Колонки.Добавить("Уровень", Новый ОписаниеТипов("Число")); + ОписаниеПолей.Колонки.Добавить("Формат"); + ОписаниеПолей.Колонки.Добавить("Тип"); + ОписаниеПолей.Колонки.Добавить("Папка", Новый ОписаниеТипов("Булево")); + ОписаниеПолей.Колонки.Добавить("Таблица", Новый ОписаниеТипов("Булево")); + + ТребуемыеПоля = Новый Соответствие; + + Для Каждого ПутьКДанным Из Поля Цикл + Пока ЗначениеЗаполнено(ПутьКДанным) Цикл + Если ТребуемыеПоля[ПутьКДанным] = Неопределено Тогда + ОписаниеПоля = КонструкторФормулСлужебный.ОписаниеПоля(ПутьКДанным, СпискиПолей); + ЗаполнитьЗначенияСвойств(ОписаниеПолей.Добавить(), ОписаниеПоля); + ТребуемыеПоля.Вставить(ПутьКДанным, ОписаниеПоля); + + КодЯзыкаБезРегиона = СтрРазделить(КодЯзыка, "_")[0]; + Если ЗначениеЗаполнено(КодЯзыкаБезРегиона) И Не СтрЗаканчиваетсяНа(ПутьКДанным, "." + КодЯзыкаБезРегиона) + И ОписаниеПоля.Тип <> Неопределено И ОписаниеПоля.Тип.СодержитТип(Тип("Строка")) Тогда + ОписаниеПоля = КонструкторФормулСлужебный.ОписаниеПоля(ПутьКДанным + "." + КодЯзыкаБезРегиона, СпискиПолей); + Если ОписаниеПоля.ПутьКДанным <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(ОписаниеПолей.Добавить(), ОписаниеПоля); + ТребуемыеПоля.Вставить(ПутьКДанным, ОписаниеПоля); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ЧастиПути = СтрРазделить(ПутьКДанным, "."); + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ПутьКДанным = СтрСоединить(ЧастиПути, "."); + КонецЦикла; + КонецЦикла; + + Для Каждого ОписаниеПоля Из ОписаниеПолей Цикл + Если Не ЗначениеЗаполнено(ОписаниеПоля.Формат) Тогда + ОписаниеПоля.Формат = ФорматПоУмолчанию(ОписаниеПоля.Тип); + КонецЕсли; + Если ЗначениеЗаполнено(ОписаниеПоля.Владелец) Тогда + ОписаниеПоля.Уровень = СтрЧислоВхождений(ОписаниеПоля.Поле, ".") + 1; + КонецЕсли; + КонецЦикла; + + ОписаниеПолей.Сортировать("Уровень"); + ИерархияПолей = Новый Соответствие; + + Для Каждого ОписаниеПоля Из ОписаниеПолей Цикл + Если ОписаниеПоля.Уровень = 0 Тогда + Продолжить; + КонецЕсли; + Владелец = НайтиПолеВИерархии(ОписаниеПоля.Владелец, ИерархияПолей); + Если Владелец = Неопределено Тогда + ИерархияПолей.Вставить(ОписаниеПоля.Владелец, Новый Соответствие); + Владелец = ИерархияПолей[ОписаниеПоля.Владелец]; + КонецЕсли; + Владелец.Вставить(ОписаниеПоля.Поле, Новый Соответствие); + КонецЦикла; + + ЗаполнитьДанныеПечати(ДанныеПечати, ОписаниеПолей, ИерархияПолей, Объекты, КодЯзыка); + + Возврат ДанныеПечати; + +КонецФункции + +Функция СсылкаМакета(ПутьКМакету) Экспорт + + Возврат Справочники.МакетыПечатныхФорм.СсылкаМакета(ПутьКМакету); + +КонецФункции + +Функция ИдентификаторОбласти(Область) Экспорт + + Возврат УправлениеПечатьюКлиентСервер.ИдентификаторОбласти(Область); + +КонецФункции + +// Сохраняет пользовательский макет печати в информационной базе. +// +// Параметры: +// ОписаниеМакета - см. ОписаниеМакета +// +// Возвращаемое значение: +// Строка +// +Функция ЗаписатьМакет(ОписаниеМакета) Экспорт + + ИмяОбъектаМетаданныхМакета = ОписаниеМакета.ИмяОбъектаМетаданныхМакета; + АдресМакетаВоВременномХранилище = ОписаниеМакета.АдресМакетаВоВременномХранилище; + КодЯзыка = ОписаниеМакета.КодЯзыка; + + Если Не ЗначениеЗаполнено(ИмяОбъектаМетаданныхМакета) Или ЗначениеЗаполнено(ОписаниеМакета.Ссылка) Тогда + Возврат Справочники.МакетыПечатныхФорм.ЗаписатьМакет(ОписаниеМакета); + КонецЕсли; + + ИзмененныйМакет = ПолучитьИзВременногоХранилища(АдресМакетаВоВременномХранилище); + + ЧастиИмени = СтрРазделить(ИмяОбъектаМетаданныхМакета, "."); + ИмяМакета = ЧастиИмени[ЧастиИмени.ВГраница()]; + + ИмяВладельца = ""; + Для НомерЧасти = 0 По ЧастиИмени.ВГраница()-1 Цикл + Если Не ПустаяСтрока(ИмяВладельца) Тогда + ИмяВладельца = ИмяВладельца + "."; + КонецЕсли; + ИмяВладельца = ИмяВладельца + ЧастиИмени[НомерЧасти]; + КонецЦикла; + + Если ЧастиИмени.Количество() = 3 Тогда + УстановитьОтключениеБезопасногоРежима(Истина); + УстановитьПривилегированныйРежим(Истина); + + МакетИзМетаданных = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяВладельца).ПолучитьМакет(ИмяМакета); + + УстановитьПривилегированныйРежим(Ложь); + УстановитьОтключениеБезопасногоРежима(Ложь); + Иначе + МакетИзМетаданных = ПолучитьОбщийМакет(ИмяМакета); + КонецЕсли; + + Если ЗначениеЗаполнено(КодЯзыка) Тогда + ИмяМакета = ИмяМакета + "_" + КодЯзыка; + КонецЕсли; + + Запись = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьМенеджерЗаписи(); + Запись.Объект = ИмяВладельца; + Запись.ИмяМакета = ИмяМакета; + Если МакетыРазличаются(МакетИзМетаданных, ИзмененныйМакет) Тогда + Запись.Использование = Истина; + Запись.Макет = Новый ХранилищеЗначения(ИзмененныйМакет, Новый СжатиеДанных(9)); + Запись.Записать(); + Иначе + Запись.Прочитать(); + Если Запись.Выбран() Тогда + Запись.Удалить(); + КонецЕсли; + КонецЕсли; + + Возврат ИмяОбъектаМетаданныхМакета; + +КонецФункции + +Функция СформироватьТабличныйДокумент(Макет, МассивОбъектов, ОбъектыПечати, КодЯзыка) Экспорт + + ПоляМакета = ПоляМакета(Макет); + + ДанныеПечати = ДанныеПечати(МассивОбъектов, ПоляМакета, КодЯзыка); + НастройкиФорматаПолей = ДанныеПечати["НастройкиФорматаПолей"]; + + ПутьКДаннымРисунков = Новый Соответствие(); + Для Каждого Рисунок Из Макет.Рисунки Цикл + ПутьКДаннымРисунков.Вставить(Рисунок.Имя, Рисунок.ПараметрРасшифровки); + КонецЦикла; + + ОбластиМакета = ОбластиМакета(Макет, ДанныеПечати); + ТабличныйДокумент = Новый ТабличныйДокумент; + + ВыведеноРисунков = ТабличныйДокумент.Рисунки.Количество(); + Для Каждого Ссылка Из МассивОбъектов Цикл + + Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда + ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); + КонецЕсли; + + НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; + + Для Каждого Элемент Из ОбластиМакета.ВсеОбласти Цикл + ИмяОбласти = Элемент.Значение; + УсловиеВывода = Элемент.Представление; + КоличествоПовторений = 1; + + ИмяТаблицы = ОбластиМакета.ОбластиТаблиц[ИмяОбласти]; + Если ЗначениеЗаполнено(ИмяТаблицы) Тогда + КоличествоПовторений = ДанныеПечати[Ссылка][ИмяТаблицы].Количество(); + КонецЕсли; + + Для НомерСтрокиТабличнойЧасти = 1 По КоличествоПовторений Цикл + ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти); + + ИсточникДанных = Новый Соответствие; + ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(ИсточникДанных, ДанныеПечати[Ссылка]); + Если ЗначениеЗаполнено(ИмяТаблицы) Тогда + ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(ИсточникДанных, ДанныеПечати[Ссылка][ИмяТаблицы][НомерСтрокиТабличнойЧасти]); + КонецЕсли; + + Если ЗначениеЗаполнено(УсловиеВывода) Тогда + ВыводитьОбласть = ВычислитьВыражение("[" + УсловиеВывода + "]", ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + Если ТипЗнч(ВыводитьОбласть) <> Тип("Булево") Или Не ВыводитьОбласть Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + + ОбработанныеЯчейки = Новый Соответствие; + Для НомерСтроки = 1 По ОбластьМакета.ВысотаТаблицы Цикл + Для НомерСтолбца = 1 По ОбластьМакета.ШиринаТаблицы Цикл + ОбластьЯчейки = ОбластьМакета.Область(НомерСтроки, НомерСтолбца, НомерСтроки, НомерСтолбца); + + ИдентификаторОбласти = ИдентификаторОбласти(ОбластьЯчейки); + Если ОбработанныеЯчейки[ИдентификаторОбласти] <> Неопределено Тогда + Продолжить; + КонецЕсли; + ОбработанныеЯчейки[ИдентификаторОбласти] = Истина; + + Если Не ЗначениеЗаполнено(ОбластьЯчейки.Текст) Тогда + Продолжить; + КонецЕсли; + + ОбластьЯчейки.Текст = ЗаменитьПараметрыЗначениями(ОбластьЯчейки.Текст, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + КонецЦикла; + КонецЦикла; + + ТабличныйДокумент.Вывести(ОбластьМакета); + Для Индекс = ВыведеноРисунков По ТабличныйДокумент.Рисунки.Количество() - 1 Цикл + Рисунок = ТабличныйДокумент.Рисунки[Индекс]; + Рисунок.ПараметрРасшифровки = ПутьКДаннымРисунков[Рисунок.Имя]; + Если Не ЗначениеЗаполнено(Рисунок.ПараметрРасшифровки) Тогда + Продолжить; + КонецЕсли; + СсылкаНаКартинку = ВычислитьВыражение(Рисунок.ПараметрРасшифровки, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + Рисунок.Картинка = КартинкаИзФайла(СсылкаНаКартинку); + КонецЦикла; + ВыведеноРисунков = ТабличныйДокумент.Рисунки.Количество(); + КонецЦикла; + КонецЦикла; + + ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка); + + КонецЦикла; + + ИсточникДанных = ДанныеПечати[МассивОбъектов[0]]; + + ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева = ЗаменитьПараметрыЗначениями(Макет.ВерхнийКолонтитул.ТекстСлева, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = ЗаменитьПараметрыЗначениями(Макет.ВерхнийКолонтитул.ТекстВЦентре, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа = ЗаменитьПараметрыЗначениями(Макет.ВерхнийКолонтитул.ТекстСправа, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + + ТабличныйДокумент.НижнийКолонтитул.ТекстСлева = ЗаменитьПараметрыЗначениями(Макет.НижнийКолонтитул.ТекстСлева, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре = ЗаменитьПараметрыЗначениями(Макет.НижнийКолонтитул.ТекстВЦентре, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + ТабличныйДокумент.НижнийКолонтитул.ТекстСправа = ЗаменитьПараметрыЗначениями(Макет.НижнийКолонтитул.ТекстСправа, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + + Возврат ТабличныйДокумент + +КонецФункции + +Процедура УдалитьМакет(ПутьКМакету, КодЯзыка = Неопределено) Экспорт + + Ссылка = Справочники.МакетыПечатныхФорм.СсылкаМакета(ПутьКМакету); + Если ЗначениеЗаполнено(Ссылка) Тогда + Справочники.МакетыПечатныхФорм.УдалитьМакет(Ссылка, КодЯзыка); + Возврат; + КонецЕсли; + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()]; + Если ЗначениеЗаполнено(КодЯзыка) Тогда + ИмяМакета = ИмяМакета + "_" + КодЯзыка; + КонецЕсли; + + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ИмяОбъекта = СтрСоединить(ЧастиПути, "."); + + ТекстЗапроса = + "ВЫБРАТЬ + | ПользовательскиеМакетыПечати.ИмяМакета КАК ИмяМакета + |ИЗ + | РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати + |ГДЕ + | ПользовательскиеМакетыПечати.Объект = &Объект + | И (ПользовательскиеМакетыПечати.ИмяМакета = &ИмяМакета + | ИЛИ ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО &ШаблонИмениМакета)"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.Параметры.Вставить("Объект", ИмяОбъекта); + Запрос.Параметры.Вставить("ИмяМакета", ИмяМакета); + Запрос.Параметры.Вставить("ШаблонИмениМакета", ИмяМакета + "_%"); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ПользовательскиеМакетыПечати"); + ЭлементБлокировки.УстановитьЗначение("Объект", ИмяОбъекта); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Выборка = Запрос.Выполнить().Выбрать(); + + НаборЗаписей = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.Объект.Установить(ИмяОбъекта); + Пока Выборка.Следующий() Цикл + НаборЗаписей.Отбор.ИмяМакета.Установить(Выборка.ИмяМакета); + НаборЗаписей.Записать(); + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Функция НайтиПараметрыВТексте(Знач Текст, Параметры = Неопределено, Знач ПозицияНачала = 0, ОткрывающихСкобок = 1, ЗакрывающихСкобок = 0) Экспорт // АПК:142 - необязательные параметры используются только при вызове самой себя. + + Если Параметры = Неопределено Тогда + Параметры = Новый Массив; + КонецЕсли; + + Если ПозицияНачала = 0 Тогда + ПозицияНачала = СтрНайти(Текст, "["); + Если ПозицияНачала = 0 Тогда + Возврат Параметры; + КонецЕсли; + КонецЕсли; + + ПозицияКонца = СтрНайти(Текст, "]", , ПозицияНачала, ОткрывающихСкобок); + Если ПозицияКонца > 0 Тогда + ЗакрывающихСкобок = ЗакрывающихСкобок + 1; + Строка = Сред(Текст, ПозицияНачала, ПозицияКонца - ПозицияНачала + 1); + ОткрывающихСкобок = СтрЧислоВхождений(Строка, "["); + Если ОткрывающихСкобок > ЗакрывающихСкобок Тогда + НайтиПараметрыВТексте(Текст, Параметры, ПозицияНачала, ОткрывающихСкобок, ЗакрывающихСкобок); + Иначе + Параметры.Добавить(Строка); + Текст = Сред(Текст, ПозицияКонца + 1); + НайтиПараметрыВТексте(Текст, Параметры) + КонецЕсли; + КонецЕсли; + + Возврат Параметры; + +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.МакетыПечатныхФорм +// * АдресМакетаВоВременномХранилище - Строка +// * ИмяОбъектаМетаданныхМакета - Строка +// * КодЯзыка - Строка +// * Владелец - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Наименование - Строка +// * ТипМакета - Строка +// +Функция ОписаниеМакета() Экспорт + + Результат = Новый Структура; + Результат.Вставить("Ссылка"); + Результат.Вставить("АдресМакетаВоВременномХранилище"); + Результат.Вставить("ИмяОбъектаМетаданныхМакета"); + Результат.Вставить("КодЯзыка"); + Результат.Вставить("Владелец"); + Результат.Вставить("Наименование"); + Результат.Вставить("ТипМакета"); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -2038,11 +2667,17 @@ ПараметрыВывода); Иначе Если Не ПустаяСтрока(ИспользуемыйМенеджерПечати) Тогда - МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати); // Печать внутренней печатной формы. Если ОбъектыСоответствующиеПечатнойФорме <> Неопределено Тогда - МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, - ОбъектыПечати, ПараметрыВывода); + ЭтоПечатнаяФормаСКД = ИмяМенеджераПечати = "УправлениеПечатью"; + Если ЭтоПечатнаяФормаСКД Тогда + Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, + ОбъектыПечати, ПараметрыВывода, ИспользуемыйМенеджерПечати); + Иначе + МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати); + МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, + ОбъектыПечати, ПараметрыВывода); + КонецЕсли; Иначе ВременнаяКоллекцияДляОднойПечатнойФормы[0].ТабличныйДокумент = Новый ТабличныйДокумент; КонецЕсли; @@ -2197,54 +2832,6 @@ КонецЦикла; КонецПроцедуры -// Сохраняет пользовательский макет печати в информационной базе. -Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, КодЯзыка = Неопределено) Экспорт - - ИзмененныйМакет = ПолучитьИзВременногоХранилища(АдресМакетаВоВременномХранилище); - - ЧастиИмени = СтрРазделить(ИмяОбъектаМетаданныхМакета, "."); - ИмяМакета = ЧастиИмени[ЧастиИмени.ВГраница()]; - - ИмяВладельца = ""; - Для НомерЧасти = 0 По ЧастиИмени.ВГраница()-1 Цикл - Если Не ПустаяСтрока(ИмяВладельца) Тогда - ИмяВладельца = ИмяВладельца + "."; - КонецЕсли; - ИмяВладельца = ИмяВладельца + ЧастиИмени[НомерЧасти]; - КонецЦикла; - - Если ЧастиИмени.Количество() = 3 Тогда - УстановитьОтключениеБезопасногоРежима(Истина); - УстановитьПривилегированныйРежим(Истина); - - МакетИзМетаданных = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяВладельца).ПолучитьМакет(ИмяМакета); - - УстановитьПривилегированныйРежим(Ложь); - УстановитьОтключениеБезопасногоРежима(Ложь); - Иначе - МакетИзМетаданных = ПолучитьОбщийМакет(ИмяМакета); - КонецЕсли; - - Если ЗначениеЗаполнено(КодЯзыка) Тогда - ИмяМакета = ИмяМакета + "_" + КодЯзыка; - КонецЕсли; - - Запись = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьМенеджерЗаписи(); - Запись.Объект = ИмяВладельца; - Запись.ИмяМакета = ИмяМакета; - Если МакетыРазличаются(МакетИзМетаданных, ИзмененныйМакет) Тогда - Запись.Использование = Истина; - Запись.Макет = Новый ХранилищеЗначения(ИзмененныйМакет, Новый СжатиеДанных(9)); - Запись.Записать(); - Иначе - Запись.Прочитать(); - Если Запись.Выбран() Тогда - Запись.Удалить(); - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - Функция КомпонентаФормированияQRКода() ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'"); @@ -2434,7 +3021,7 @@ КонецФункции -Функция КомандыПечатиОбъекта(ОбъектМетаданных) Экспорт +Функция КомандыПечатиОбъекта(ОбъектМетаданных, СПечатнымиФормами = Истина) Экспорт КомандыПечати = СоздатьКоллекциюКомандПечати(); Если ТипЗнч(ОбъектМетаданных) <> Тип("ОбъектМетаданных") Тогда Возврат КомандыПечати; @@ -2450,6 +3037,11 @@ ДобавляемыеКомандыПечати = СоздатьКоллекциюКомандПечати(); Источник.Менеджер.ДобавитьКомандыПечати(ДобавляемыеКомандыПечати); + + Если СПечатнымиФормами Тогда + ДобавитьКомандыПечати(ДобавляемыеКомандыПечати, ОбъектМетаданных); + КонецЕсли; + Для Каждого КомандаПечати Из ДобавляемыеКомандыПечати Цикл Если КомандаПечати.МенеджерПечати = Неопределено Тогда КомандаПечати.МенеджерПечати = Источник.ПолноеИмя; @@ -2539,7 +3131,10 @@ КонецФункции Функция КопируемыеСвойстваТабличногоДокумента() Экспорт - Возврат "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыка,КоличествоЭкземпляров,МасштабПечати,НомерПервойСтраницы,ОриентацияСтраницы,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы,ТочностьПечати,ФоноваяКартинка,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице"; + Возврат "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыка, + |КоличествоЭкземпляров,МасштабПечати,НомерПервойСтраницы,ОриентацияСтраницы,ПолеСверху,ПолеСлева, + |ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы, + |ТочностьПечати,ФоноваяКартинка,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице"; КонецФункции Функция МакетыРазличаются(Знач ИсходныйМакет, ИзмененныйМакет) Экспорт @@ -2555,6 +3150,10 @@ Возврат НСтр("ru = 'Тип области не указан или указан некорректно.'"); КонецФункции +// Параметры: +// ОбъектыПечати - СписокЗначений +// ТабличныйДокумент - ТабличныйДокумент +// Функция ПодписиИПечатиОбластей(ОбъектыПечати) Экспорт ПодписиИПечати = ПодписиИПечатиОбъектов(ОбъектыПечати); @@ -2570,6 +3169,56 @@ КонецФункции +Функция ПодписиИПечатиТабличногоДокумента(ОбъектыПечати, Макет, КодЯзыка) Экспорт + + Поля = Новый Массив; + + Тексты = Новый Соответствие; + Для Каждого Рисунок Из Макет.Рисунки Цикл + Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина); + КонецЦикла; + + Для Каждого Элемент Из Тексты Цикл + Текст = Элемент.Ключ; + ПараметрыТекста = НайтиПараметрыВТексте(Текст); + Для Каждого Выражение Из ПараметрыТекста Цикл + Выражение = Сред(Выражение, 2, СтрДлина(Выражение) - 2); + ЭлементыФормулы = КонструкторФормулСлужебный.ЭлементыФормулы(Выражение); + Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл + Операнд = ОчиститьКвадратныеСкобки(Операнд); + Если ЗначениеЗаполнено(Операнд) Тогда + Поля.Добавить(Операнд); + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Объекты = ОбъектыПечати.ВыгрузитьЗначения(); + ДанныеПечати = ДанныеПечати(Объекты, Поля, КодЯзыка); + + Результат = Новый Соответствие(); + + Для Каждого ОписаниеОбласти Из ОбъектыПечати Цикл + Объект = ОписаниеОбласти.Значение; + ИмяОбласти = ОписаниеОбласти.Представление; + + Картинки = Новый Соответствие; + Для Каждого Поле Из Поля Цикл + Если Картинки[Поле] <> Неопределено Тогда + Продолжить; + КонецЕсли; + СсылкаНаКартинку = ДанныеПечати[Объект][Поле]; + Картинка = КартинкаИзФайла(СсылкаНаКартинку); + Картинки.Вставить("[" + Поле + "]", Картинка); + КонецЦикла; + + Результат.Вставить(ИмяОбласти, Картинки); + КонецЦикла; + + Возврат Результат; + +КонецФункции + Функция ПодписиИПечатиОбъектов(Знач ОбъектыПечати) Экспорт СписокОбъектов = ОбъектыПечати.ВыгрузитьЗначения(); @@ -2593,7 +3242,12 @@ Продолжить; КонецЕсли; - Картинка = КомплектПодписейИПечатей[Лев(Рисунок.Имя, Позиция - 1)]; + Если ЗначениеЗаполнено(Рисунок.ПараметрРасшифровки) Тогда + Картинка = КомплектПодписейИПечатей[Рисунок.ПараметрРасшифровки]; + Иначе + Картинка = КомплектПодписейИПечатей[Лев(Рисунок.Имя, Позиция - 1)]; + КонецЕсли; + Если Картинка <> Неопределено Тогда Рисунок.Картинка = Картинка; КонецЕсли; @@ -3126,6 +3780,12 @@ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + + НайденныйМакет = Справочники.МакетыПечатныхФорм.НайтиМакет(ПутьКМакету, КодЯзыка); + Если НайденныйМакет <> Неопределено Тогда + Возврат НайденныйМакет; + КонецЕсли; + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -3217,61 +3877,591 @@ КонецПроцедуры -Процедура УдалитьМакет(ПутьКМакету, КодЯзыка = Неопределено) Экспорт +// Формирует печатные формы. +// +// Параметры: +// МассивОбъектов - см. УправлениеПечатьюПереопределяемый.ПриПечати.МассивОбъектов +// ПараметрыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыПечати +// КоллекцияПечатныхФорм - см. УправлениеПечатьюПереопределяемый.ПриПечати.КоллекцияПечатныхФорм +// ОбъектыПечати - см. УправлениеПечатьюПереопределяемый.ПриПечати.ОбъектыПечати +// ПараметрыВывода - см. УправлениеПечатьюПереопределяемый.ПриПечати.ПараметрыВывода +// +Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, МенеджерПечати) - ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); - ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); - Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда - ВызватьИсключение ТекстОшибки; - КонецЕсли; + КодЯзыка = ПараметрыВывода.КодЯзыка; - ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()]; - ЧастиПути.Удалить(ЧастиПути.ВГраница()); - ИмяОбъекта = СтрСоединить(ЧастиПути, "."); - - ТекстЗапроса = - "ВЫБРАТЬ - | ПользовательскиеМакетыПечати.ИмяМакета КАК ИмяМакета - |ИЗ - | РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати - |ГДЕ - | ПользовательскиеМакетыПечати.Объект = &Объект - | И (ПользовательскиеМакетыПечати.ИмяМакета = &ИмяМакета - | ИЛИ ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО &ШаблонИмениМакета)"; - - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.Параметры.Вставить("Объект", ИмяОбъекта); - Запрос.Параметры.Вставить("ИмяМакета", ИмяМакета); - Запрос.Параметры.Вставить("ШаблонИмениМакета", ИмяМакета + "_%"); - - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ПользовательскиеМакетыПечати"); - ЭлементБлокировки.УстановитьЗначение("Объект", ИмяОбъекта); - - НачатьТранзакцию(); - Попытка - Блокировка.Заблокировать(); - Выборка = Запрос.Выполнить().Выбрать(); + Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл + Если Не СтрНачинаетсяС(ПечатнаяФорма.ИмяМакета, "ПФ_") Тогда + Продолжить; + КонецЕсли; - НаборЗаписей = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьНаборЗаписей(); - НаборЗаписей.Отбор.Объект.Установить(ИмяОбъекта); - Пока Выборка.Следующий() Цикл - НаборЗаписей.Отбор.ИмяМакета.Установить(Выборка.ИмяМакета); - НаборЗаписей.Записать(); - КонецЦикла; + ПечатнаяФорма.ДоступенВыводНаДругихЯзыках = Истина; + ПечатнаяФорма.ПолныйПутьКМакету = МенеджерПечати + "." + ПечатнаяФорма.ИмяМакета; + ПечатнаяФорма.СинонимМакета = ПредставлениеМакета(ПечатнаяФорма.ПолныйПутьКМакету, КодЯзыка); - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; + Макет = МакетПечатнойФормы(ПечатнаяФорма.ПолныйПутьКМакету, КодЯзыка); + + ТабличныйДокумент = СформироватьТабличныйДокумент(Макет, МассивОбъектов, ОбъектыПечати, КодЯзыка); + ПечатнаяФорма.ТабличныйДокумент = ТабличныйДокумент; + КонецЦикла; КонецПроцедуры +Функция ЗаменитьПараметрыЗначениями(Знач Строка, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка) + + ПараметрыТекста = НайтиПараметрыВТексте(Строка(Строка)); + ЗначенияПараметров = ЗначенияПараметров(ПараметрыТекста, ИсточникДанных, НастройкиФорматаПолей, КодЯзыка); + + Если ТипЗнч(Строка) = Тип("ФорматированнаяСтрока") Тогда + Результат = ЗаменитьВФорматированнойСтроке(Строка, ЗначенияПараметров); + Иначе + Результат = ЗаменитьВСтроке(Строка, ЗначенияПараметров); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ЗаменитьВСтроке(Знач Строка, ПараметрыЗамены) + + Для Каждого Элемент Из ПараметрыЗамены Цикл + ПодстрокаПоиска = Элемент.Ключ; + ПодстрокаЗамены = Элемент.Значение; + Строка = СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены); + КонецЦикла; + + Возврат Строка; + +КонецФункции + +Функция ЗаменитьВФорматированнойСтроке(Строка, ПараметрыЗамены) + + ФорматированныйДокумент = Новый ФорматированныйДокумент; + ФорматированныйДокумент.УстановитьФорматированнуюСтроку(Строка); + + Для Каждого Элемент Из ПараметрыЗамены Цикл + ПодстрокаПоиска = Элемент.Ключ; + ПодстрокаЗамены = Элемент.Значение; + + НайденнаяОбласть = ФорматированныйДокумент.НайтиТекст(ПодстрокаПоиска); + Пока НайденнаяОбласть <> Неопределено Цикл + Фрагменты = ФорматированныйДокумент.СформироватьЭлементы(НайденнаяОбласть.ЗакладкаНачала, НайденнаяОбласть.ЗакладкаКонца); + Для Индекс = 1 По Фрагменты.ВГраница() Цикл + Фрагменты[0].Текст = Фрагменты[0].Текст + Фрагменты[Индекс].Текст; + Фрагменты[Индекс].Текст = ""; + КонецЦикла; + Фрагменты[0].Текст = СтрЗаменить(Фрагменты[0].Текст, ПодстрокаПоиска, ПодстрокаЗамены); + + НайденнаяОбласть = ФорматированныйДокумент.НайтиТекст(ПодстрокаПоиска, НайденнаяОбласть.ЗакладкаКонца); + КонецЦикла; + КонецЦикла; + + Возврат ФорматированныйДокумент.ПолучитьФорматированнуюСтроку(); + +КонецФункции + +Процедура ЗаполнитьДанныеПечати(ДанныеПечати, ОписаниеПолей, ИерархияПолей, Объекты, КодЯзыка) + + Если ДанныеПечати["ИменаТабличныхЧастейОбъекта"] = Неопределено Тогда + ДанныеПечати["ИменаТабличныхЧастейОбъекта"] = Новый Массив; + КонецЕсли; + + Если ДанныеПечати["НастройкиФорматаПолей"] = Неопределено Тогда + ДанныеПечати["НастройкиФорматаПолей"] = Новый Соответствие; + КонецЕсли; + + Для Каждого КоллекцияПолей Из ИерархияПолей Цикл + ПодчиненныеПоля = КоллекцияПолей.Значение; + Если Не ЗначениеЗаполнено(ПодчиненныеПоля) Тогда + Продолжить; + КонецЕсли; + + ИсточникПолей = КоллекцияПолей.Ключ; + ЧастиПути = СтрРазделить(ИсточникПолей, ".", Истина); + ИмяПоляИсточникаДанных = ЧастиПути[ЧастиПути.ВГраница()]; + ИмяТаблицы = ""; + ЭтоПолеТабличнойЧасти = Ложь; + ПутьКДаннымВладельцаИсточника = ""; + Пока ЧастиПути.Количество() > 1 Цикл + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ПутьКДаннымВладельцаИсточника = СтрСоединить(ЧастиПути, "."); + + ОписаниеПоля = ОписаниеПолей.НайтиСтроки(Новый Структура("Поле", ПутьКДаннымВладельцаИсточника))[0]; + Если ОписаниеПоля.Папка И Не ОписаниеПоля.Таблица Тогда + ПутьКДаннымВладельцаИсточника = ""; + Продолжить; + КонецЕсли; + + ИмяТаблицы = ЧастиПути[0]; + ЭтоПолеТабличнойЧасти = ДанныеПечати["ИменаТабличныхЧастейОбъекта"].Найти(ИмяТаблицы) <> Неопределено; + Прервать; + КонецЦикла; + + Поля = Новый Соответствие; + СхемыКомпоновкиДанных = Новый Соответствие; + + Для Каждого Поле Из ПодчиненныеПоля Цикл + ОписаниеПоля = ОписаниеПолей.НайтиСтроки(Новый Структура("Поле", Поле.Ключ))[0]; + СхемаКомпоновкиДанных = ОписаниеПоля.СхемаКомпоновкиДанных; + СхемыКомпоновкиДанных.Вставить(СхемаКомпоновкиДанных, ОписаниеПоля.ИдентификаторСхемыКомпоновкиДанных); + Если Поля[СхемаКомпоновкиДанных] = Неопределено Тогда + Поля[СхемаКомпоновкиДанных] = Новый Массив; + КонецЕсли; + ПоляСхемыКомпоновкиДанных = Поля[СхемаКомпоновкиДанных]; // Массив + ПоляСхемыКомпоновкиДанных.Добавить(ОписаниеПоля.ПутьКДанным); + + Если ЗначениеЗаполнено(ОписаниеПоля.Формат) Тогда + ДанныеПечати["НастройкиФорматаПолей"][ОписаниеПоля.Поле] = ОписаниеПоля.Формат; + КонецЕсли; + КонецЦикла; + + ОписанияИсточниковДанных = Новый ТаблицаЗначений; + ОписанияИсточниковДанных.Колонки.Добавить("Владелец"); + ОписанияИсточниковДанных.Колонки.Добавить("Имя"); + ОписанияИсточниковДанных.Колонки.Добавить("Значение"); + + Для Каждого Объект Из Объекты Цикл + Если ИсточникПолей = "Ссылка" Тогда + ОписаниеИсточника = ОписанияИсточниковДанных.Добавить(); + ОписаниеИсточника.Владелец = Неопределено; + ОписаниеИсточника.Имя = ИсточникПолей; + ОписаниеИсточника.Значение = Объект; + ИначеЕсли ЗначениеЗаполнено(ПутьКДаннымВладельцаИсточника) Тогда + Если ЭтоПолеТабличнойЧасти Тогда + Для НомерСтроки = 1 По ДанныеПечати[Объект][ИмяТаблицы].Количество() Цикл + Если Не ЗначениеЗаполнено(ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ИсточникПолей]) Тогда + Для Каждого Поле Из ПодчиненныеПоля Цикл + ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][Поле] = Неопределено; + КонецЦикла; + Иначе + ОписаниеИсточника = ОписанияИсточниковДанных.Добавить(); + ОписаниеИсточника.Владелец = ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ПутьКДаннымВладельцаИсточника]; + ОписаниеИсточника.Имя = ИмяПоляИсточникаДанных; + ОписаниеИсточника.Значение = ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ИсточникПолей]; + КонецЕсли; + КонецЦикла; + Иначе + Если Не ЗначениеЗаполнено(ДанныеПечати[Объект][ИсточникПолей]) Тогда + Для Каждого Поле Из ПодчиненныеПоля Цикл + ДанныеПечати[Объект][Поле] = Неопределено; + КонецЦикла; + Иначе + ОписаниеИсточника = ОписанияИсточниковДанных.Добавить(); + ОписаниеИсточника.Владелец = ДанныеПечати[Объект][ПутьКДаннымВладельцаИсточника]; + ОписаниеИсточника.Имя = ИмяПоляИсточникаДанных; + ОписаниеИсточника.Значение = ДанныеПечати[Объект][ИсточникПолей]; + КонецЕсли; + КонецЕсли; + Иначе + Если Не ЗначениеЗаполнено(ДанныеПечати[Объект][ИсточникПолей]) Тогда + Для Каждого Поле Из ПодчиненныеПоля Цикл + ДанныеПечати[Объект][Поле] = Неопределено; + КонецЦикла; + Иначе + ОписаниеИсточника = ОписанияИсточниковДанных.Добавить(); + ОписаниеИсточника.Владелец = Объект; + ОписаниеИсточника.Имя = ИмяПоляИсточникаДанных; + ОписаниеИсточника.Значение = ДанныеПечати[Объект][ИсточникПолей]; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Для Каждого Элемент Из Поля Цикл + ИдентификаторСхемыКомпоновкиДанных = СхемыКомпоновкиДанных[Элемент.Ключ]; + СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(Элемент.Ключ); + ПоляСхемы = Элемент.Значение; + + ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Ложь; + ИсточникиДанных = ОписанияИсточниковДанных.ВыгрузитьКолонку("Значение"); + + Для Индекс = 0 По ИсточникиДанных.ВГраница() Цикл + Если ИсточникиДанных[Индекс] = Неопределено Тогда + ИсточникиДанных[Индекс] = ""; + КонецЕсли; + КонецЦикла; + + ИсточникиДанных = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ИсточникиДанных); + + Параметры = КоллекцияПараметровПолученияДанныхИсточников(); + Параметры.ИсточникиДанных = ИсточникиДанных; + Параметры.ПоляСхемы = ПоляСхемы; + Параметры.КодЯзыка = КодЯзыка; + Параметры.СхемаКомпоновкиДанных = СхемаКомпоновкиДанных; + Параметры.ИдентификаторСхемыКомпоновкиДанных = ИдентификаторСхемыКомпоновкиДанных; + Параметры.ОписанияИсточниковДанных = ОписанияИсточниковДанных; + Параметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных; + + ДанныеИсточников = ДанныеИсточников(Параметры); + + ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Параметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных; + + Если ИсточникПолей = "Ссылка" Тогда + Если ДанныеИсточников["ИменаТабличныхЧастейОбъекта"] <> Неопределено Тогда + Для Каждого ИмяТабличнойЧасти Из ДанныеИсточников["ИменаТабличныхЧастейОбъекта"] Цикл + ДанныеПечати["ИменаТабличныхЧастейОбъекта"].Добавить(ИмяТабличнойЧасти); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Для Каждого Объект Из Объекты Цикл + Если ЭтоПолеТабличнойЧасти Тогда + Для НомерСтроки = 1 По ДанныеПечати[Объект][ИмяТаблицы].Количество() Цикл + Если ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных Тогда + ИсточникДанных = ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ПутьКДаннымВладельцаИсточника]; + Иначе + ИсточникДанных = ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ИсточникПолей]; + КонецЕсли; + Если ИсточникДанных = Неопределено Тогда + ИсточникДанных = ""; + КонецЕсли; + + Если ДанныеИсточников[ИсточникДанных] <> Неопределено Тогда + Для Каждого ДанныеПоля Из ДанныеИсточников[ИсточникДанных] Цикл + Поле = ДанныеПоля.Ключ; + ЗначениеПоля = ДанныеПоля.Значение; + ДанныеПечати[Объект][ИмяТаблицы][НомерСтроки][ИсточникПолей + "." + Поле] = ЗначениеПоля; + КонецЦикла; + КонецЕсли; + КонецЦикла; + Иначе + Если ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных Тогда + Если ЗначениеЗаполнено(ПутьКДаннымВладельцаИсточника) Тогда + ИсточникДанных = ДанныеПечати[Объект][ПутьКДаннымВладельцаИсточника]; + Иначе + ИсточникДанных = Объект; + КонецЕсли; + ИначеЕсли ИсточникПолей = "Ссылка" Тогда + ИсточникДанных = Объект; + Иначе + ИсточникДанных = ДанныеПечати[Объект][ИсточникПолей]; + КонецЕсли; + + Если ИсточникДанных = Неопределено Тогда + ИсточникДанных = ""; + КонецЕсли; + + Если ДанныеИсточников[ИсточникДанных] <> Неопределено Тогда + Для Каждого ДанныеПоля Из ДанныеИсточников[ИсточникДанных] Цикл + Поле = ДанныеПоля.Ключ; + ЗначениеПоля = ДанныеПоля.Значение; + Если ИсточникПолей = "Ссылка" Тогда + ДанныеПечати[Объект][Поле] = ЗначениеПоля; + Иначе + ДанныеПечати[Объект][ИсточникПолей + "." + Поле] = ЗначениеПоля; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + ЗаполнитьДанныеПечати(ДанныеПечати, ОписаниеПолей, ПодчиненныеПоля, Объекты, КодЯзыка) + КонецЦикла; + +КонецПроцедуры + +Функция КоллекцияПараметровПолученияДанныхИсточников() + + Параметры = Новый Структура; + Параметры.Вставить("ИсточникиДанных"); + Параметры.Вставить("ПоляСхемы"); + Параметры.Вставить("КодЯзыка"); + Параметры.Вставить("СхемаКомпоновкиДанных"); + Параметры.Вставить("ИдентификаторСхемыКомпоновкиДанных"); + Параметры.Вставить("ОписанияИсточниковДанных"); + Параметры.Вставить("ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных"); + + Возврат Параметры; + +КонецФункции + +Функция ДанныеИсточников(Параметры) + + Если Не ЗначениеЗаполнено(Параметры.ИсточникиДанных) Тогда + Возврат Новый Соответствие(); + КонецЕсли; + + РезультатКомпоновки = СкомпоноватьДанные(Параметры); + + Таблицы = РезультатКомпоновки.Таблицы; + ДанныеРасшифровки = РезультатКомпоновки.ДанныеРасшифровки; + + Результат = Новый Соответствие; + Результат.Вставить("ИменаТабличныхЧастейОбъекта", Таблицы); + + Для Каждого Ссылка Из Параметры.ИсточникиДанных Цикл + Результат[Ссылка] = Новый Соответствие(); + Для Каждого Таблица Из Таблицы Цикл + Результат[Ссылка][Таблица] = Новый Соответствие(); + КонецЦикла; + Для Каждого Поле Из Параметры.ПоляСхемы Цикл + ЧастиИмени = СтрРазделить(Поле, ".", Истина); + Если Таблицы.Найти(ЧастиИмени[0]) = Неопределено Тогда + Результат[Ссылка][Поле] = Неопределено; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Для Каждого ЭлементРасшифровки Из ДанныеРасшифровки.Элементы Цикл + + Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда + Продолжить; + КонецЕсли; + + ПараметрыРасшифровки = ПараметрыРасшифровки(ЭлементРасшифровки); + + ИмяПоля = ПараметрыРасшифровки.ИмяПоляРасшифровки; + ИмяТаблицы = СтрРазделить(ИмяПоля, ".")[0]; + + Ссылка = ПараметрыРасшифровки.СписокПолей["Ссылка"]; + ДанныеПечати = Результат[Ссылка]; + Если ДанныеПечати = Неопределено Тогда + Результат.Вставить(Ссылка, Новый Соответствие); + ДанныеПечати = Результат[Ссылка]; + КонецЕсли; + + Если Таблицы.Найти(ИмяТаблицы) <> Неопределено Тогда + Таблица = ДанныеПечати[ИмяТаблицы]; + Если Таблица = Неопределено Тогда + ДанныеПечати.Вставить(ИмяТаблицы, Новый Соответствие); + Таблица = ДанныеПечати[ИмяТаблицы]; + КонецЕсли; + + НомерСтрокиТаблицы = ПараметрыРасшифровки.СписокПолей[ИмяТаблицы + ".НомерСтроки"]; + СтрокаТаблицы = Таблица[НомерСтрокиТаблицы]; + Если СтрокаТаблицы = Неопределено Тогда + Таблица.Вставить(НомерСтрокиТаблицы, Новый Соответствие); + СтрокаТаблицы = Таблица[НомерСтрокиТаблицы]; + КонецЕсли; + + СтрокаТаблицы.Вставить(ИмяПоля, ПараметрыРасшифровки.СписокПолей[ИмяПоля]); + Иначе + ДанныеПечати.Вставить(ИмяПоля, ПараметрыРасшифровки.СписокПолей[ИмяПоля]); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция НайтиПолеВИерархии(Знач Поле, ИерархияПолей) + + Результат= ИерархияПолей[Поле]; + Если Результат = Неопределено Тогда + Для Каждого Элемент Из ИерархияПолей Цикл + Результат = НайтиПолеВИерархии(Поле, Элемент.Значение); + Если Результат <> Неопределено Тогда + Возврат Результат; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Параметры: +// Параметры - см. КоллекцияПараметровПолученияДанныхИсточников +// +Функция СкомпоноватьДанные(Параметры) + + Объекты = Параметры.ИсточникиДанных; + ПоляМакета = Параметры.ПоляСхемы; + КодЯзыка = Параметры.КодЯзыка; + СхемаКомпоновкиДанных = Параметры.СхемаКомпоновкиДанных; + ИдентификаторСхемыКомпоновкиДанных = Параметры.ИдентификаторСхемыКомпоновкиДанных; + ОписанияИсточниковДанных = Параметры.ОписанияИсточниковДанных; + ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Параметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных; + + ВнешниеНаборыДанных = Новый Структура; + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ОписанияИсточниковДанных", ОписанияИсточниковДанных); + ДополнительныеПараметры.Вставить("ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных", ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных); + + ТекстЗаголовка = ИдентификаторСхемыКомпоновкиДанных; + + ТребуетсяПодготовкаВнешнегоНабораДанных = Ложь; + Для Каждого НаборДанных Из СхемаКомпоновкиДанных.НаборыДанных Цикл + Если ТипЗнч(НаборДанных) = Тип("НаборДанныхОбъектСхемыКомпоновкиДанных") Тогда + ТребуетсяПодготовкаВнешнегоНабораДанных = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ТребуетсяПодготовкаВнешнегоНабораДанных Тогда + Если Метаданные.НайтиПоПолномуИмени(ИдентификаторСхемыКомпоновкиДанных) = Неопределено Тогда + ПриПодготовкеДанныхПечати(Объекты, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + Иначе + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИдентификаторСхемыКомпоновкиДанных); + МенеджерОбъекта.ПриПодготовкеДанныхПечати(Объекты, ВнешниеНаборыДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + КонецЕсли; + + ОписанияИсточниковДанных = ДополнительныеПараметры.ОписанияИсточниковДанных; + ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = ДополнительныеПараметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных; + + Если ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных Тогда + Объекты = ОписанияИсточниковДанных.ВыгрузитьКолонку("Владелец"); + Объекты = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Объекты); + КонецЕсли; + + КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; + АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных); + КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); + КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); + + НастройкиКомпоновщика = КомпоновщикНастроек.Настройки; + + ВыводРеквизитов = НастройкиКомпоновщика.ПараметрыВывода.Элементы.Найти("РасположениеРеквизитов"); + ВыводРеквизитов.Значение = РасположениеРеквизитовКомпоновкиДанных.Отдельно; + ВыводРеквизитов.Использование = Истина; + + РасположениеИтогов = НастройкиКомпоновщика.ПараметрыВывода.Элементы.Найти("РасположениеИтогов"); + РасположениеИтогов.Значение = РасположениеИтоговКомпоновкиДанных.Нет; + РасположениеИтогов.Использование = Истина; + + ВыводитьОтбор = НастройкиКомпоновщика.ПараметрыВывода.Элементы.Найти("ВыводитьОтбор"); + ВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить; + ВыводитьОтбор.Использование = Истина; + + Заголовок = НастройкиКомпоновщика.ПараметрыВывода.Элементы.Найти("Заголовок"); + Заголовок.Значение = ТекстЗаголовка; + Заголовок.Использование = Истина; + + Таблицы = Новый Массив; + Для Каждого Поле Из НастройкиКомпоновщика.ДоступныеПоляВыбора.Элементы Цикл + Если Поле.Таблица Тогда + ИмяТаблицы = Строка(Поле.Поле); + Таблицы.Добавить(ИмяТаблицы); + КонецЕсли; + КонецЦикла; + + НастройкиКомпоновщика.Структура.Очистить(); + + КлючевоеПоле = Неопределено; + Для Каждого ИмяПоля Из СтрРазделить("Ссылка", ",") Цикл + КлючевоеПоле = Новый ПолеКомпоновкиДанных(ИмяПоля); + Если НастройкиКомпоновщика.ДоступныеПоляГруппировок.НайтиПоле(КлючевоеПоле) <> Неопределено Тогда + Прервать; + Иначе + КлючевоеПоле = Неопределено; + КонецЕсли; + КонецЦикла; + + Если КлючевоеПоле = Неопределено Тогда + ВызватьИсключение НСтр("ru = 'Не найдено ключевое поле ""Ссылка"" в списке полей схемы данных печати.'"); + КонецЕсли; + + ГруппировкаПоСсылке = НастройкиКомпоновщика.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + + Поле = ГруппировкаПоСсылке.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + Поле.Поле = КлючевоеПоле; + Поле.Использование = Истина; + + ГруппировкаПоСсылке.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); + + ТаблицаКомпоновкиДанных = ГруппировкаПоСсылке.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); + + Шапка = ТаблицаКомпоновкиДанных.Строки.Добавить(); + Шапка.ПоляГруппировки.Элементы.Добавить(Тип("АвтоПолеГруппировкиКомпоновкиДанных")); + + Для Каждого ПутьКДанным Из ПоляМакета Цикл + Если Таблицы.Найти(СтрРазделить(ПутьКДанным, ".", Истина)[0]) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + ДоступноеПоле = НастройкиКомпоновщика.Выбор.ДоступныеПоляВыбора.НайтиПоле(Новый ПолеКомпоновкиДанных(ПутьКДанным)); + Если ДоступноеПоле = Неопределено Тогда + Продолжить; + КонецЕсли; + + Если ДоступноеПоле.Папка Тогда + Поле = Шапка.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); + Иначе + Поле = Шапка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); + КонецЕсли; + Поле.Поле = Новый ПолеКомпоновкиДанных(ПутьКДанным); + Поле.Использование = Истина; + КонецЦикла; + + Для Каждого ИмяТабличнойЧасти Из Таблицы Цикл + ТаблицаКомпоновкиДанных = ГруппировкаПоСсылке.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); + + ГруппировкаПоНомеруСтроки = ТаблицаКомпоновкиДанных.Строки.Добавить(); + ГруппировкаПоНомеруСтроки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + + Поле = ГруппировкаПоНомеруСтроки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + Поле.Поле = Новый ПолеКомпоновкиДанных(ИмяТабличнойЧасти + ".НомерСтроки"); + Поле.Использование = Истина; + + ДанныеТабличнойЧасти = ГруппировкаПоНомеруСтроки.Структура.Добавить(); + ДанныеТабличнойЧасти.ПоляГруппировки.Элементы.Добавить(Тип("АвтоПолеГруппировкиКомпоновкиДанных")); + + Для Каждого ПутьКДанным Из ПоляМакета Цикл + Если СтрРазделить(ПутьКДанным, ".", Истина)[0] <> ИмяТабличнойЧасти Тогда + Продолжить; + КонецЕсли; + + ДоступноеПоле = НастройкиКомпоновщика.Выбор.ДоступныеПоляВыбора.НайтиПоле(Новый ПолеКомпоновкиДанных(ПутьКДанным)); + Если ДоступноеПоле = Неопределено Тогда + Продолжить; + КонецЕсли; + + Если ДоступноеПоле.Папка Тогда + Поле = ДанныеТабличнойЧасти.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); + Иначе + Поле = ДанныеТабличнойЧасти.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); + КонецЕсли; + Поле.Поле = Новый ПолеКомпоновкиДанных(ПутьКДанным); + Поле.Использование = Истина; + КонецЦикла; + КонецЦикла; + + ГруппировкаПоСсылке.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); + + ЭлементОтбора = НастройкиКомпоновщика.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = КлючевоеПоле; + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + ЭлементОтбора.ПравоеЗначение = Новый СписокЗначений; + ЭлементОтбора.ПравоеЗначение.ЗагрузитьЗначения(Объекты); + + ДокументРезультат = Новый ТабличныйДокумент; + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; + ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; + + МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки); + + ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; + ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, ВнешниеНаборыДанных, ДанныеРасшифровки); + + ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; + ПроцессорВывода.УстановитьДокумент(ДокументРезультат); + ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); + + Параметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных; + + Результат = Новый Структура; + Результат.Вставить("ДанныеРасшифровки", ДанныеРасшифровки); + Результат.Вставить("Таблицы", Таблицы); + + Возврат Результат; + +КонецФункции + Функция МакетСуществует(ПутьКМакету) ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + + Идентификатор = ЧастиПути[ЧастиПути.ВГраница()]; + Если СтрНачинаетсяС(Идентификатор, "ПФ_") Тогда + Идентификатор = Сред(Идентификатор, 4); + Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Идентификатор) Тогда + МакетСуществует = Справочники.МакетыПечатныхФорм.МакетСуществует(Новый УникальныйИдентификатор(Идентификатор)); + Если МакетСуществует Тогда + Возврат Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда Возврат Ложь; КонецЕсли; @@ -3295,4 +4485,1094 @@ КонецФункции +// Параметры: +// ДанныеРасшифровки - ДанныеРасшифровкиКомпоновкиДанных +// Расшифровка - ИдентификаторРасшифровкиКомпоновкиДанных - элемент расшифровки. +// +// Возвращаемое значение: +// Структура: +// * ИмяПоляРасшифровки - Строка +// * СписокПолей - Соответствие из КлючИЗначение: +// ** Ключ - Строка +// ** Значение - Произвольный +// +Функция ПараметрыРасшифровки(ЭлементРасшифровки) + + СписокПолей = Новый Соответствие; + ЗаполнитьСписокПолей(СписокПолей, ЭлементРасшифровки); + + ИмяПоляРасшифровки = ""; + Для Каждого ЗначениеПоля Из ЭлементРасшифровки.ПолучитьПоля() Цикл + ИмяПоляРасшифровки = ЗначениеПоля.Поле; + Прервать; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ИмяПоляРасшифровки", ИмяПоляРасшифровки); + Результат.Вставить("СписокПолей", СписокПолей); + + Возврат Результат; + +КонецФункции + +// Параметры: +// СписокПолей - Соответствие +// ЭлементРасшифровки - ЭлементРасшифровкиКомпоновкиДанныхПоля +// - ЭлементРасшифровкиКомпоновкиДанныхГруппировка +// +Процедура ЗаполнитьСписокПолей(СписокПолей, ЭлементРасшифровки) + + Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда + Для Каждого ЗначениеПоля Из ЭлементРасшифровки.ПолучитьПоля() Цикл + Если СписокПолей[ЗначениеПоля.Поле] = Неопределено Тогда + СписокПолей.Вставить(ЗначениеПоля.Поле, ЗначениеПоля.Значение); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Для Каждого Родитель Из ЭлементРасшифровки.ПолучитьРодителей() Цикл + ЗаполнитьСписокПолей(СписокПолей, Родитель); + КонецЦикла; + +КонецПроцедуры + +Функция ЗначенияПараметров(Параметры, ДанныеПечати, НастройкиФорматаПолей, КодЯзыка) + + Результат = Новый Соответствие; + + Для Каждого Параметр Из Параметры Цикл + Значение = ВычислитьВыражение(Параметр, ДанныеПечати, НастройкиФорматаПолей, КодЯзыка); + Результат.Вставить(Параметр, Значение); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ВычислитьВыражение(Знач ИсходноеВыражение, ДанныеПечати, НастройкиФорматаПолей, КодЯзыка) + + Выражение = ИсходноеВыражение; + Выражение = Сред(Выражение, 2, СтрДлина(Выражение) - 2); + + ЭлементыФормулы = КонструкторФормулСлужебный.ЭлементыФормулы(Выражение); + Параметры = Новый Массив; + ПрименятьФорматирование = ЭлементыФормулы.Операнды.Количество() = 1 И ЭлементыФормулы.Операнды[0] = Выражение; + Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл + КоллекцияДанных = ДанныеПечати; + + Если ЭлементыФормулы.Функции.Найти(Операнд) = Неопределено Тогда + Значение = КоллекцияДанных[ОчиститьКвадратныеСкобки(Операнд) + "." + СтрРазделить(КодЯзыка, "_")[0]]; + Если Не ЗначениеЗаполнено(Значение) Тогда + Значение = КоллекцияДанных[ОчиститьКвадратныеСкобки(Операнд)]; + КонецЕсли; + + Формат = ""; + Если ПрименятьФорматирование Тогда + Формат = НастройкиФорматаПолей[Операнд]; + КонецЕсли; + + Если ЗначениеЗаполнено(Формат) И ЭлементыФормулы.Операнды.Количество() = 1 Тогда + Если ЗначениеЗаполнено(КодЯзыка) Тогда + Формат = СтрШаблон("Л=%1;", КодЯзыка) + Формат; + КонецЕсли; + Значение = Формат(Значение, Формат); + КонецЕсли; + + Параметры.Добавить(Значение); + Выражение = СтрЗаменить(Выражение, Операнд, "Параметры[" + Параметры.ВГраница() + "]"); + КонецЕсли; + КонецЦикла; + + Выражение = СтрЗаменить(Выражение, "УправлениеПечатью_", "УправлениеПечатью."); + + Попытка + Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме(Выражение, Параметры); + Исключение + ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + ОбщегоНазначения.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Выражение ""%1"" содержит ошибки: + |%2'"), ИсходноеВыражение, ТекстОшибки)); + Результат = ""; + КонецПопытки; + + Возврат Результат; + +КонецФункции + +Функция ОчиститьКвадратныеСкобки(Строка) + + Возврат СокрЛП(СтрСоединить(СтрРазделить(Строка, "[]", Ложь), "")); + +КонецФункции + +Функция ОбластиМакета(Макет, ДанныеПечати) + + Таблицы = ДанныеПечати["ИменаТабличныхЧастейОбъекта"]; + ВсеОбласти = Новый СписокЗначений; + ОбластиТаблиц = Новый Соответствие; + + ОбластиСУсловиями = Новый Соответствие; + Для Каждого Область Из Макет.Области Цикл + Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + ОбластиСУсловиями.Вставить(Область.Верх, Область); + КонецЕсли; + КонецЦикла; + + ОбластиДляОбработки = Новый Массив; + + НачалоОбласти = 1; + Для НомерСтроки = 1 По Макет.ВысотаТаблицы Цикл + Если ОбластиСУсловиями[НомерСтроки] <> Неопределено Тогда + Если НачалоОбласти < НомерСтроки Тогда + Область = Макет.Область(НачалоОбласти, , НомерСтроки-1); + ОбластиДляОбработки.Добавить(Область); + КонецЕсли; + ОбластиДляОбработки.Добавить(ОбластиСУсловиями[НомерСтроки]); + НомерСтроки = ОбластиСУсловиями[НомерСтроки].Низ; + НачалоОбласти = НомерСтроки + 1; + КонецЕсли; + КонецЦикла; + + Если Макет.ВысотаТаблицы >= НачалоОбласти Тогда + Область = Макет.Область(НачалоОбласти, , Макет.ВысотаТаблицы); + ОбластиДляОбработки.Добавить(Область); + КонецЕсли; + + Для Каждого Область Из ОбластиДляОбработки Цикл // ОбластьЯчеекТабличногоДокумента + ОписаниеОбластей = РазделитьНаОбласти(Макет, Область, Таблицы); + ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(ОбластиТаблиц, ОписаниеОбластей.ОбластиТаблиц); + УсловиеВывода = ""; + Если Макет.Области.Найти(Область.Имя) <> Неопределено Тогда + УсловиеВывода = Область.ПараметрРасшифровки; + КонецЕсли; + Для Каждого ИдентификаторОбласти Из ОписаниеОбластей.ВсеОбласти Цикл + ВсеОбласти.Добавить(ИдентификаторОбласти, УсловиеВывода); + КонецЦикла; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ВсеОбласти", ВсеОбласти); + Результат.Вставить("ОбластиТаблиц", ОбластиТаблиц); + + Возврат Результат; + +КонецФункции + +Функция РазделитьНаОбласти(Макет, Область, Таблицы) + + ВсеОбласти = Новый Массив; + ОбластиТаблиц = Новый Соответствие; + + НачалоОбласти = Область.Верх; + ТекущаяТаблица = ""; + ПредыдущаяТаблица = ""; + + Для НомерСтроки = Область.Верх По Область.Низ Цикл + ОбластьСтроки = Макет.Область(НомерСтроки, , НомерСтроки); + ТекущаяТаблица = ИмяТаблицыВОбластиМакета(Макет, ОбластьСтроки, Таблицы); + + Если ПредыдущаяТаблица <> ТекущаяТаблица И НомерСтроки > НачалоОбласти Тогда + ИдентификаторОбласти = "R" + XMLСтрока(НачалоОбласти) + ":R" + XMLСтрока(НомерСтроки - 1); + ВсеОбласти.Добавить(ИдентификаторОбласти); + + Если ЗначениеЗаполнено(ПредыдущаяТаблица) Тогда + ОбластиТаблиц.Вставить(ИдентификаторОбласти, ПредыдущаяТаблица); + КонецЕсли; + + НачалоОбласти = НомерСтроки; + КонецЕсли; + + ПредыдущаяТаблица = ТекущаяТаблица; + КонецЦикла; + + ИдентификаторОбласти = "R" + XMLСтрока(НачалоОбласти) + ":R" + Область.Низ; + + Если ЗначениеЗаполнено(ТекущаяТаблица) Тогда + ОбластиТаблиц.Вставить(ИдентификаторОбласти, ПредыдущаяТаблица); + КонецЕсли; + ВсеОбласти.Добавить(ИдентификаторОбласти); + + Результат = Новый Структура; + Результат.Вставить("ВсеОбласти", ВсеОбласти); + Результат.Вставить("ОбластиТаблиц", ОбластиТаблиц); + + Возврат Результат; + +КонецФункции + +Функция ИмяТаблицыВОбластиМакета(Макет, Область, Таблицы) + + ИмяТаблицы = ""; + Для НомерСтроки = Область.Верх По Область.Низ Цикл + Для НомерСтолбца = 1 По Макет.ШиринаТаблицы Цикл + Область = Макет.Область(НомерСтроки, НомерСтолбца, НомерСтроки, НомерСтолбца); + + Для Каждого Таблица Из Таблицы Цикл + СтрокаПоиска = "[" + Таблица + "."; + Если СтрНайти(Область.Текст, СтрокаПоиска) Тогда + ИмяТаблицы = Таблица; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ЗначениеЗаполнено(ИмяТаблицы) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Если ЗначениеЗаполнено(ИмяТаблицы) Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат ИмяТаблицы; + +КонецФункции + +Функция ПоляМакета(Макет) + + Тексты = Новый Соответствие; + + ОбработанныеЯчейки = Новый Соответствие; + Для НомерСтроки = 1 По Макет.ВысотаТаблицы Цикл + Для НомерСтолбца = 1 По Макет.ШиринаТаблицы Цикл + ОбластьЯчейки = Макет.Область(НомерСтроки, НомерСтолбца, НомерСтроки, НомерСтолбца); + + ИдентификаторОбласти = ИдентификаторОбласти(ОбластьЯчейки); + Если ОбработанныеЯчейки[ИдентификаторОбласти] <> Неопределено Тогда + Продолжить; + КонецЕсли; + ОбработанныеЯчейки[ИдентификаторОбласти] = Истина; + + Если Не ЗначениеЗаполнено(ОбластьЯчейки.Текст) Тогда + Продолжить; + КонецЕсли; + + Тексты.Вставить(ОбластьЯчейки.Текст, Истина); + КонецЦикла; + КонецЦикла; + + Тексты.Вставить(Строка(Макет.ВерхнийКолонтитул.ТекстСлева), Истина); + Тексты.Вставить(Строка(Макет.ВерхнийКолонтитул.ТекстВЦентре), Истина); + Тексты.Вставить(Строка(Макет.ВерхнийКолонтитул.ТекстСправа), Истина); + + Тексты.Вставить(Строка(Макет.НижнийКолонтитул.ТекстСлева), Истина); + Тексты.Вставить(Строка(Макет.НижнийКолонтитул.ТекстВЦентре), Истина); + Тексты.Вставить(Строка(Макет.НижнийКолонтитул.ТекстСправа), Истина); + + Для Каждого Рисунок Из Макет.Рисунки Цикл + Тексты.Вставить(Рисунок.ПараметрРасшифровки, Истина); + КонецЦикла; + + Для Каждого Область Из Макет.Области Цикл + Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") + И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда + УсловиеВывода = Область.ПараметрРасшифровки; + Если ЗначениеЗаполнено(УсловиеВывода) Тогда + Тексты.Вставить(Область.ПараметрРасшифровки); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Результат = Новый Массив; + + Для Каждого Элемент Из Тексты Цикл + Текст = Элемент.Ключ; + ПараметрыТекста = НайтиПараметрыВТексте(Текст); + Для Каждого Выражение Из ПараметрыТекста Цикл + Выражение = Сред(Выражение, 2, СтрДлина(Выражение) - 2); + ЭлементыФормулы = КонструкторФормулСлужебный.ЭлементыФормулы(Выражение); + Для Каждого Операнд Из ЭлементыФормулы.Операнды Цикл + Операнд = ОчиститьКвадратныеСкобки(Операнд); + Если ЗначениеЗаполнено(Операнд) Тогда + Результат.Добавить(Операнд); + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция КоличествоСтрок(Таблица) Экспорт + + Если ТипЗнч(Таблица) = Тип("Соответствие") Тогда + Возврат Таблица.Количество(); + КонецЕсли; + + ВызватьИсключение НСтр("ru = 'Неверно указана таблица'"); + +КонецФункции + +// Возвращаемое значение: +// см. КонструкторФормулСлужебный.ОписаниеСписковПолей +// +Функция ОписаниеСписковПолей(ИсточникиДанныхПечати, Операторы = Неопределено, ИсточникДанных = Неопределено) Экспорт + + ОписаниеСписковПолей = КонструкторФормулСлужебный.ОписаниеСписковПолей(); + + ИсточникиДоступныхПолей = КонструкторФормулСлужебный.КоллекцияИсточниковДоступныхПолей(); + Для Каждого Элемент Из ИсточникиДанныхПечати Цикл + СхемаКомпоновкиДанных = Элемент.Значение; + ИдентификаторСхемыКомпоновкиДанных = Элемент.Представление; + ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); + ИсточникДоступныхПолей.КоллекцияПолей = КонструкторФормулСлужебный.КоллекцияПолей(СхемаКомпоновкиДанных); + ИсточникДоступныхПолей.СхемаКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных); + ИсточникДоступныхПолей.ИдентификаторСхемыКомпоновкиДанных = ИдентификаторСхемыКомпоновкиДанных; + ИсточникДоступныхПолей.ИсточникДанных = ИсточникДанных; + КонецЦикла; + + ОписаниеСпискаПолей = ОписаниеСписковПолей.Добавить(); + ОписаниеСпискаПолей.ИсточникиДоступныхПолей = ИсточникиДоступныхПолей; + ОписаниеСпискаПолей.СкобкиПредставлений = Истина; + ОписаниеСпискаПолей.ПриОпределенииИсточниковДоступныхПолей = "УправлениеПечатью"; + + Если Операторы <> Неопределено Тогда + ИсточникиДоступныхПолей = КонструкторФормулСлужебный.КоллекцияИсточниковДоступныхПолей(); + ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); + ИсточникДоступныхПолей.КоллекцияПолей = КонструкторФормулСлужебный.КоллекцияПолей(Операторы); + + ОписаниеСпискаПолей = ОписаниеСписковПолей.Добавить(); + ОписаниеСпискаПолей.ИсточникиДоступныхПолей = ИсточникиДоступныхПолей; + КонецЕсли; + + Возврат ОписаниеСписковПолей; + +КонецФункции + +Процедура ПриОпределенииИсточниковДоступныхПолей(ИмяИсточникаПолей, ИсточникиДоступныхПолей) Экспорт + + СхемыКомпоновкиДанных = СхемыКомпоновкиДанныхИсточникаПолей(ИмяИсточникаПолей); + Для Каждого Элемент Из СхемыКомпоновкиДанных Цикл + СхемаКомпоновкиДанных = Элемент.Значение; + ИдентификаторСхемыКомпоновкиДанных = Элемент.Представление; + ИсточникДоступныхПолей = ИсточникиДоступныхПолей.Добавить(); + ИсточникДоступныхПолей.ИсточникДанных = ИмяИсточникаПолей; + ИсточникДоступныхПолей.СхемаКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных); + ИсточникДоступныхПолей.ИдентификаторСхемыКомпоновкиДанных = ИдентификаторСхемыКомпоновкиДанных; + ИсточникДоступныхПолей.КоллекцияПолей = КонструкторФормул.КоллекцияПолей(СхемаКомпоновкиДанных); + ИсточникДоступныхПолей.Замещать = Истина; + КонецЦикла; + +КонецПроцедуры + +Функция СхемыКомпоновкиДанныхИсточникаПолей(ИмяИсточникаПолей, ВерхнийУровень = Ложь) + + ИсточникиПолей = Новый СписокЗначений; + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяИсточникаПолей); + Если ОбъектМетаданных <> Неопределено Тогда + Если ОбъектМетаданных.Макеты.Найти("ДанныеПечати") <> Неопределено Тогда + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()); + СхемаКомпоновкиДанных = МенеджерОбъекта.ПолучитьМакет("ДанныеПечати"); + Иначе + ТекстЗапроса = ТекстЗапроса(ОбъектМетаданных.ПолноеИмя()); + СхемаКомпоновкиДанных= СхемаКомпоновкиДанных(ТекстЗапроса); + КонецЕсли; + ИсточникиПолей.Добавить(СхемаКомпоновкиДанных, ОбъектМетаданных.ПолноеИмя()); + + СхемаКомпоновкиДанных = СхемаКомпоновкиДанныхКонтактнойИнформации(ОбъектМетаданных.ПолноеИмя()); + Если СхемаКомпоновкиДанных <> Неопределено Тогда + ИсточникиПолей.Добавить(СхемаКомпоновкиДанных, ОбъектМетаданных.ПолноеИмя() + ".КонтактнаяИнформация"); + КонецЕсли; + + СхемаКомпоновкиДанных = СхемаКомпоновкиДанныхДополнительныхРеквизитовИСведений(ОбъектМетаданных.ПолноеИмя()); + Если СхемаКомпоновкиДанных <> Неопределено Тогда + ИсточникиПолей.Добавить(СхемаКомпоновкиДанных, ОбъектМетаданных.ПолноеИмя() + ".ДополнительныеРеквизитыИСведения"); + КонецЕсли; + + КонецЕсли; + + Если ВерхнийУровень Тогда + ИсточникиПолей.Добавить(ПолучитьОбщийМакет("ДанныеПечатиОбщиеРеквизиты"), "ОбщиеРеквизиты"); + КонецЕсли; + + Если СтрЗаканчиваетсяНа(ИмяИсточникаПолей, ".Наименование") Или СтрЗаканчиваетсяНа(ИмяИсточникаПолей, ".НаименованиеДляПечати") Тогда + ИсточникиПолей.Добавить(ПолучитьОбщийМакет("ДанныеПечатиРегистрСимволов"), "ДанныеПечатиРегистрСимволов"); + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + МодульУправлениеПечатьюМультиязычность.ПриОпределенииИсточниковДанныхПечати(ИмяИсточникаПолей, ИсточникиПолей); + КонецЕсли; + + ИнтеграцияПодсистемБСП.ПриОпределенииИсточниковДанныхПечати(ИмяИсточникаПолей, ИсточникиПолей); + УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати(ИмяИсточникаПолей, ИсточникиПолей); + + Возврат ИсточникиПолей; + +КонецФункции + +Процедура ПриПодготовкеДанныхПечати(Объекты, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры) + + Если ИдентификаторСхемыКомпоновкиДанных = "ОбщиеРеквизиты" Тогда + ВнешниеНаборыДанных.Вставить("Данные", ОбщиеРеквизитыПечатныхФорм(Объекты)); + Возврат; + КонецЕсли; + + Если СтрЗаканчиваетсяНа(ИдентификаторСхемыКомпоновкиДанных, ".КонтактнаяИнформация") Тогда + ВнешниеНаборыДанных.Вставить("Данные", КонтактнаяИнформация( + Объекты, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры)); + Возврат; + КонецЕсли; + + Если СтрЗаканчиваетсяНа(ИдентификаторСхемыКомпоновкиДанных, ".ДополнительныеРеквизитыИСведения") Тогда + ВнешниеНаборыДанных.Вставить("Данные", ДополнительныеРеквизитыИСведения( + Объекты, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка)); + Возврат; + КонецЕсли; + + Если ИдентификаторСхемыКомпоновкиДанных = "ДанныеПечатиРегистрСимволов" Тогда + ВнешниеНаборыДанных.Вставить("Данные", ДанныеПечатиРегистрСимволов(Объекты)); + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + МодульУправлениеПечатьюМультиязычность.ПриПодготовкеДанныхПечати( + Объекты, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + КонецЕсли; + + ИнтеграцияПодсистемБСП.ПриПодготовкеДанныхПечати(Объекты, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + УправлениеПечатьюПереопределяемый.ПриПодготовкеДанныхПечати(Объекты, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры); + +КонецПроцедуры + +Функция ОбщиеРеквизитыПечатныхФорм(Объекты) + + ОбщиеРеквизиты = Новый Структура; + ОбщиеРеквизиты.Вставить("ТекущаяДата", ТекущаяДатаСеанса()); + ОбщиеРеквизиты.Вставить("ТекущийПользователь", Пользователи.ТекущийПользователь()); + ОбщиеРеквизиты.Вставить("ЗаголовокСистемы", ИмяЭтойИнформационнойБазы()); + ОбщиеРеквизиты.Вставить("АдресБазыВИнтернете", ОбщегоНазначения.АдресПубликацииИнформационнойБазыВИнтернете()); + ОбщиеРеквизиты.Вставить("АдресБазыВЛокальнойСети", ОбщегоНазначения.АдресПубликацииИнформационнойБазыВЛокальнойСети()); + ОбщиеРеквизиты.Вставить("ОсновнаяОрганизация", ""); + ОбщиеРеквизиты.Вставить("ОбратныйАдрес", ""); + ОбщиеРеквизиты.Вставить("ШтампЭП", ""); + + Результат = Новый ТаблицаЗначений(); + Результат.Колонки.Добавить("Ссылка"); + Для Каждого Реквизит Из ОбщиеРеквизиты Цикл + Результат.Колонки.Добавить(Реквизит.Ключ); + КонецЦикла; + + Для Каждого Объект Из Объекты Цикл + РеквизитыОбъекта = Результат.Добавить(); + ЗаполнитьЗначенияСвойств(РеквизитыОбъекта, ОбщиеРеквизиты); + РеквизитыОбъекта.Ссылка = Объект; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция СхемаКомпоновкиДанных(ТекстЗапроса) + + СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; + + ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); + ИсточникДанных.Имя = "ИсточникДанных1"; + ИсточникДанных.ТипИсточникаДанных = "local"; + + НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); + НаборДанных.ИсточникДанных = "ИсточникДанных1"; + НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; + НаборДанных.Запрос = ТекстЗапроса; + НаборДанных.Имя = "НаборДанных1"; + + Возврат СхемаКомпоновкиДанных; + +КонецФункции + +Функция ТекстЗапроса(ТипыИзменяемыхОбъектов, ОграничитьВыборку = Ложь) + + ОбъектыМетаданных = Новый Массив; + Для Каждого ИмяОбъекта Из СтрРазделить(ТипыИзменяемыхОбъектов, ",", Ложь) Цикл + ОбъектыМетаданных.Добавить(Метаданные.НайтиПоПолномуИмени(ИмяОбъекта)); + КонецЦикла; + + СтруктураОбъектов = ОбщиеРеквизитыОбъектов(ТипыИзменяемыхОбъектов); + + Результат = ""; + ПсевдонимТаблицы = "ПсевдонимЗаданнойТаблицы"; + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл + + Если Не ПустаяСтрока(Результат) Тогда + Результат = Результат + Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС; + КонецЕсли; + + ТекстЗапроса = ""; + + Для Каждого ИмяРеквизита Из СтруктураОбъектов.Реквизиты Цикл + Если Не ПустаяСтрока(ТекстЗапроса) Тогда + ТекстЗапроса = ТекстЗапроса + "," + Символы.ПС; + КонецЕсли; + ТекстЗапроса = ТекстЗапроса + ПсевдонимТаблицы + "." + ИмяРеквизита + " КАК " + ИмяРеквизита; + КонецЦикла; + + Для Каждого ТабличнаяЧасть Из СтруктураОбъектов.ТабличныеЧасти Цикл + ИмяТабличнойЧасти = ТабличнаяЧасть.Ключ; + ТекстЗапроса = ТекстЗапроса + "," + Символы.ПС + ПсевдонимТаблицы + "." + ИмяТабличнойЧасти + ".("; + + СтрокаРеквизитов = "НомерСтроки"; + РеквизитыТабличнойЧасти = ТабличнаяЧасть.Значение; + Для Каждого ИмяРеквизита Из РеквизитыТабличнойЧасти Цикл + Если Не ПустаяСтрока(СтрокаРеквизитов) Тогда + СтрокаРеквизитов = СтрокаРеквизитов + "," + Символы.ПС; + КонецЕсли; + СтрокаРеквизитов = СтрокаРеквизитов + ИмяРеквизита; + КонецЦикла; + ТекстЗапроса = ТекстЗапроса + СтрокаРеквизитов +" + |)"; + КонецЦикла; + + ТекстЗапроса = "ВЫБРАТЬ " + ?(ОграничитьВыборку, "ПЕРВЫЕ 1001 ", "") //@query-part + + ТекстЗапроса + Символы.ПС + " + |ИЗ + | "+ ОбъектМетаданных.ПолноеИмя() + " КАК " + ПсевдонимТаблицы; + + Результат = Результат + ТекстЗапроса; + КонецЦикла; + + + Возврат Результат; + +КонецФункции + +Функция ОбщиеРеквизитыОбъектов(ТипыОбъектов) Экспорт + + ОбъектыМетаданных = Новый Массив; + Для Каждого ИмяОбъекта Из СтрРазделить(ТипыОбъектов, ",", Ложь) Цикл + ОбъектыМетаданных.Добавить(Метаданные.НайтиПоПолномуИмени(ИмяОбъекта)); + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("Реквизиты", Новый Массив); + Результат.Вставить("ТабличныеЧасти", Новый Структура); + + Если ОбъектыМетаданных.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + ОбщийСписокРеквизитов = СписокЭлементов(ОбъектыМетаданных[0].Реквизиты, Ложь); + Для Индекс = 1 По ОбъектыМетаданных.Количество() - 1 Цикл + ОбщийСписокРеквизитов = ПересечениеРеквизитов(ОбщийСписокРеквизитов, ОбъектыМетаданных[Индекс].Реквизиты); + КонецЦикла; + + СтандартныеРеквизиты = ОбъектыМетаданных[0].СтандартныеРеквизиты; + Для Индекс = 1 По ОбъектыМетаданных.Количество() - 1 Цикл + СтандартныеРеквизиты = ПересечениеРеквизитов(СтандартныеРеквизиты, ОбъектыМетаданных[Индекс].СтандартныеРеквизиты); + КонецЦикла; + Для Каждого Реквизит Из СтандартныеРеквизиты Цикл // ОписаниеСтандартногоРеквизита + Если Реквизит.Имя = "ИмяПредопределенныхДанных" + Или Реквизит.Имя = "Предопределенный" + Или Реквизит.Имя = "ПометкаУдаления" Тогда + Продолжить; + КонецЕсли; + ОбщийСписокРеквизитов.Добавить(Реквизит); + КонецЦикла; + + Результат.Реквизиты = СписокЭлементов(ОбщийСписокРеквизитов); + + ТабличныеЧасти = СписокЭлементов(ОбъектыМетаданных[0].ТабличныеЧасти); + Для Индекс = 1 По ОбъектыМетаданных.Количество() - 1 Цикл + ТабличныеЧасти = ПересечениеМножеств(ТабличныеЧасти, СписокЭлементов(ОбъектыМетаданных[Индекс].ТабличныеЧасти)); + КонецЦикла; + + Для Каждого ИмяТабличнойЧасти Из ТабличныеЧасти Цикл + РеквизитыТабличнойЧасти = СписокЭлементов(ОбъектыМетаданных[0].ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты, Ложь); + Для Индекс = 1 По ОбъектыМетаданных.Количество() - 1 Цикл + РеквизитыТабличнойЧасти = ПересечениеРеквизитов(РеквизитыТабличнойЧасти, ОбъектыМетаданных[Индекс].ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты); + КонецЦикла; + Если РеквизитыТабличнойЧасти.Количество() > 0 Тогда + Результат.ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, СписокЭлементов(РеквизитыТабличнойЧасти)); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + + +Функция ПересечениеМножеств(Множество1, Множество2) Экспорт + + Результат = Новый Массив; + + Для Каждого Элемент Из Множество2 Цикл + Индекс = Множество1.Найти(Элемент); + Если Индекс <> Неопределено Тогда + Результат.Добавить(Элемент); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ПересечениеРеквизитов(КоллекцияРеквизитов1, КоллекцияРеквизитов2) + + Результат = Новый Массив; + + Для Каждого Реквизит2 Из КоллекцияРеквизитов2 Цикл + Для Каждого Реквизит1 Из КоллекцияРеквизитов1 Цикл + Если Реквизит1.Имя = Реквизит2.Имя + И (Реквизит1.Тип = Реквизит2.Тип Или Реквизит1.Имя = "Ссылка") Тогда + Результат.Добавить(Реквизит1); + Прервать; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Параметры: +// Коллекция - Массив из ОбъектМетаданныхРеквизит +// - Массив из ОбъектМетаданныхТабличнаяЧасть +// ТолькоИмена - Булево +// Возвращаемое значение: +// Массив +// +Функция СписокЭлементов(Коллекция, ТолькоИмена = Истина) + Результат = Новый Массив; + Для Каждого Элемент Из Коллекция Цикл + Если ТолькоИмена Тогда + Результат.Добавить(Элемент.Имя); + Иначе + Результат.Добавить(Элемент); + КонецЕсли; + КонецЦикла; + Возврат Результат; +КонецФункции + +Функция ИмяЭтойИнформационнойБазы() + + УстановитьПривилегированныйРежим(Истина); + Результат = Константы.ЗаголовокСистемы.Получить(); + Возврат ?(ПустаяСтрока(Результат), Метаданные.Синоним, Результат); + +КонецФункции + +Процедура ДобавитьКомандыПечати(КомандыПечати, ОбъектМетаданных) + + Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных, Ложь); + Если Владелец = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФорм.Идентификатор, + | МакетыПечатныхФорм.Представление КАК Представление, + | МакетыПечатныхФорм.УсловиеВидимости КАК УсловияВидимости + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + |ГДЕ + | МакетыПечатныхФорм.ИсточникДанных = &Владелец + | И МакетыПечатныхФорм.Используется + | И НЕ МакетыПечатныхФорм.ПометкаУдаления"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Владелец", Владелец); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + КомандаПечати = КомандыПечати.Добавить(); + ЗаполнитьЗначенияСвойств(КомандаПечати, Выборка); + КомандаПечати.Идентификатор = "ПФ_" + Строка(КомандаПечати.Идентификатор); + КомандаПечати.МенеджерПечати = "УправлениеПечатью"; + + УсловияВидимости = Выборка.УсловияВидимости.Получить(); + Если ЗначениеЗаполнено(УсловияВидимости) Тогда + Для Каждого Условие Из УсловияВидимости Цикл + ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, Условие.Реквизит, Условие.Значение, Условие.ВидСравнения); + КонецЦикла; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Функция ФорматПоУмолчанию(ОписаниеТипов) + + Формат = ""; + Если ОписаниеТипов = Неопределено Или ОписаниеТипов.Типы().Количество() <> 1 Тогда + Возврат Формат; + КонецЕсли; + + Тип = ОписаниеТипов.Типы()[0]; + + Если Тип = Тип("Число") Тогда + Формат = СтрШаблон("ЧЦ=%1; ЧДЦ=%2", + ОписаниеТипов.КвалификаторыЧисла.Разрядность, + ОписаниеТипов.КвалификаторыЧисла.РазрядностьДробнойЧасти); + ИначеЕсли Тип = Тип("Дата") Тогда + Если ОписаниеТипов.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда + Формат = "ДЛФ=D"; + Иначе + Формат = "ДЛФ=DT"; + КонецЕсли; + ИначеЕсли Тип = Тип("Булево") Тогда + Формат = НСтр("ru = 'БЛ=Нет; БИ=Да'"); + КонецЕсли; + + Возврат Формат; + +КонецФункции + +Функция СхемаКомпоновкиДанныхИзТаблицыЗначений(ТаблицаЗначений) + + Возврат КонструкторФормулСлужебный.СхемаКомпоновкиДанныхИзТаблицыЗначений(ТаблицаЗначений); + +КонецФункции + +Функция СхемаКомпоновкиДанныхИзДереваЗначений(ДеревоЗначений) + + Возврат КонструкторФормулСлужебный.СхемаКомпоновкиДанныхИзДереваЗначений(ДеревоЗначений); + +КонецФункции + +Функция КартинкаИзФайла(Файл) + + Результат = Новый Картинка; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда + МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); + + ТипыПрисоединенныхФайлов = МодульРаботаСФайламиСлужебный.ТипыПрисоединенныхФайлов(); + Если ЗначениеЗаполнено(Файл) И ТипыПрисоединенныхФайлов.СодержитТип(ТипЗнч(Файл)) Тогда + ДвоичныеДанные = МодульРаботаСФайлами.ДвоичныеДанныеФайла(Файл, Ложь); + Если ДвоичныеДанные <> Неопределено Тогда + Результат = Новый Картинка(ДвоичныеДанные, Истина); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Возвращаемое значение: +// ТабличныйДокумент, ДвоичныеДанные - макет. +// +Функция ПредставлениеМакета(ПутьКМакету, КодЯзыка) + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); + ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + + НайденныйМакет = Справочники.МакетыПечатныхФорм.СсылкаМакета(ПутьКМакету); + Если НайденныйМакет <> Неопределено Тогда + Возврат Строка(НайденныйМакет); + КонецЕсли; + + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()]; + ЧастиПути.Удалить(ЧастиПути.ВГраница()); + ИмяОбъекта = СтрСоединить(ЧастиПути, "."); + + ИменаПоиска = ИменаМакета(ИмяМакета, КодЯзыка); + ЭтоОбщийМакет = СтрРазделить(ИмяОбъекта, ".").Количество() = 1; + КоллекцияМакетов = Метаданные.ОбщиеМакеты; + + Если Не ЭтоОбщийМакет Тогда + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта); + Если ОбъектМетаданных = Неопределено Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + КоллекцияМакетов = ОбъектМетаданных.Макеты; + КонецЕсли; + + Для Каждого ИмяПоиска Из ИменаПоиска Цикл + НайденныйМакет = КоллекцияМакетов.Найти(ИмяПоиска); + Если НайденныйМакет <> Неопределено Тогда + Возврат НайденныйМакет.Представление(); + КонецЕсли; + КонецЦикла; + + ВызватьИсключение ТекстОшибки; + +КонецФункции + +Функция ДоступныеДляПереводаМакеты() Экспорт + + ДоступныеДляПереводаМакеты = Новый Соответствие; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + ДоступныеДляПереводаМакеты = МодульУправлениеПечатьюМультиязычность.ДоступныеДляПереводаМакеты(); + КонецЕсли; + + Возврат ДоступныеДляПереводаМакеты; + +КонецФункции + +Функция ДоступенПереводМакета(ПутьКМакету) Экспорт + + ОбъектМетаданныхМакета = ОбъектМетаданныхМакета(ПутьКМакету); + Если ОбъектМетаданныхМакета = Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат ДоступныеДляПереводаМакеты()[ОбъектМетаданныхМакета] = Истина; + +КонецФункции + +Функция СхемаКомпоновкиДанныхКонтактнойИнформации(ИмяОбъектаМетаданных) + + ВидыКонтактнойИнформации = Неопределено; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + + ВидыКонтактнойИнформации = МодульУправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта( + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяОбъектаМетаданных).ПустаяСсылка()); + КонецЕсли; + + Если Не ЗначениеЗаполнено(ВидыКонтактнойИнформации) Тогда + Возврат Неопределено; + КонецЕсли; + + СписокПолей = ТаблицаПолейДанныхПечати(); + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = "Ссылка"; + Поле.Представление = НСтр("ru = 'Ссылка'"); + Поле.ТипЗначения = Новый ОписаниеТипов(); + + Для Каждого ВидКонтактнойИнформации Из ВидыКонтактнойИнформации Цикл + Если Не ЗначениеЗаполнено(ВидКонтактнойИнформации.ИдентификаторДляФормул) Тогда + Продолжить; + КонецЕсли; + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = ВидКонтактнойИнформации.ИдентификаторДляФормул; + Поле.Представление = ВидКонтактнойИнформации.Наименование; + Поле.ТипЗначения = Новый ОписаниеТипов("Строка"); + КонецЦикла; + + Возврат СхемаКомпоновкиДанныхПечати(СписокПолей); + +КонецФункции + +Функция СхемаКомпоновкиДанныхДополнительныхРеквизитовИСведений(ИмяОбъектаМетаданных) + + СписокПолей = ТаблицаПолейДанныхПечати(); + СписокПолей.Колонки.Добавить("Свойство"); + + ВидыСвойств = Новый Массив; + ВидыСвойств.Добавить("ДополнительныеРеквизиты"); + ВидыСвойств.Добавить("ДополнительныеСведения"); + + МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный"); + Если МодульУправлениеСвойствамиСлужебный <> Неопределено Тогда + Для Каждого ВидСвойства Из ВидыСвойств Цикл + СписокСвойств = МодульУправлениеСвойствамиСлужебный.СписокСвойствДляВидаОбъектов(ИмяОбъектаМетаданных, ВидСвойства); + Если СписокСвойств <> Неопределено Тогда + Для Каждого Элемент Из СписокСвойств Цикл + Поле = СписокПолей.Добавить(); + Поле.Свойство = Элемент.Свойство; + Поле.Представление = Элемент.Наименование; + Поле.ТипЗначения = Элемент.ТипЗначения; + Поле.Формат = Элемент.ФорматСвойства; + КонецЦикла; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Свойства = СписокПолей.ВыгрузитьКолонку("Свойство"); + ИдентификаторыДляФормул = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Свойства, "ИдентификаторДляФормул"); + + Для Каждого СтрокаТаблицы Из СписокПолей Цикл + СтрокаТаблицы.Идентификатор = ИдентификаторыДляФормул[СтрокаТаблицы.Свойство]; + КонецЦикла; + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = "Ссылка"; + Поле.Представление = НСтр("ru = 'Ссылка'"); + Поле.ТипЗначения = Новый ОписаниеТипов(); + + Возврат СхемаКомпоновкиДанныхПечати(СписокПолей); + +КонецФункции + +// Получает контактную информацию для списка однотипных объектов. +// +Функция КонтактнаяИнформация(ИсточникиДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, ДополнительныеПараметры) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + Иначе + Возврат Неопределено; + КонецЕсли; + + Если Не СтрЗаканчиваетсяНа(ИдентификаторСхемыКомпоновкиДанных, "КонтактнаяИнформация") Тогда + Возврат Неопределено; + КонецЕсли; + + ЧастиСтроки = СтрРазделить(ИдентификаторСхемыКомпоновкиДанных, ".", Истина); + ЧастиСтроки.Удалить(ЧастиСтроки.ВГраница()); + + ИмяОбъектаМетаданных = СтрСоединить(ЧастиСтроки, "."); + + Данные = Новый ТаблицаЗначений(); + Данные.Колонки.Добавить("Ссылка"); + + ВидыКонтактнойИнформацииОбъекта = МодульУправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта( + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяОбъектаМетаданных).ПустаяСсылка()); + + ИдентификаторыДляФормул = Новый Соответствие(); + Для Каждого ВидКонтактнойИнформации Из ВидыКонтактнойИнформацииОбъекта Цикл + Идентификатор = ВидКонтактнойИнформации.ИдентификаторДляФормул; + Если Не ЗначениеЗаполнено(Идентификатор) Тогда + Продолжить; + КонецЕсли; + ИдентификаторыДляФормул.Вставить(ВидКонтактнойИнформации.Ссылка, Идентификатор); + Данные.Колонки.Добавить(Идентификатор); + КонецЦикла; + + Владельцы = Новый Массив; + Для Каждого ОписаниеИсточникаДанных Из ДополнительныеПараметры.ОписанияИсточниковДанных Цикл + Владелец = ОписаниеИсточникаДанных.Владелец; + Если ЗначениеЗаполнено(Владелец) И ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Владелец)) + И ОбщегоНазначения.ЭтоДокумент(Владелец.Метаданные()) Тогда + Владельцы.Добавить(Владелец); + КонецЕсли; + КонецЦикла; + + Если ЗначениеЗаполнено(Владельцы) Тогда + ДополнительныеПараметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Истина; + ИсточникиДанных = Владельцы; + КонецЕсли; + + ДатыСведений = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Владельцы, "Дата"); + + Для Каждого ОписаниеИсточникаДанных Из ДополнительныеПараметры.ОписанияИсточниковДанных Цикл + Объект = ОписаниеИсточникаДанных.Значение; + + СтрокаТаблицы = Данные.Добавить(); + СтрокаТаблицы.Ссылка = Объект; + Если ДополнительныеПараметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных Тогда + СтрокаТаблицы.Ссылка = ОписаниеИсточникаДанных.Владелец; + КонецЕсли; + + ДатаСведений = ДатыСведений[ОписаниеИсточникаДанных.Владелец]; + Если Не ЗначениеЗаполнено(ДатаСведений) Тогда + ДатаСведений = ТекущаяДатаСеанса(); + КонецЕсли; + + Отбор = МодульУправлениеКонтактнойИнформацией.ОтборКонтактнойИнформации(); + Отбор.КодЯзыка = КодЯзыка; + Отбор.Дата = ДатаСведений; + + КонтактнаяИнформацияОбъектов = МодульУправлениеКонтактнойИнформацией.КонтактнаяИнформация( + ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект), Отбор); + + Для Каждого КонтактнаяИнформацияОбъекта Из КонтактнаяИнформацияОбъектов Цикл + Идентификатор = ИдентификаторыДляФормул[КонтактнаяИнформацияОбъекта.Вид]; + Если Не ЗначениеЗаполнено(Идентификатор) Тогда + Продолжить; + КонецЕсли; + + СтрокаТаблицы[Идентификатор] = КонтактнаяИнформацияОбъекта.Представление; + КонецЦикла; + + КонецЦикла; + + Возврат Данные; + +КонецФункции + +// Получает дополнительные реквизиты и сведения для списка однотипных объектов. +// +Функция ДополнительныеРеквизитыИСведения(Объекты, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка) + + Данные = Новый ТаблицаЗначений(); + Данные.Колонки.Добавить("Ссылка"); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + Возврат Данные; + КонецЕсли; + + Если Не СтрЗаканчиваетсяНа(ИдентификаторСхемыКомпоновкиДанных, "ДополнительныеРеквизитыИСведения") Тогда + Возврат Неопределено; + КонецЕсли; + + ЧастиСтроки = СтрРазделить(ИдентификаторСхемыКомпоновкиДанных, ".", Истина); + ЧастиСтроки.Удалить(ЧастиСтроки.ВГраница()); + + ИмяОбъектаМетаданных = СтрСоединить(ЧастиСтроки, "."); + + ВидыСвойств = Новый Массив; + ВидыСвойств.Добавить("ДополнительныеРеквизиты"); + ВидыСвойств.Добавить("ДополнительныеСведения"); + + СписокСвойств = Новый Массив; + + МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный"); + Для Каждого ВидСвойства Из ВидыСвойств Цикл + Свойства = МодульУправлениеСвойствамиСлужебный.СписокСвойствДляВидаОбъектов(ИмяОбъектаМетаданных, ВидСвойства).ВыгрузитьКолонку("Свойство"); + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СписокСвойств, Свойства); + КонецЦикла; + + ИдентификаторыДляФормул = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(СписокСвойств, "ИдентификаторДляФормул"); + + Для Каждого Свойство Из СписокСвойств Цикл + Идентификатор = ИдентификаторыДляФормул[Свойство]; + Если Не ЗначениеЗаполнено(Идентификатор) Тогда + Продолжить; + КонецЕсли; + + Данные.Колонки.Добавить(Идентификатор); + КонецЦикла; + + Для Каждого Объект Из Объекты Цикл + СтрокаТаблицы = Данные.Добавить(); + СтрокаТаблицы.Ссылка = Объект; + КонецЦикла; + + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + ЗначенияСвойствОбъектов = МодульУправлениеСвойствами.ЗначенияСвойств(Объекты, , , , КодЯзыка); + + Для Каждого ЗначенияСвойствОбъекта Из ЗначенияСвойствОбъектов Цикл + ИмяСвойства = ЗначенияСвойствОбъекта.ИмяСвойства; + Объект = ЗначенияСвойствОбъекта.ВладелецСвойств; + + НайденныеСтроки = Данные.НайтиСтроки(Новый Структура("Ссылка", Объект)); + Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл + СтрокаТаблицы[ИмяСвойства] = ЗначенияСвойствОбъекта.Значение; + КонецЦикла; + КонецЦикла; + + Возврат Данные; + +КонецФункции + +Функция СтрокаЛатиницей(Строка) Экспорт + + Возврат СтроковыеФункции.СтрокаЛатиницей(Строка); + +КонецФункции + +Функция ДанныеПечатиРегистрСимволов(Объекты) + + ДанныеПечати = Новый ТаблицаЗначений(); + ДанныеПечати.Колонки.Добавить("Ссылка"); + ДанныеПечати.Колонки.Добавить("ВсеПрописные"); + ДанныеПечати.Колонки.Добавить("ВсеСтрочные"); + + Для Каждого Объект Из Объекты Цикл + НоваяСтрока = ДанныеПечати.Добавить(); + НоваяСтрока.Ссылка = Объект; + НоваяСтрока.ВсеПрописные = ВРег(Объект); + НоваяСтрока.ВсеСтрочные = НРег(Объект); + КонецЦикла; + + Возврат ДанныеПечати; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl index 9dd5020ba..39c4b62c4 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl @@ -862,11 +862,18 @@ КонецФункции +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// Команда - КомандаФормы +// Процедура ПереключитьЯзык(Форма, Команда) Экспорт Параметры = Новый Структура; Параметры.Вставить("Форма", Форма); - Параметры.Вставить("Команда", Команда); + Параметры.Вставить("ВыбранныйЯзык", Сред(Команда.Имя, СтрДлина("Язык_") + 1)); + + КнопкаФормы = Форма.Элементы[Команда.Имя]; // КнопкаФормы + Параметры.Вставить("Заголовок", КнопкаФормы.Заголовок); Если Форма.Модифицированность Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ПриПереключенииЯзыка", ЭтотОбъект, Параметры); @@ -883,6 +890,12 @@ КонецПроцедуры +Функция ИдентификаторОбласти(Область) Экспорт + + Возврат УправлениеПечатьюКлиентСервер.ИдентификаторОбласти(Область); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -911,11 +924,11 @@ КонецЕсли; Форма = Параметры.Форма; // ФормаКлиентскогоПриложения - - Команда = Параметры.Команда; // КомандаФормы - + ВыбранныйЯзык = Параметры.ВыбранныйЯзык; + Заголовок = Параметры.Заголовок; - ВыбранныйЯзык = Сред(Команда.Имя, СтрДлина("Язык_") + 1); Форма.ТекущийЯзык = ВыбранныйЯзык; - Форма.Элементы.Язык.Заголовок = Форма.Элементы[Команда.Имя].Заголовок; + Форма.Элементы.Язык.Заголовок = Заголовок; Форма.Модифицированность = Ложь; ОписаниеОповещения = Новый ОписаниеОповещения("Подключаемый_ПриПереключенииЯзыка", Форма); diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиентСервер/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиентСервер/Module.bsl index 08efd8661..b7561c1c4 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюКлиентСервер/Module.bsl @@ -39,4 +39,18 @@ КонецФункции +Функция ИдентификаторОбласти(Область) Экспорт + + КоординатыОбласти = Новый Массив; + КоординатыОбласти.Добавить(Формат(Область.Верх, "ЧГ=0")); + КоординатыОбласти.Добавить(Формат(Область.Лево, "ЧГ=0")); + КоординатыОбласти.Добавить(Формат(Область.Низ, "ЧГ=0")); + КоординатыОбласти.Добавить(Формат(Область.Право, "ЧГ=0")); + + ИдентификаторОбласти = СтрСоединить(КоординатыОбласти, ":"); + + Возврат ИдентификаторОбласти; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеПечатьюМультиязычность/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюМультиязычность/Module.bsl index ac0ebd21f..1844cf604 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюМультиязычность/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюМультиязычность/Module.bsl @@ -48,6 +48,29 @@ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету); ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина); + + ЯзыкиПечатныхФорм = ДоступныеЯзыки(); + Идентификатор = ЧастиПути[ЧастиПути.ВГраница()]; + + Если СтрНачинаетсяС(Идентификатор, "ПФ_") Тогда + Идентификатор = Сред(Идентификатор, 4); + Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Идентификатор) Тогда + ЯзыкиМакета = Справочники.МакетыПечатныхФорм.ЯзыкиМакета(Новый УникальныйИдентификатор(Идентификатор)); + Если Не ЗначениеЗаполнено(ЯзыкиМакета) Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + + Результат = Новый Массив; + Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл + Если ЯзыкиМакета.Найти(КодЯзыка) <> Неопределено Тогда + Результат.Добавить(КодЯзыка); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + КонецЕсли; + КонецЕсли; + Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -56,7 +79,6 @@ ЧастиПути.Удалить(ЧастиПути.ВГраница()); ИмяОбъекта = СтрСоединить(ЧастиПути, "."); - ЯзыкиПечатныхФорм = ДоступныеЯзыки(); Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл Если СтрЗаканчиваетсяНа(ИмяМакета, "_" + КодЯзыка) Тогда ИмяМакета = Лев(ИмяМакета, СтрДлина(ИмяМакета) - СтрДлина(КодЯзыка) - 1); @@ -210,7 +232,7 @@ Если Отбор.Количество() < 2 Тогда Возврат; КонецЕсли; - + Форма.ТекущийЯзык = ТекущийЯзык; ДоступныеЯзыки = ДоступныеЯзыки(ИспользоватьРегиональныеПредставленияЯзыков); @@ -254,4 +276,128 @@ КонецФункции +Функция ДоступныеДляПереводаМакеты() Экспорт + + Макеты = Новый Массив; + УправлениеПечатьюМультиязычностьПереопределяемый.ПриОпределенииДоступныхДляПереводаМакетов(Макеты); + + Результат = Новый Соответствие; + Для Каждого Макет Из Макеты Цикл + Результат.Вставить(Макет, Истина); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ДоступенПереводМакета(ПутьКМакету) Экспорт + + ОбъектМетаданныхМакета = УправлениеПечатью.ОбъектМетаданныхМакета(ПутьКМакету); + Если ОбъектМетаданныхМакета = Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат ДоступныеДляПереводаМакеты()[ОбъектМетаданныхМакета] = Истина; + +КонецФункции + +// См. УправлениеПечатьюПереопределяемый.ПриОпределенииИсточниковДанныхПечати +Процедура ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати) Экспорт + + ЧастиСтроки = СтрРазделить(Объект, ".", Истина); + Если ЧастиСтроки.Количество() = 3 Тогда + ИмяРеквизита = ЧастиСтроки[ЧастиСтроки.ВГраница()]; + ЧастиСтроки.Удалить(ЧастиСтроки.ВГраница()); + ИмяОбъектаМетаданных = СтрСоединить(ЧастиСтроки, "."); + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаМетаданных); + + МультиязычныеРеквизитыОбъекта = МультиязычностьСервер.МультиязычныеРеквизитыОбъекта(ОбъектМетаданных); + Если МультиязычныеРеквизитыОбъекта[ИмяРеквизита] = Истина Тогда + ИсточникиДанныхПечати.Добавить(СхемаДанныеПечатиМультиязычныеРеквизиты(), "ДанныеПечатиМультиязычныеРеквизиты"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// См. УправлениеПечатьюПереопределяемый.ПриПодготовкеДанныхПечати +Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, + ДополнительныеПараметры) Экспорт + + Если ИдентификаторСхемыКомпоновкиДанных = "ДанныеПечатиМультиязычныеРеквизиты" Тогда + ДополнительныеПараметры.ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных = Истина; + ВнешниеНаборыДанных.Вставить("Данные", ДанныеПечатиМультиязычныеРеквизиты(ДополнительныеПараметры.ОписанияИсточниковДанных)); + Возврат; + КонецЕсли; + +КонецПроцедуры + #КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СхемаДанныеПечатиМультиязычныеРеквизиты() + + СписокПолей = УправлениеПечатью.ТаблицаПолейДанныхПечати(); + + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = "Ссылка"; + Поле.Представление = НСтр("ru = 'Ссылка'"); + Поле.ТипЗначения = Новый ОписаниеТипов(); + + ДоступныеЯзыки = ДоступныеЯзыки(); + Для Индекс = 0 По ДоступныеЯзыки.ВГраница() Цикл + КодЯзыка = ДоступныеЯзыки[Индекс]; + Поле = СписокПолей.Добавить(); + Поле.Идентификатор = КодЯзыка; + Поле.Представление = ПредставлениеЯзыка(КодЯзыка); + Поле.ТипЗначения = Новый ОписаниеТипов("Строка"); + Поле.Порядок = Индекс + 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..4784b218a --- /dev/null +++ b/SSL/src/CommonModules/УправлениеПечатьюМультиязычностьПереопределяемый/Module.bsl @@ -0,0 +1,22 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Определяет макеты печатных форм, в которых поддерживается перевод на другие языки. +// +// Параметры: +// Макеты - Массив из ОбъектМетаданныхМакет +// +Процедура ПриОпределенииДоступныхДляПереводаМакетов(Макеты) Экспорт + + + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеПечатьюМультиязычностьПереопределяемый/УправлениеПечатьюМультиязычностьПереопределяемый.mdo b/SSL/src/CommonModules/УправлениеПечатьюМультиязычностьПереопределяемый/УправлениеПечатьюМультиязычностьПереопределяемый.mdo new file mode 100644 index 000000000..54cf9e7ed --- /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 4ebfd4e2b..2dca8ab2c 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl @@ -288,6 +288,41 @@ // Процедура ПечатьДокументовПриВыполненииКоманды(Форма, ДополнительныеПараметры) Экспорт +КонецПроцедуры + +// Определяет используемый макет данных печати объектов метаданных и их полей. +// +// Параметры: +// Объект - Строка - полное имя объекта метаданных либо имя поля из макета "ДанныеПечати" объекта метаданных +// в формате "ПолноеИмяОбъектаМетаданных.ИмяПоля". +// ИсточникиДанныхПечати - СписокЗначений: +// * Значение - СхемаКомпоновкиДанных - схемы данных печати. +// * Представление - Строка - идентификатор схемы, используется при получении данных. +// * Пометка -Булево - Истина, если в качестве дополнительного ключевого поля выступает владелец источника данных. +// +Процедура ПриОпределенииИсточниковДанныхПечати(Объект, ИсточникиДанныхПечати) Экспорт + + + +КонецПроцедуры + +// Подготавливает данные печати. +// +// Параметры: +// ИсточникиДанных - Массив - объекты, для которых формируются данные печати. +// ВнешниеНаборыДанных - Структура - коллекция наборов данных для передачи в процессор компоновки данных. +// ИдентификаторСхемыКомпоновкиДанных - Строка - идентификатор СКД, указанный в ПриОпределенииИсточниковДанныхПечати. +// КодЯзыка - Строка - язык, на котором требуется подготовить данные печати. +// ДополнительныеПараметры - Структура: +// * ОписанияИсточниковДанных - ТаблицаЗначений - дополнительные сведения об объектах, для которых формируются данные печати. +// * ДанныеИсточниковСгруппированыПоВладельцуИсточникаДанных - Булево - указывает на то, что в результате компоновки +// данные печати сгруппированы не по объектам печати, а по их владельцам в схеме данных печати. +// +Процедура ПриПодготовкеДанныхПечати(ИсточникиДанных, ВнешниеНаборыДанных, ИдентификаторСхемыКомпоновкиДанных, КодЯзыка, + ДополнительныеПараметры) Экспорт + + + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеСвойствамиПереопределяемый/Module.bsl b/SSL/src/CommonModules/УправлениеСвойствамиПереопределяемый/Module.bsl index 308ba59ec..e5d0617d9 100644 --- a/SSL/src/CommonModules/УправлениеСвойствамиПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/УправлениеСвойствамиПереопределяемый/Module.bsl @@ -114,6 +114,40 @@ +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов +// +// Параметры: +// Настройки - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлементов.Настройки +// +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов +// +// Параметры: +// КодыЯзыков - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.КодыЯзыков +// Элементы - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.Элементы +// ТабличныеЧасти - см. ОбновлениеИнформационнойБазыПереопределяемый.ПриНачальномЗаполненииЭлементов.ТабличныеЧасти +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + + +КонецПроцедуры + +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриНастройкеНачальногоЗаполненияЭлемента +// +// Параметры: +// Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект. +// Данные - СтрокаТаблицыЗначений - данные заполнения объекта. +// ДополнительныеПараметры - Структура: +// * ПредопределенныеДанные - ТаблицаЗначений - данные заполненные в процедуре ПриНачальномЗаполненииЭлементов. +// +Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl index a49487ed6..c3d26d3cd 100644 --- a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl @@ -15,7 +15,7 @@ // ВидСвойств - Строка - "ДополнительныеРеквизиты" или "ДополнительныеСведения". // // Возвращаемое значение: -// ТаблицаЗначений - свойство, Наименование, ТипЗначения. +// ТаблицаЗначений - свойство, Наименование, ТипЗначения, ФорматСвойства. // Неопределено - для указанного вида объекта нет набора свойств. // Функция СписокСвойствДляВидаОбъектов(ВидОбъектов, Знач ВидСвойств) Экспорт @@ -56,7 +56,8 @@ "ВЫБРАТЬ | ТаблицаСвойств.Свойство КАК Свойство, | ТаблицаСвойств.Свойство.Наименование КАК Наименование, - | ТаблицаСвойств.Свойство.ТипЗначения КАК ТипЗначения + | ТаблицаСвойств.Свойство.ТипЗначения КАК ТипЗначения, + | ТаблицаСвойств.Свойство.ФорматСвойства КАК ФорматСвойства |ИЗ | &ТаблицаСвойств КАК ТаблицаСвойств |ГДЕ @@ -69,7 +70,7 @@ Запрос.УстановитьПараметр("Ссылка", НаборСсылка); Результат = Запрос.Выполнить().Выгрузить(); - Результат.Свернуть("Свойство,Наименование,ТипЗначения"); + Результат.Свернуть("Свойство,Наименование,ТипЗначения,ФорматСвойства"); Результат.Сортировать("Наименование Возр"); Возврат Результат; @@ -196,6 +197,14 @@ Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; Обработчик.БлокируемыеОбъекты = "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения"; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика(); + + НоваяСтрока = Обработчик.ПриоритетыВыполнения.Добавить(); + НоваяСтрока.Процедура = "МультиязычностьСервер.ОбработатьДанныеДляПереходаНаНовуюВерсию"; + НоваяСтрока.Порядок = "До"; + КонецЕсли; + Обработчик = Обработчики.Добавить(); Обработчик.Версия = "*"; Обработчик.РежимВыполнения = "Отложенно"; @@ -221,6 +230,17 @@ Объекты.Вставить(Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолноеИмя(), ""); КонецПроцедуры +// Смотри также ОбновлениеИнформационнойБазыПереопределяемый.ПриОпределенииНастроек +// +// Параметры: +// Объекты - Массив из ОбъектМетаданных +// +Процедура ПриОпределенииОбъектовСНачальнымЗаполнением(Объекты) Экспорт + + Объекты.Добавить(Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений); + +КонецПроцедуры + // См. ГрупповоеИзменениеОбъектовПереопределяемый.ПриОпределенииОбъектовСРедактируемымиРеквизитами. Процедура ПриОпределенииОбъектовСРедактируемымиРеквизитами(Объекты) Экспорт Объекты.Вставить(Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолноеИмя(), "РеквизитыРедактируемыеВГрупповойОбработке"); @@ -384,7 +404,7 @@ Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru='Поиск и замена ссылок'", ОбщегоНазначения.КодОсновногоЯзыка()), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поиск и замена ссылок'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, НеобработанныйДубль.ЗаменяемоеЗначение.Метаданные,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); @@ -926,22 +946,14 @@ | ВсеСвойства.Свойство КАК Свойство, | ДополнительныеРеквизитыИСведения.ВладелецДополнительныхЗначений КАК ВладелецДополнительныхЗначений, | ДополнительныеРеквизитыИСведения.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ДополнительныеРеквизитыИСведения.Заголовок - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, ДополнительныеРеквизитыИСведения.Заголовок) КАК СТРОКА(150)) - | КОНЕЦ КАК Наименование, + | ДополнительныеРеквизитыИСведения.Заголовок КАК Наименование, | ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения, | ДополнительныеРеквизитыИСведения.ФорматСвойства КАК ФорматСвойства, | ДополнительныеРеквизитыИСведения.МногострочноеПолеВвода КАК МногострочноеПолеВвода, | ВсеСвойства.Удалено КАК Удалено, | ДополнительныеРеквизитыИСведения.Доступен КАК Доступен, | ДополнительныеРеквизитыИСведения.Виден КАК Виден, - | ВЫБОР - | КОГДА &ЭтоОсновнойЯзык - | ТОГДА ДополнительныеРеквизитыИСведения.Подсказка - | ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, ДополнительныеРеквизитыИСведения.Подсказка) КАК СТРОКА(150)) - | КОНЕЦ КАК Подсказка, + | ДополнительныеРеквизитыИСведения.Подсказка КАК Подсказка, | ДополнительныеРеквизитыИСведения.ВыводитьВВидеГиперссылки КАК ВыводитьВВидеГиперссылки, | ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов.( | ЗависимоеСвойство КАК ЗависимоеСвойство, @@ -954,10 +966,6 @@ | ВсеСвойства КАК ВсеСвойства | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения | ПО ВсеСвойства.Свойство = ДополнительныеРеквизитыИСведения.Ссылка - | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления - | ПО (СвойстваПредставления.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка) - | И (СвойстваПредставления.КодЯзыка = &КодЯзыка) - | |УПОРЯДОЧИТЬ ПО | Удалено, | ВсеСвойства.ПорядокНабора, @@ -970,6 +978,30 @@ "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения"); КонецЕсли; + СуффиксТекущегоЯзыка = ОбщегоНазначения.СуффиксЯзыкаТекущегоПользователя(); + Если СуффиксТекущегоЯзыка = Неопределено Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "УПОРЯДОЧИТЬ ПО", + " ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления + | ПО (СвойстваПредставления.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка) + | И (СвойстваПредставления.КодЯзыка = &КодЯзыка) + |УПОРЯДОЧИТЬ ПО"); + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДополнительныеРеквизитыИСведения.Заголовок КАК Наименование", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, ДополнительныеРеквизитыИСведения.Заголовок) КАК СТРОКА(150)) КАК Наименование"); + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДополнительныеРеквизитыИСведения.Подсказка КАК Подсказка", + "ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, ДополнительныеРеквизитыИСведения.Подсказка) КАК СТРОКА(150)) КАК Подсказка"); + + Иначе + + Если ЗначениеЗаполнено(СуффиксТекущегоЯзыка) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "ДополнительныеРеквизитыИСведения.Заголовок КАК Наименование"); + МодульМультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(Запрос.Текст, "ДополнительныеРеквизитыИСведения.Подсказка КАК Подсказка"); + КонецЕсли; + + КонецЕсли; + ОписаниеСвойств = Запрос.Выполнить().Выгрузить(); ОписаниеСвойств.Индексы.Добавить("Свойство"); ОписаниеСвойств.Колонки.Добавить("Значение"); @@ -1601,40 +1633,6 @@ КонецФункции -Функция ЛокализованныеЗначенияРеквизитов(Ссылка, Реквизиты) Экспорт - - ТекстЗапроса = "ВЫБРАТЬ - |&ТекстВставки - | - |ИЗ - | ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Таблица - | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК ТаблицаПредставления - | ПО ТаблицаПредставления.Ссылка = Таблица.Ссылка - | И ТаблицаПредставления.КодЯзыка = &КодЯзыка - | - |ГДЕ - | Таблица.Ссылка = &Ссылка"; - - ТекстВставки = ""; - Шаблон = "ВЫРАЗИТЬ(ЕСТЬNULL(ТаблицаПредставления.%1, Таблица.%1) КАК СТРОКА(150)) КАК %1"; - Для Каждого Реквизит Из Реквизиты Цикл - Если Не ЗначениеЗаполнено(ТекстВставки) Тогда - ТекстВставки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Реквизит); - Иначе - ТекстВставки = ТекстВставки + "," + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Реквизит); - КонецЕсли; - КонецЦикла; - - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстВставки", ТекстВставки); - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.УстановитьПараметр("Ссылка", Ссылка); - Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка); - Результат = Запрос.Выполнить().Выгрузить(); - - Возврат Результат[0]; - -КонецФункции - Процедура СоздатьПредопределенныеНаборыСвойств() Экспорт ПредопределенныеНаборыСвойств = УправлениеСвойствамиПовтИсп.ПредопределенныеНаборыСвойств(); @@ -1724,23 +1722,26 @@ КонецЕсли; Если НаименованияНаборовСвойств <> Неопределено Тогда - Для Каждого Язык Из Метаданные.Языки Цикл - Если Язык.КодЯзыка = ТекущийЯзык().КодЯзыка Тогда - Продолжить; - КонецЕсли; - ЛокализованныеНаименования = НаименованияНаборовСвойств[Язык.КодЯзыка]; - ЛокализованноеНаименование = ЛокализованныеНаименования[СвойстваНабора.Имя]; - СтрокаПредставления = Объект.Представления.Найти(Язык.КодЯзыка, "КодЯзыка"); - Если СтрокаПредставления = Неопределено И ЗначениеЗаполнено(ЛокализованноеНаименование) Тогда - Строка = Объект.Представления.Добавить(); - Строка.КодЯзыка = Язык.КодЯзыка; - Строка.Наименование = ЛокализованноеНаименование; - Записать = Истина; - ИначеЕсли СтрокаПредставления <> Неопределено И ЗначениеЗаполнено(ЛокализованноеНаименование) Тогда - СтрокаПредставления.Наименование = ЛокализованноеНаименование; - Записать = Истина; - КонецЕсли; - КонецЦикла; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер"); + + Для Каждого Язык Из Метаданные.Языки Цикл + Если Язык.КодЯзыка = ТекущийЯзык().КодЯзыка Тогда + Продолжить; + КонецЕсли; + + ЛокализованныеНаименования = НаименованияНаборовСвойств[Язык.КодЯзыка]; + ЛокализованноеНаименование = ЛокализованныеНаименования[СвойстваНабора.Имя]; + СуффиксЯзыка = МодульМультиязычностьСервер.СуффиксЯзыка(Язык.КодЯзыка); + Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда + Объект["Наименование" + СуффиксЯзыка] = ЛокализованноеНаименование; + Записать = Истина; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + КонецЕсли; Если Записать Тогда @@ -1750,16 +1751,37 @@ КонецПроцедуры Функция НаименованияНаборовСвойств() Экспорт + + ПредопределенныеДанные = ПредопределенныеНаборыСвойств(); + Результат = Новый Соответствие; Для Каждого Язык Из Метаданные.Языки Цикл Наименования = Новый Соответствие; УправлениеСвойствамиПереопределяемый.ПриПолученииНаименованийНаборовСвойств(Наименования, Язык.КодЯзыка); + + ИмяКолонки = "Наименование" + "_" + Язык.КодЯзыка; + Если ПредопределенныеДанные.Колонки.Найти(ИмяКолонки) <> Неопределено Тогда + Для Каждого ДанныеЭлемента Из ПредопределенныеДанные Цикл + Наименования.Вставить(ДанныеЭлемента.ИмяПредопределенногоНабора, ДанныеЭлемента[ИмяКолонки]); + КонецЦикла; + КонецЕсли; Результат[Язык.КодЯзыка] = Наименования; КонецЦикла; Возврат Новый ФиксированноеСоответствие(Результат); КонецФункции +Функция ПредопределенныеНаборыСвойств() Экспорт + + ЛокализуемыеРеквизитыОбъекта = Новый Соответствие(); + ЛокализуемыеРеквизитыОбъекта.Вставить("Наименование", Истина); + + ПредопределенныеДанные = ОбновлениеИнформационнойБазыСлужебный.ПредопределенныеДанныеОбъекта(Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений, + Справочники.НаборыДополнительныхРеквизитовИСведений, ЛокализуемыеРеквизитыОбъекта); + Возврат ПредопределенныеДанные; + +КонецФункции + Процедура УдалитьНедопустимыеСимволы(Строка) Экспорт НедопустимыеСимволы = """'`/\[]{}:;|-=?*<>,.()+#№@!%^&~«»"; Строка = СтрСоединить(СтрРазделить(Строка, НедопустимыеСимволы, Истина)); diff --git a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl index ed4a76035..1114107ed 100644 --- a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl +++ b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl @@ -274,7 +274,7 @@ |%2'", ОбщегоНазначения.КодОсновногоЯзыка()); ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке, - УчетнаяЗапись, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + УчетнаяЗапись, РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки(ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка())); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщенияОбОшибке); Если Не ЗначениеЗаполнено(РезультатОтправки) Тогда Продолжить; @@ -639,7 +639,7 @@ | ЕСТЬNULL(ПапкиЭлектронныхПисем.ПредопределеннаяПапка, ИСТИНА) КАК ТребуетсяОпределениеПапки, | ЕСТЬNULL(НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма.КоличествоПопыток, 0) КАК КоличествоПопыток |ИЗ - | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее | ПО ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = УчетныеЗаписиЭлектроннойПочты.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий @@ -790,16 +790,18 @@ СнятьБлокировкуУчетнойЗаписиДляПолучения(ДанныеУчетнойЗаписи.Ссылка); ЕстьОшибки = Истина; - + + ТекстСообщенияОбОшибке = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки( + ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка |%2'", ОбщегоНазначения.КодОсновногоЯзыка()), ДанныеУчетнойЗаписи.Ссылка, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ТекстСообщенияОбОшибке); - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Ошибка, , , - ТекстСообщенияОбОшибке); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщенияОбОшибке); Возврат; diff --git a/SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/Module.bsl b/SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/Module.bsl index 3040ca6f0..36683aa1a 100644 --- a/SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/Module.bsl +++ b/SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/Module.bsl @@ -13,7 +13,8 @@ // Обработчик события "ПриСозданииНаСервере" формы документа. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - форма списка документа. +// Форма - ФормаКлиентскогоПриложения: +// * Объект - ДанныеФормыСтруктура, ДокументОбъект - основной реквизит формы. // Расположение - ГруппаФормы - группа, в которой будет располагаться надпись о текущем состоянии оригинала. // Если Неопределено, тогда надпись будет расположена в нижнем правом углу формы. Необязательный. // @@ -123,7 +124,7 @@ // Обработчик события "ПриПолученииДанныхНаСервере" формы списка. // // Параметры: -// СтрокиСписка - ДанныеФормыКоллекция - строки списка формы. +// СтрокиСписка - СтрокиДинамическогоСписка - строки списка документов. // Процедура ПриПолученииДанныхНаСервере(СтрокиСписка) Экспорт @@ -141,7 +142,7 @@ Прервать; КонецЦикла; - Ключи = СтрокиСписка.ПолучитьКлючи(); + Ключи = СтрокиСписка.ПолучитьКлючи(); // Массив из ДокументСсылка - Ссылки = Новый Массив; Для Каждого Ключ Из Ключи Цикл Ссылки.Добавить(Ключ.Ссылка); @@ -252,7 +253,7 @@ // Добавляет в описание профиля поставляемых групп доступа роль для изменения состояния оригинала. // // Параметры: -// ОписаниеПрофиля - Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. +// ОписаниеПрофиля - см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа // Процедура ДополнитьПрофильРольюДляИзмененияСостоянийОригиналовДокументов(ОписаниеПрофиля) Экспорт @@ -263,8 +264,8 @@ // Добавляет в описание профиля поставляемых групп доступа роль для настройки списка состояния оригинала. // // Параметры: -// ОписаниеПрофиля - Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. -// +// ОписаниеПрофиля - см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. +// Процедура ДополнитьПрофильРольюДляНастройкиСостоянийОригиналовДокументов(ОписаниеПрофиля) Экспорт ОписаниеПрофиля.Роли.Добавить("ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов"); @@ -274,7 +275,7 @@ // Добавляет в описание профиля поставляемых групп доступа роль для чтения состояния оригинала. // // Параметры: -// ОписаниеПрофиля - Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. +// ОписаниеПрофиля - см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. // Процедура ДополнитьПрофильРольюДляЧтенияСостоянийОригиналовДокументов(ОписаниеПрофиля) Экспорт @@ -450,7 +451,8 @@ Обработчик.Версия = "3.1.4.137"; Обработчик.Идентификатор = Новый УникальныйИдентификатор("35320bc5-3ec6-4036-9253-ee5c507531e3"); Обработчик.Процедура = "Справочники.СостоянияОригиналовПервичныхДокументов.ОбработатьДанныеДляПереходаНаНовуюВерсию"; - Обработчик.Комментарий = НСтр("ru = 'Перезаполнение служебного реквизита ""РеквизитДопУпорядочивания"" для устранения вероятного сбоя порядка.'"); + Обработчик.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Перезаполнение служебного реквизита %1 для устранения вероятного сбоя порядка.'") + ,"РеквизитДопУпорядочивания"); Обработчик.РежимВыполнения = "Отложенно"; Обработчик.ОчередьОтложеннойОбработки = 1; Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.СостоянияОригиналовПервичныхДокументов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию"; diff --git a/SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/Module.bsl b/SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/Module.bsl index 6d918712e..8ea8149cb 100644 --- a/SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/Module.bsl +++ b/SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/Module.bsl @@ -126,7 +126,8 @@ // Открывает на форме списка или документа выпадающие меню выбора состояния оригинала. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - форма списка документов или документа. +// Форма - ФормаКлиентскогоПриложения: +// * Объект - ДанныеФормыСтруктура, ДокументОбъект - основной реквизит формы. // Источник - ТаблицаФормы - список или декорация формы, у которого будет открыт выпадающий список. // Процедура ОткрытьМенюВыбораСостояния(Форма, Источник) Экспорт @@ -354,7 +355,7 @@ ПередаваемыеПараметры = Новый Структура; Если КлючЗаписиРегистра = Неопределено Тогда - ПередаваемыеПараметры.Вставить("Ссылка",ДокументСсылка); + ПередаваемыеПараметры.Вставить("ДокументСсылка",ДокументСсылка); ОткрытьФорму("РегистрСведений.СостоянияОригиналовПервичныхДокументов.Форма.ИзменениеСостоянийОригиналовПервичныхДокументов",ПередаваемыеПараметры); Иначе ПередаваемыеПараметры.Вставить("Ключ", КлючЗаписиРегистра); @@ -382,7 +383,8 @@ // Формирует надпись для вывода информации о текущем состоянии на форму документа. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - форма списка документа. +// Форма - ФормаКлиентскогоПриложения: +// * Объект - ДанныеФормыСтруктура, ДокументОбъект - основной реквизит формы. // Процедура СформироватьНадписьТекущегоСостоянияОригинала(Форма) @@ -423,7 +425,7 @@ КонецЦикла; КонецЕсли; - ОбъектыЗаписи = УчетОригиналовПервичныхДокументовВызовСервера.ВозможностьЗаписиОбъектов(МассивСтрок); + ОбъектыЗаписи = УчетОригиналовПервичныхДокументовВызовСервера.ВозможностьЗаписиОбъектов(МассивСтрок); // Массив из ДокументСсылка- Если Не ТипЗнч(ОбъектыЗаписи)= Тип("Массив") Тогда ПоказатьПредупреждение(,НСтр("ru = 'Для выполнения команды предварительно проведите все выделенные документы.'")); @@ -456,38 +458,65 @@ // ВыбранноеСостояниеИзСписка - Строка - выбранное пользователем состояние оригинала. // ДополнительныеПараметры - Структура - сведения необходимые для установки состояния оригинала: // * Ссылка - ДокументСсылка - ссылка на документ для установки состояния оригинала. -// - Массив из Структура: +// - Массив из ДокументСсылка: // * Ссылка - ДокументСсылка - ссылка на документ для установки состояния оригинала. // Процедура ОткрытьМенюВыбораСостоянияЗавершение(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры) Экспорт - Изменено = Ложь; - Если Не ВыбранноеСостояниеИзСписка = Неопределено Тогда Если ТипЗнч(ДополнительныеПараметры)= Тип("Массив")Тогда - Если ВыбранноеСостояниеИзСписка.Значение = "Уточнитьпопечатнымформам" Тогда - ОткрытьФормуИзмененияСостоянийПечатныхФорм(ДополнительныеПараметры[0].Ссылка); - Иначе - УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры,ВыбранноеСостояниеИзСписка.Значение, Изменено); - Если Изменено Тогда - ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры[0].Ссылка,ВыбранноеСостояниеИзСписка.Значение); - Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента"); - КонецЕсли; - КонецЕсли; + ОткрытьМенюВыбораСостоянияЗавершениеМассив(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры); Иначе - Если ВыбранноеСостояниеИзСписка.Значение = "Уточнитьпопечатнымформам" Тогда - ОткрытьФормуИзмененияСостоянийПечатныхФорм(ДополнительныеПараметры.Ссылка); - Иначе - УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры.Ссылка,ВыбранноеСостояниеИзСписка.Значение, Изменено); - Если Изменено Тогда - ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры.Ссылка,ВыбранноеСостояниеИзСписка.Значение); - Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента"); - КонецЕсли; - КонецЕсли; + ОткрытьМенюВыбораСостоянияЗавершениеСтруктура(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры); КонецЕсли; Иначе Возврат; + КонецЕсли; +КонецПроцедуры + +// Обработчик оповещения, вызванного после завершения работы процедуры ОткрытьМенюВыбораСостояния(...). +// +// Параметры: +// ВыбранноеСостояниеИзСписка - Строка - выбранное пользователем состояние оригинала. +// ДополнительныеПараметры - Массив из ДокументСсылка: +// * Ссылка - ДокументСсылка - ссылка на документ для установки состояния оригинала. +// +Процедура ОткрытьМенюВыбораСостоянияЗавершениеМассив(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры) + + Изменено = Ложь; + + Если ВыбранноеСостояниеИзСписка.Значение = "Уточнитьпопечатнымформам" Тогда + ОткрытьФормуИзмененияСостоянийПечатныхФорм(ДополнительныеПараметры[0].Ссылка); + Иначе + УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры,ВыбранноеСостояниеИзСписка.Значение, Изменено); + Если Изменено Тогда + ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры[0].Ссылка,ВыбранноеСостояниеИзСписка.Значение); + Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Обработчик оповещения, вызванного после завершения работы процедуры ОткрытьМенюВыбораСостояния(...). +// +// Параметры: +// ВыбранноеСостояниеИзСписка - Строка - выбранное пользователем состояние оригинала. +// ДополнительныеПараметры - Структура - сведения необходимые для установки состояния оригинала: +// * Ссылка - ДокументСсылка - ссылка на документ для установки состояния оригинала. +// +Процедура ОткрытьМенюВыбораСостоянияЗавершениеСтруктура(ВыбранноеСостояниеИзСписка, ДополнительныеПараметры) + + Изменено = Ложь; + + Если ВыбранноеСостояниеИзСписка.Значение = "Уточнитьпопечатнымформам" Тогда + ОткрытьФормуИзмененияСостоянийПечатныхФорм(ДополнительныеПараметры.Ссылка); + Иначе + УчетОригиналовПервичныхДокументовВызовСервера.УстановитьНовоеСостояниеОригинала(ДополнительныеПараметры.Ссылка,ВыбранноеСостояниеИзСписка.Значение, Изменено); + Если Изменено Тогда + ОповеститьПользователяОбУстановкеСостояний(1,ДополнительныеПараметры.Ссылка,ВыбранноеСостояниеИзСписка.Значение); + Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента"); + КонецЕсли; КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ФайловаяСистема/Module.bsl b/SSL/src/CommonModules/ФайловаяСистема/Module.bsl index 7a33afcae..fe33ca8c3 100644 --- a/SSL/src/CommonModules/ФайловаяСистема/Module.bsl +++ b/SSL/src/CommonModules/ФайловаяСистема/Module.bsl @@ -46,9 +46,9 @@ Если НЕ ЭтоИмяВременногоФайла(Путь) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверное значение параметра Путь в ФайловаяСистема.УдалитьВременныйКаталог: - |Каталог не является временным ""%1""'"), - Путь); + НСтр("ru = 'Неверное значение параметра %1 в %2: + |Каталог не является временным ""%3"".'"), + "Путь", "ФайловаяСистема.УдалитьВременныйКаталог", Путь); КонецЕсли; УдалитьВременныеФайлы(Путь); @@ -326,10 +326,9 @@ НСтр("ru = 'Не удалось запустить программу |%1 |по причине: - |Не существует каталог, указанный как ТекущийКаталог - |%2'"), - СтрокаКоманды, - ТекущийКаталог); + |Не существует каталог %2 + |%3'"), + СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); КонецЕсли; Если Не ФайлИнфо.ЭтоКаталог() Тогда @@ -337,9 +336,9 @@ НСтр("ru = 'Не удалось запустить программу |%1 |по причине: - |ТекущийКаталог не является каталогом %2'"), - СтрокаКоманды, - ТекущийКаталог); + |%2 не является каталогом + |%3'"), + СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); КонецЕсли; КонецЕсли; @@ -349,7 +348,6 @@ Функция ПрочитатьФайлЕслиСуществует(Путь, Кодировка) Результат = Неопределено; - ФайлИнфо = Новый Файл(Путь); Если ФайлИнфо.Существует() Тогда diff --git a/SSL/src/CommonModules/ЦентрМониторингаСлужебный/Module.bsl b/SSL/src/CommonModules/ЦентрМониторингаСлужебный/Module.bsl index 2c50645e0..d927e1756 100644 --- a/SSL/src/CommonModules/ЦентрМониторингаСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ЦентрМониторингаСлужебный/Module.bsl @@ -44,7 +44,8 @@ // Значение - Произвольный - значение параметра центра мониторинга. // Функция УстановитьПараметрЦентраМониторингаВнешнийВызов(Параметр, Значение) Экспорт - Возврат УстановитьПараметрЦентраМониторинга(Параметр, Значение); + УстановитьПараметрЦентраМониторинга(Параметр, Значение); + Возврат "Успешно"; КонецФункции // Получает параметры центра мониторинга по умолчанию. @@ -70,7 +71,8 @@ // Параметры - Структура - необходимые параметры, значения которых необходимо получить. // Функция УстановитьПараметрыЦентраМониторингаВнешнийВызов(НовыеПараметры) Экспорт - Возврат УстановитьПараметрыЦентраМониторинга(НовыеПараметры); + УстановитьПараметрыЦентраМониторинга(НовыеПараметры); + Возврат "Успешно"; КонецФункции Функция ЗапускОтправкиОзнакомительногоПакета() Экспорт @@ -445,20 +447,14 @@ РегистрацияДампов(); Исключение Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - регистрация дампов'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Регистрация дампов'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); УстановитьПараметрЦентраМониторинга("РегистрироватьДампы", Ложь); ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.РегистрацияДампов.Ошибка", 1, Комментарий); КонецПопытки; ПараметрыЦентраМониторинга.РегистрацияДамповСледующееФормирование = - ТекущаяУниверсальнаяДата() - + ПараметрыЦентраМониторинга.РегистрацияДамповПериодФормирования; + ТекущаяУниверсальнаяДата() + ПараметрыЦентраМониторинга.РегистрацияДамповПериодФормирования; НеобходимаЗаписьОценкиПроизводительности = Истина; КонецЕсли; @@ -468,13 +464,8 @@ РегистрацияОперацийСтатистики(); Исключение Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - регистрация операций статистики'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Регистрация операций статистики'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.РегистрацияОперацийСтатистики.Ошибка", 1, Комментарий); КонецПопытки; @@ -490,13 +481,8 @@ СобратьСтатистикуКонфигурации(Новый Структура("РегистрироватьСтатистикуКонфигурации, РегистрироватьНастройкуКонфигурации", ПараметрыЦентраМониторинга.РегистрироватьСтатистикуКонфигурации, ПараметрыЦентраМониторинга.РегистрироватьНастройкуКонфигурации)); Исключение Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - собрать статистику конфигурации'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Собрать статистику конфигурации'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.СобратьСтатистикуКонфигурации.Ошибка", 1, Комментарий); КонецПопытки; @@ -512,13 +498,8 @@ СформироватьПакетДляОтправки(); Исключение Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - сформировать пакет для отправки'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Сформировать пакет для отправки'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.СформироватьПакетДляОтправки.Ошибка", 1, Комментарий); КонецПопытки; @@ -529,14 +510,10 @@ КонецЕсли; Исключение Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - отправить данные мониторинга'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); - ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.ОтправитьДанныеМониторинга.Ошибка", 1, Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Отправить данные мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); + ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.ОтправитьДанныеМониторинга.Ошибка", + 1, Комментарий); КонецПопытки; ПараметрыЦентраМониторинга.ОтправкаДанныхСледующееФормирование = ТекущаяУниверсальнаяДата() @@ -641,8 +618,9 @@ Исключение ОтменитьТранзакцию(); Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЦентрМониторингаРазобратьБуферОперацийСтатистики(), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииРазобратьБуферОперацийСтатистики(), + УровеньЖурналаРегистрации.Ошибка, Метаданные.РегистрыСведений.БуферОперацийСтатистики,, Ошибка); + ВызватьИсключение; КонецПопытки; Если ОценкаПроизводительностиСуществует Тогда @@ -684,9 +662,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Агрегировать замеры операций статистики'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Агрегировать замеры операций статистики'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; КонецЕсли; @@ -736,9 +715,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Удалить устаревшие данные операций статистики'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Удалить устаревшие данные операций статистики'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; Если ОценкаПроизводительностиСуществует Тогда @@ -1442,8 +1422,9 @@ ДампДляУдаления.ИмяФайла = ""; РегистрыСведений.ДампыПлатформы.ИзменитьЗапись(ДампДляУдаления); Исключение - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЦентрМониторингаУдалениеДампа(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЦентрМониторингаУдалениеДампа(), + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Иначе ДампДляУдаления.ИмяФайла = ""; @@ -1547,21 +1528,19 @@ ОбластьДанныхСтрока = Строка(Выборка.ОбластьДанных); Если РегистрыСведений.ОбластиСтатистики.СобиратьСтатистикуКонфигурации(ОбластьДанныхСтрока) Тогда Попытка - УстановитьРазделениеСеанса(Истина, Выборка.ОбластьДанных); + ВойтиВОбластьДанных(Выборка.ОбластьДанных); Исключение - Инфо = ИнформацияОбОшибке(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Статистика конфигурации переопределяемая'", ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - ,, - НСтр("ru = 'Не удалось установить разделение сеанса.Область данных'", ОбщегоНазначения.КодОсновногоЯзыка()) + " = " + Формат(Выборка.ОбластьДанных, "ЧГ=0") - + Символы.ПС + ПодробноеПредставлениеОшибки(Инфо)); - - УстановитьРазделениеСеанса(Ложь); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Статистика конфигурации переопределяемая'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, + НСтр("ru = 'Не удалось установить разделение сеанса. Область данных'", ОбщегоНазначения.КодОсновногоЯзыка()) + + " = " + Формат(Выборка.ОбластьДанных, "ЧГ=0") + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВыйтиИзОбластиДанных(); Продолжить; КонецПопытки; + ИнтеграцияПодсистемБСП.ПриСбореПоказателейСтатистикиКонфигурации(); ЦентрМониторингаПереопределяемый.ПриСбореПоказателейСтатистикиКонфигурации(); - УстановитьРазделениеСеанса(Ложь); + ВыйтиИзОбластиДанных(); КонецЕсли; КонецЦикла; Иначе @@ -1623,9 +1602,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Формирование пакета для отправки'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Формирование пакета для отправки'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; РегистрыСведений.ПакетыДляОтправки.УдалитьСтарыеПакеты(); @@ -2062,9 +2042,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров отправки'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров отправки'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; Возврат ПараметрыОтправки; @@ -2086,8 +2067,8 @@ Возврат Значение; КонецФункции -Функция УстановитьПараметрыЦентраМониторинга(НовыеПараметры) - Ошибка = "Успешно"; +Процедура УстановитьПараметрыЦентраМониторинга(НовыеПараметры) + Блокировка = Новый БлокировкаДанных; Блокировка.Добавить("Константа.ПараметрыЦентраМониторинга"); @@ -2110,18 +2091,18 @@ КонецЦикла; Хранилище = Новый ХранилищеЗначения(Параметры); - Константы.ПараметрыЦентраМониторинга.Установить(Хранилище); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров центра мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров центра мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, + Метаданные.Константы.ПараметрыЦентраМониторинга,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; - Возврат Ошибка; -КонецФункции + +КонецПроцедуры Процедура УдалитьПараметрыЦентраМониторинга() Попытка @@ -2129,14 +2110,15 @@ Хранилище = Новый ХранилищеЗначения(Параметры); Константы.ПараметрыЦентраМониторинга.Установить(Хранилище); Исключение - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Удалить параметры центра мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Удалить параметры центра мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, + Метаданные.Константы.ПараметрыЦентраМониторинга,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; КонецПроцедуры -Функция УстановитьПараметрЦентраМониторинга(Параметр, Значение) - Ошибка = "Успешно"; +Процедура УстановитьПараметрЦентраМониторинга(Параметр, Значение) + Блокировка = Новый БлокировкаДанных; Блокировка.Добавить("Константа.ПараметрыЦентраМониторинга"); @@ -2150,20 +2132,19 @@ КонецЕсли; Параметры[Параметр] = Значение; - Хранилище = Новый ХранилищеЗначения(Параметры); - Константы.ПараметрыЦентраМониторинга.Установить(Хранилище); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров центра мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Установка параметров центра мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, + Метаданные.Константы.ПараметрыЦентраМониторинга,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; - Возврат Ошибка; -КонецФункции + +КонецПроцедуры Функция ПолучитьПараметрыСервисаОтправки() ПараметрыСервиса = Новый Структура; @@ -2248,8 +2229,8 @@ Сообщение = НСтр("ru = 'Ошибка чтения файла настроек технологического журнала'"); Сообщение = Сообщение + " """ +Файл.ПолноеИмя + """." + Символы.ПС; Сообщение = Сообщение + НСтр("ru = 'Скорее всего файл поврежден. Регистрация дампов не возможна. Удалите поврежденный файл или восстановите настройки.'"); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение,,,Сообщение); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Предупреждение,,, Сообщение); КаталогДампов.Путь = Неопределено; КаталогДампов.ОписаниеОшибки = НСтр("ru = 'Ошибка чтения файла настроек технологического журнала'"); @@ -2259,11 +2240,11 @@ Если ПараметрыДампов <> Неопределено Тогда Если НЕ ПараметрыДампов.Свойство("location") ИЛИ НЕ ПараметрыДампов.Свойство("create") ИЛИ НЕ ПараметрыДампов.Свойство("type") Тогда Сообщение = НСтр("ru = 'Ошибка секции сбора дампов в файле настроек технологического журнала'"); - Сообщение = Сообщение + " """ +Файл.ПолноеИмя + """." + Символы.ПС; + Сообщение = Сообщение + " """ + Файл.ПолноеИмя + """." + Символы.ПС; Сообщение = Сообщение + НСтр("ru = 'Регистрация дампов не возможна. Удалите файл или восстановите настройки.'"); ЧтениеXML.Закрыть(); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение,,,Сообщение); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Предупреждение,,, Сообщение); КаталогДампов.Путь = Неопределено; КаталогДампов.ОписаниеОшибки = НСтр("ru = 'Ошибка секции сбора дампов в файле настроек технологического журнала'"); @@ -2351,8 +2332,8 @@ Сообщение = НСтр("ru = 'Ошибка записи файла настроек технологического журнала. Регистрация дампов не возможна.'"); Сообщение = Сообщение + " """ +Файл.ПолноеИмя + """." + Символы.ПС; Сообщение = Сообщение + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга - регистрация дампов'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение,,,Сообщение); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Регистрация дампов'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение,,, Сообщение); КаталогДампов.Путь = Неопределено; КаталогДампов.ОписаниеОшибки = НСтр("ru = 'Ошибка записи файла настроек технологического журнала. Регистрация дампов не возможна.'"); @@ -2389,8 +2370,8 @@ Сообщение = НСтр("ru = 'Ошибка создания файла настроек технологического журнала. Регистрация дампов не возможна.'"); Сообщение = Сообщение + " """ +ПутьКаталога + ИмяФайлаНастроек + """." + Символы.ПС; Сообщение = Сообщение + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение,,,Сообщение); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Предупреждение,,, Сообщение); КаталогДампов = Неопределено; @@ -2490,7 +2471,9 @@ Иначе КаталогНастроек.Путь = СформироватьПутьСРазделителем(ФайлКонфигурацииНастроек.Путь); КаталогНастроек.Существует = Ложь; - КаталогНастроек.ОписаниеОшибки = НСтр("ru = 'Не найдена секция ConfLocation в файле'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + ФайлКонфигурацииНастроек.ПолноеИмя; + КаталогНастроек.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не найдена секция %1 в файле %2'", ОбщегоНазначения.КодОсновногоЯзыка()), + "ConfLocation", ФайлКонфигурацииНастроек.ПолноеИмя); КонецЕсли; Возврат КаталогНастроек; @@ -2799,7 +2782,7 @@ Возврат НСтр("ru = 'Центр мониторинга.Удаление дампа'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецФункции -Функция СобытиеЖурналаРегистрацииЦентрМониторингаРазобратьБуферОперацийСтатистики() +Функция СобытиеЖурналаРегистрацииРазобратьБуферОперацийСтатистики() Возврат НСтр("ru = 'Центр мониторинга.Разобрать буфер операций статистики'", ОбщегоНазначения.КодОсновногоЯзыка()); КонецФункции #КонецОбласти @@ -2998,11 +2981,20 @@ КонецПроцедуры -Процедура УстановитьРазделениеСеанса(Использование, ОбластьДанных = Неопределено) +Процедура ВойтиВОбластьДанных(Знач ОбластьДанных) Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Использование, ОбластьДанных); + МодульРаботаВМоделиСервиса.ВойтиВОбластьДанных(ОбластьДанных); + КонецЕсли; + +КонецПроцедуры + +Процедура ВыйтиИзОбластиДанных() + + Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); КонецЕсли; КонецПроцедуры @@ -3816,13 +3808,8 @@ РезультатВыполнения.Успешно = Ложь; РезультатВыполнения.КраткоеПредставлениеОшибки = НСтр("ru = 'Ошибка при формировании пакета.'"); Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - сформировать тестовый пакет для отправки'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Сформировать тестовый пакет для отправки'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); КонецПопытки; Попытка @@ -3834,26 +3821,17 @@ РезультатВыполнения.КраткоеПредставлениеОшибки = НСтр("ru = 'Ошибка при отправке пакета.'"); Шаблон = НСтр("ru = 'Ошибка HTTP при отправке пакета. Код %1'"); Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, HTTPОтвет.КодСостояния); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - отправить тестовые данные мониторинга'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Отправить тестовые данные мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); КонецЕсли; Исключение РезультатВыполнения.Успешно = Ложь; РезультатВыполнения.КраткоеПредставлениеОшибки = НСтр("ru = 'Ошибка при отправке пакета.'"); Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Центр мониторинга - отправить тестовые данные мониторинга'", - ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); - ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.ОтправитьДанныеМониторинга.Ошибка", 1, Комментарий); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга.Отправить тестовые данные мониторинга'", + ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, Комментарий); + ЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("ЦентрМониторинга.ОтправитьДанныеМониторинга.Ошибка", + 1, Комментарий); КонецПопытки; Если РезультатВыполнения.Успешно Тогда diff --git a/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl index b2a6ce37a..06e13ceb9 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl @@ -163,6 +163,8 @@ // Производные свойства: // * Сертификат - ДвоичныеДанные - содержит выгрузку сертификата, // который использовался для подписания (содержится в подписи). +// - ХранилищеЗначения - содержит выгрузку сертификата (в случае копирования) +// который использовался для подписания (содержится в подписи). // * Отпечаток - Строка - отпечаток сертификата в формате строки Base64. // * КомуВыданСертификат - Строка - представление субъекта, полученное из двоичных данных сертификата. // * ОписаниеСертификата - Структура - необязательное свойство, требуемое для сертификатов, которые @@ -652,7 +654,8 @@ // * Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования - программа, которая // требуется для подписания и расшифровки. // -// * УсиленнаяЗащитаЗакрытогоКлюча - Булево - сертификат был установлен на компьютере с усиленной +// * ВводитьПарольВПрограммеЭлектроннойПодписи - Булево - флажок "Вводить пароль в программе электронной подписи", +// требуется Истина, когда сертификат был установлен на компьютере с усиленной // защитой закрытого ключа, которая означает поддержку только пустого пароля на // уровне «1С:Предприятия» (пароль у пользователя не запрашивается - это делает // операционная система, которая не принимает от «1С:Предприятия» непустой пароль). @@ -682,6 +685,22 @@ СертификатСсылка = СсылкаНаСертификат(Сертификат); + ПравоДоступаДобавление = ПравоДоступа("Добавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); + + Если Не ПравоДоступаДобавление И Не ЗначениеЗаполнено(СертификатСсылка) Тогда + ВызватьИсключение(НСтр("ru = 'Недостаточно прав для использования сертификата, отсутствующего в справочнике.'")); + КонецЕсли; + + РазрешенныеПоляДляИзменения = Неопределено; + Если Не ПравоДоступаДобавление Тогда + РазрешенныеПоляДляИзменения = Новый Массив; + РазрешенныеПоляДляИзменения.Добавить("Организация"); + РазрешенныеПоляДляИзменения.Добавить("Пользователь"); + РазрешенныеПоляДляИзменения.Добавить("Программа"); + РазрешенныеПоляДляИзменения.Добавить("ВводитьПарольВПрограммеЭлектроннойПодписи"); + УстановитьПривилегированныйРежим(Истина); + КонецЕсли; + НачатьТранзакцию(); Попытка @@ -705,26 +724,33 @@ КонецЕсли; Если СертификатОбъект.ДанныеСертификата.Получить() <> ДвоичныеДанныеСертификата Тогда - СертификатОбъект.ДанныеСертификата = Новый ХранилищеЗначения(ДвоичныеДанныеСертификата); + Если ПравоДоступаДобавление Тогда + СертификатОбъект.ДанныеСертификата = Новый ХранилищеЗначения(ДвоичныеДанныеСертификата); + Иначе + ОтменитьТранзакцию(); + ВызватьИсключение(НСтр("ru = 'Недостаточно прав для изменения данных сертификата.'")); + КонецЕсли; КонецЕсли; - СвойстваСертификата = СвойстваСертификата(СертификатКриптографии); - ОбновитьЗначение(СертификатОбъект.Подписание, СвойстваСертификата.Подписание); - ОбновитьЗначение(СертификатОбъект.Шифрование, СвойстваСертификата.Шифрование); - ОбновитьЗначение(СертификатОбъект.КомуВыдан, СвойстваСертификата.КомуВыдан); - ОбновитьЗначение(СертификатОбъект.КемВыдан, СвойстваСертификата.КемВыдан); - ОбновитьЗначение(СертификатОбъект.ДействителенДо, СвойстваСертификата.ДатаОкончания); - - СвойстваСубъекта = СвойстваСубъектаСертификата(СертификатКриптографии); - ОбновитьЗначение(СертификатОбъект.Фамилия, СвойстваСубъекта.Фамилия, Истина); - ОбновитьЗначение(СертификатОбъект.Имя, СвойстваСубъекта.Имя, Истина); - ОбновитьЗначение(СертификатОбъект.Фирма, СвойстваСубъекта.Организация, Истина); - Если СвойстваСубъекта.Свойство("Отчество") Тогда - ОбновитьЗначение(СертификатОбъект.Отчество, СвойстваСубъекта.Отчество, Истина); - КонецЕсли; - Если СвойстваСубъекта.Свойство("Должность") Тогда - ОбновитьЗначение(СертификатОбъект.Должность, СвойстваСубъекта.Должность, Истина); - КонецЕсли; + Если ПравоДоступаДобавление Тогда + СвойстваСертификата = СвойстваСертификата(СертификатКриптографии); + ОбновитьЗначение(СертификатОбъект.Подписание, СвойстваСертификата.Подписание); + ОбновитьЗначение(СертификатОбъект.Шифрование, СвойстваСертификата.Шифрование); + ОбновитьЗначение(СертификатОбъект.КомуВыдан, СвойстваСертификата.КомуВыдан); + ОбновитьЗначение(СертификатОбъект.КемВыдан, СвойстваСертификата.КемВыдан); + ОбновитьЗначение(СертификатОбъект.ДействителенДо, СвойстваСертификата.ДатаОкончания); + + СвойстваСубъекта = СвойстваСубъектаСертификата(СертификатКриптографии); + ОбновитьЗначение(СертификатОбъект.Фамилия, СвойстваСубъекта.Фамилия, Истина); + ОбновитьЗначение(СертификатОбъект.Имя, СвойстваСубъекта.Имя, Истина); + ОбновитьЗначение(СертификатОбъект.Фирма, СвойстваСубъекта.Организация, Истина); + Если СвойстваСубъекта.Свойство("Отчество") Тогда + ОбновитьЗначение(СертификатОбъект.Отчество, СвойстваСубъекта.Отчество, Истина); + КонецЕсли; + Если СвойстваСубъекта.Свойство("Должность") Тогда + ОбновитьЗначение(СертификатОбъект.Должность, СвойстваСубъекта.Должность, Истина); + КонецЕсли; + КонецЕсли; Если СертификатОбъект.ЭтоНовый() И Не ДополнительныеПараметры.Свойство("Наименование") Тогда @@ -734,6 +760,11 @@ КонецЕсли; Для Каждого КлючИЗначение Из ДополнительныеПараметры Цикл + Если РазрешенныеПоляДляИзменения <> Неопределено + И РазрешенныеПоляДляИзменения.Найти(КлючИЗначение.Ключ) = Неопределено Тогда + Продолжить; + КонецЕсли; + Если КлючИЗначение.Ключ = "Пользователь" Тогда Если ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда Если ЗначениеЗаполнено(СертификатОбъект.Пользователь) И СертификатОбъект.Пользователь <> КлючИЗначение.Значение Тогда @@ -1561,6 +1592,56 @@ #Область СлужебныйПрограммныйИнтерфейс +// Возвращает признак доступности просмотра зашифрованных данных. +// +// Возвращаемое значение: +// Булево - если Истина, просмотр зашифрованных данных доступен. +// +Функция РасшифровкаДанных() Экспорт + + Возврат ШифрованиеИРасшифровкаДанных() + Или ИспользоватьШифрование() И Пользователи.РолиДоступны("РасшифровкаДанных"); + +КонецФункции + +// Возвращает признак доступности шифрования данных. +// +// Возвращаемое значение: +// Булево - если Истина, шифрование данных доступно. +// +Функция ШифрованиеИРасшифровкаДанных() Экспорт + + Возврат ИспользоватьШифрование() И Пользователи.РолиДоступны("ШифрованиеИРасшифровкаДанных"); + +КонецФункции + +// Возвращает признак доступности добавления электронных подписей. +// +// Возвращаемое значение: +// Булево - если Истина, добавление электронных подписей доступно. +// +Функция ДобавлениеИзменениеЭлектронныхПодписей() Экспорт + + // АПК:515-выкл + // Роль не содержит прав на объекты метаданных, кроме общей формы ДобавлениеЭлектроннойПодписиИзФайла. + Возврат ИспользоватьЭлектронныеПодписи() И Пользователи.РолиДоступны("ДобавлениеИзменениеЭлектронныхПодписей"); + // АПК:515-вкл + +КонецФункции + +// Возвращает признак доступности управления оповещениями о сроке действия сертификатов +// и напоминаниями о получении сертификата в заявлении. +// +// Возвращаемое значение: +// Булево - если Истина, управление оповещениями доступно. +// +Функция УправлениеОповещениямиОСертификатах() Экспорт + + Возврат ПравоДоступа("Изменение", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования) + Или ДобавлениеИзменениеЭлектронныхПодписей() Или РасшифровкаДанных(); + +КонецФункции + // Извлекает сертификаты из данных подписи. // // Параметры: @@ -1649,6 +1730,24 @@ КонецФункции +// Локализация +#Область ОбработчикиРегламентныхЗаданий + +// Регламентное задание. +Процедура ОбновлениеСостоянияЗаявленияНаВыпускСертификата(Сертификат) Экспорт + + ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания( + Метаданные.РегламентныеЗадания.ОбновлениеСостоянияЗаявленияНаВыпускСертификата); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ОбновлениеСостоянияЗаявленияРегламентноеЗадание( + Сертификат); + +КонецПроцедуры + +#КонецОбласти +// Конец Локализация + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -1695,7 +1794,11 @@ НоваяЗапись.ПодписанныйОбъект = ОбъектДанных.Ссылка; НоваяЗапись.Подпись = Новый ХранилищеЗначения(СвойстваПодписи.Подпись); - НоваяЗапись.Сертификат = Новый ХранилищеЗначения(СвойстваПодписи.Сертификат); + Если ТипЗнч(СвойстваПодписи.Сертификат) = Тип("ХранилищеЗначения") Тогда + НоваяЗапись.Сертификат = СвойстваПодписи.Сертификат; + Иначе + НоваяЗапись.Сертификат = Новый ХранилищеЗначения(СвойстваПодписи.Сертификат); + КонецЕсли; ПорядковыйНомер = 1; diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl index fe3c42a7b..3c8c6bfbb 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl @@ -79,7 +79,7 @@ // по которой будет установлен отбор в списке сертификатов пользователя. // * БезПодтверждения - Булево - (необязательный) - пропустить подтверждение пользователя, если // в свойстве ОтборСертификатов только один сертификат и: -// а) либо сертификат выпущен с усиленной защитой закрытого ключа; +// а) либо для сертификата указано "Вводить пароль в программе электронной подписи"; // б) либо пользователь запомнил пароль к сертификату на время сеанса; // в) либо пароль установлен ранее методом УстановитьПарольСертификата. // Если в процессе подписания возникла ошибка, тогда будет открыта форма @@ -233,6 +233,7 @@ СерверныеПараметры.Вставить("ОтборСертификатов"); СерверныеПараметры.Вставить("ВыполнятьНаСервере"); СерверныеПараметры.Вставить("ПараметрыДополнительныхДействий"); + СерверныеПараметры.Вставить("ОповеститьОбОкончанииСрокаДействия", Истина); ЗаполнитьЗначенияСвойств(СерверныеПараметры, ОписаниеДанных); ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьНовуюФорму("ПодписаниеДанных", @@ -611,7 +612,7 @@ // из личного хранилища. // * БезПодтверждения - Булево - (необязательный) - пропустить подтверждение пользователя, если // в свойстве ОтборСертификатов только один сертификат и: -// а) либо сертификат выпущен с усиленной защитой закрытого ключа; +// а) либо для сертификата указано "Вводить пароль в программе электронной подписи"; // б) либо пользователь запомнил пароль к сертификату на время сеанса; // в) либо пароль установлен ранее методом УстановитьПарольСертификата. // Если в процессе расшифровки возникла ошибка, тогда будет открыта форма @@ -1366,7 +1367,8 @@ // * Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования - программа, которая // требуется для подписания и расшифровки. // Значение по умолчанию - Неопределено. -// * УсиленнаяЗащитаЗакрытогоКлюча - Булево - сертификат был установлен на компьютере с усиленной +// * ВводитьПарольВПрограммеЭлектроннойПодписи - Булево - флажок "Вводить пароль в программе электронной подписи", +// требуется Истина, когда сертификат был установлен на компьютере с усиленной // защитой закрытого ключа, которая означает поддержку только пустого пароля на // уровне 1С:Предприятия (пароль у пользователя не запрашивается - это делает // операционная система, которая не принимает от 1С:Предприятия непустой пароль). @@ -1379,7 +1381,7 @@ ДополнительныеПараметры.Вставить("Пользователь", Неопределено); ДополнительныеПараметры.Вставить("Организация", Неопределено); ДополнительныеПараметры.Вставить("Программа", Неопределено); - ДополнительныеПараметры.Вставить("УсиленнаяЗащитаЗакрытогоКлюча", Ложь); + ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи", Ложь); Возврат ДополнительныеПараметры; diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебный/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебный/Module.bsl index fb1c1292a..ec5b85a52 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебный/Module.bsl @@ -37,9 +37,10 @@ КонецПроцедуры // Только для внутреннего использования. -// +// // Параметры: -// Форма - ФормаКлиентскогоПриложения +// Форма - ФормаКлиентскогоПриложения +// ИмяСпискаПодписей - Строка // Процедура ОформитьСписокПодписей(Форма, ИмяСпискаПодписей) Экспорт @@ -58,6 +59,13 @@ КонецПроцедуры // Определяет доступность электронной подписи для объекта (по его типу) +// +// Параметры: +// ТипОбъекта - Тип +// +// Возвращаемое значение: +// Булево - доступна электронная подпись +// Функция ДоступнаЭлектроннаяПодпись(ТипОбъекта) Экспорт Возврат ЭлектроннаяПодписьСлужебныйПовтИсп.ТипыВладельцев().Получить(ТипОбъекта) <> Неопределено; @@ -100,8 +108,10 @@ // Возвращаемое значение: // Булево - если Истина, то интерактивное использование электронных подписей и шифрование возможно. // -Функция ИспользоватьИнтерактивноеДобавлениеЭлектронныхПодписейИШифрование() Экспорт - Возврат ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); +Функция ИнтерактивноеИспользованиеЭлектронныхПодписейИШифрования() Экспорт + + Возврат ПравоДоступа("Просмотр", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования); + КонецФункции // Из переданных имен файлов выделяются имена файлов данных и имена файлов их подписей. @@ -213,6 +223,36 @@ КонецФункции +// Только для внутреннего использования. +Процедура ИзменитьОтметкуОНапоминании(Сертификат, Напомнить, ИдентификаторНапоминания) Экспорт + + ТекущийПользователь = Пользователи.ТекущийПользователь(); + + ДоступныНапоминанияПользователя = Ложь; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда + МодульНапоминанияПользователя = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователя"); + ДоступныНапоминанияПользователя = МодульНапоминанияПользователя.ИспользуютсяНапоминанияПользователя(); + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + НаборЗаписей = РегистрыСведений.ОповещенияПользователейСертификатов.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.Сертификат.Установить(Сертификат); + НаборЗаписей.Отбор.Пользователь.Установить(ТекущийПользователь); + + Запись = НаборЗаписей.Добавить(); + Запись.Сертификат = Сертификат; + Запись.Пользователь = ТекущийПользователь; + Запись.Оповещен = Не Напомнить; + Если ДоступныНапоминанияПользователя Тогда + НаборЗаписей.ДополнительныеСвойства.Вставить("ИдентификаторНапоминания", ИдентификаторНапоминания); + КонецЕсли; + НаборЗаписей.Записать(); + + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем конфигурации. @@ -260,13 +300,37 @@ Обработчик = Обработчики.Добавить(); Обработчик.НачальноеЗаполнение = Истина; Обработчик.Версия = "3.1.5.220"; - Обработчик.Комментарий = - НСтр("ru = 'Добавление внешней компоненты ExtraCryptoAPI в справочник Внешние компоненты.'"); + Обработчик.Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр( + "ru = 'Добавление внешней компоненты %1 в справочник Внешние компоненты.'"), "ExtraCryptoAPI"); Обработчик.Идентификатор = Новый УникальныйИдентификатор("9fcfccd5-ec23-4ba9-8b2c-8f0ae269c271"); Обработчик.Процедура = "ЭлектроннаяПодписьСлужебный.ДобавитьКомпонентуExtraCryptoAPI"; Обработчик.РежимВыполнения = "Оперативно"; КонецЕсли; + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "3.1.6.20"; + Обработчик.Процедура = "ЭлектроннаяПодписьСлужебный.ЗаменитьРольДобавлениеИзменениеЭлектронныхПодписейИШифрование"; + Обработчик.РежимВыполнения = "Оперативно"; + + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "3.1.6.20"; + Обработчик.Комментарий = НСтр( + "ru = 'Перенос оповещений об окончании срока действия сертификата и данных заявлений в регистры сведений.'"); + Обработчик.Идентификатор = Новый УникальныйИдентификатор("05bd8752-d7f7-47bb-abe6-41d72bcc477b"); + Обработчик.Процедура = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ОбработатьДанныеДляПереходаНаНовуюВерсию"; + Обработчик.РежимВыполнения = "Отложенно"; + Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию"; + Обработчик.ЧитаемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"; + ИзменяемыеОбъекты = Новый Массив; + ИзменяемыеОбъекты.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + ИзменяемыеОбъекты.Добавить("РегистрСведений.ОповещенияПользователейСертификатов"); + Если Метаданные.РегистрыСведений.Найти("ЗаявленияНаВыпускСертификата") <> Неопределено Тогда + ИзменяемыеОбъекты.Добавить("РегистрСведений.ЗаявленияНаВыпускСертификата"); + КонецЕсли; + Обработчик.ИзменяемыеОбъекты = СтрСоединить(ИзменяемыеОбъекты, ","); + Обработчик.БлокируемыеОбъекты = "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"; + Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; + КонецПроцедуры // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных. @@ -335,6 +399,72 @@ КонецПроцедуры +// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий +Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт + + Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПриОпределенииНастроекРегламентныхЗаданий(Настройки); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий подсистемы ТекущиеДела. + +// Параметры: +// ТекущиеДела - см. ТекущиеДелаСервер.ТекущиеДела. +// +Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт + + Если Пользователи.ЭтоСеансВнешнегоПользователя() Тогда + Возврат; + КонецЕсли; + + Если Не ЭлектроннаяПодпись.УправлениеОповещениямиОСертификатах() Тогда + Возврат; + КонецЕсли; + + МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер"); + + Разделы = МодульТекущиеДелаСервер.РазделыДляОбъекта(Метаданные.ОбщиеФормы.НастройкиЭлектроннойПодписиИШифрования.ПолноеИмя()); + + КоличествоСертификатовСИстекающимСрокомДействия = КоличествоСертификатовСИстекающимСрокомДействия(); + + Для Каждого Раздел Из Разделы Цикл + Дело = ТекущиеДела.Добавить (); + Дело.Идентификатор = "ТребуетсяПродлениеСертификата"; + Дело.ЕстьДела = КоличествоСертификатовСИстекающимСрокомДействия > 0; + Дело.Представление = НСтр("ru = 'Требуется продление сертификата'"); + Дело.Количество = КоличествоСертификатовСИстекающимСрокомДействия; + Дело.Важное = Ложь; + Дело.Форма = "ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования"; + Дело.ПараметрыФормы = Новый Структура("СертификатыПоказать", "МоиСертификатыСИстекающимСрокомДействия"); + Дело.Владелец = Раздел; + КонецЦикла; + + Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + + КоличествоЗаявленийВРаботе = КоличествоЗаявленийВРаботе(); + + Для Каждого Раздел Из Разделы Цикл + Дело = ТекущиеДела.Добавить(); + Дело.Идентификатор = "ЗаявленияНаВыпускСертификатаВРаботе"; + Дело.ЕстьДела = КоличествоЗаявленийВРаботе > 0; + Дело.Представление = НСтр("ru = 'Заявления на выпуск сертификата в работе'"); + Дело.Количество = КоличествоЗаявленийВРаботе; + Дело.Важное = Ложь; + Дело.Форма = "ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования"; + Дело.ПараметрыФормы = Новый Структура("СертификатыПоказать", "МоиЗаявленияВРаботе"); + Дело.Владелец = Раздел; + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + #Область ПоставляемыеДанные // См. ПоставляемыеДанныеПереопределяемый.ПолучитьОбработчикиПоставляемыхДанных @@ -517,8 +647,8 @@ ИначеЕсли Операция <> "" Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка в функции МенеджерКриптографии. - |Неверное значение параметра Операция ""%1"".'"), Операция); + НСтр("ru = 'Ошибка в функции %1. + |Неверное значение параметра Операция ""%2"".'"), "МенеджерКриптографии", Операция); ИначеЕсли ТипЗнч(ПараметрыСозданияМенеджераКриптографии.ОписаниеОшибки) = Тип("Структура") И ПараметрыСозданияМенеджераКриптографии.ОписаниеОшибки.Свойство("ЗаголовокОшибки") Тогда @@ -694,7 +824,7 @@ // Структура: // * Наименование - см. НовыеПараметрыРеквизитаСертификата // * Организация - см. НовыеПараметрыРеквизитаСертификата -// * УсиленнаяЗащитаЗакрытогоКлюча - см. НовыеПараметрыРеквизитаСертификата +// * ВводитьПарольВПрограммеЭлектроннойПодписи - см. НовыеПараметрыРеквизитаСертификата // Функция НовыеПараметрыРеквизитовСертификата() Экспорт @@ -863,11 +993,13 @@ ТаблицаСвойствСертификатов.Колонки.Добавить("Отпечаток", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(255))); ТаблицаСвойствСертификатов.Колонки.Добавить("КемВыдан"); ТаблицаСвойствСертификатов.Колонки.Добавить("Представление"); - ТаблицаСвойствСертификатов.Колонки.Добавить("НаКлиенте", Новый ОписаниеТипов("Булево")); - ТаблицаСвойствСертификатов.Колонки.Добавить("НаСервере", Новый ОписаниеТипов("Булево")); - ТаблицаСвойствСертификатов.Колонки.Добавить("ЭтоЗаявление", Новый ОписаниеТипов("Булево")); - ТаблицаСвойствСертификатов.Колонки.Добавить("ВОблачномСервисе", Новый ОписаниеТипов("Булево")); - ТаблицаСвойствСертификатов.Колонки.Добавить("ТипРазмещения", Новый ОписаниеТипов("Число")); + ТаблицаСвойствСертификатов.Колонки.Добавить("НаКлиенте", Новый ОписаниеТипов("Булево")); + ТаблицаСвойствСертификатов.Колонки.Добавить("НаСервере", Новый ОписаниеТипов("Булево")); + ТаблицаСвойствСертификатов.Колонки.Добавить("ЭтоЗаявление", Новый ОписаниеТипов("Булево")); + ТаблицаСвойствСертификатов.Колонки.Добавить("ВОблачномСервисе", Новый ОписаниеТипов("Булево")); + ТаблицаСвойствСертификатов.Колонки.Добавить("ТипРазмещения", Новый ОписаниеТипов("Число")); + ТаблицаСвойствСертификатов.Колонки.Добавить("СостояниеСертификата", Новый ОписаниеТипов("Число")); + ТаблицаСвойствСертификатов.Колонки.Добавить("ЕстьВСправочнике", Новый ОписаниеТипов("Булево")); Для Каждого СвойстваСертификата Из СвойстваСертификатовНаКлиенте Цикл НоваяСтрока = ТаблицаСвойствСертификатов.Добавить(); @@ -962,14 +1094,16 @@ КонецЕсли; КонецЕсли; // Обновление только измененных значений, чтобы таблица формы не обновлялась лишний раз. - ОбновитьЗначение(Строка.Отпечаток, СвойстваСертификата.Отпечаток); - ОбновитьЗначение(Строка.Представление, СвойстваСертификата.Представление); - ОбновитьЗначение(Строка.КемВыдан, СвойстваСертификата.КемВыдан); - ОбновитьЗначение(Строка.НаКлиенте, СвойстваСертификата.НаКлиенте); - ОбновитьЗначение(Строка.НаСервере, СвойстваСертификата.НаСервере); - ОбновитьЗначение(Строка.ЭтоЗаявление, СвойстваСертификата.ЭтоЗаявление); - ОбновитьЗначение(Строка.ВОблачномСервисе, СвойстваСертификата.ВОблачномСервисе); - ОбновитьЗначение(Строка.ТипРазмещения, СвойстваСертификата.ТипРазмещения); + ОбновитьЗначение(Строка.Отпечаток, СвойстваСертификата.Отпечаток); + ОбновитьЗначение(Строка.Представление, СвойстваСертификата.Представление); + ОбновитьЗначение(Строка.КемВыдан, СвойстваСертификата.КемВыдан); + ОбновитьЗначение(Строка.НаКлиенте, СвойстваСертификата.НаКлиенте); + ОбновитьЗначение(Строка.НаСервере, СвойстваСертификата.НаСервере); + ОбновитьЗначение(Строка.ЭтоЗаявление, СвойстваСертификата.ЭтоЗаявление); + ОбновитьЗначение(Строка.ВОблачномСервисе, СвойстваСертификата.ВОблачномСервисе); + ОбновитьЗначение(Строка.ТипРазмещения, СвойстваСертификата.ТипРазмещения); + ОбновитьЗначение(Строка.СостояниеСертификата, СвойстваСертификата.СостояниеСертификата); + ОбновитьЗначение(Строка.ЕстьВСправочнике, СвойстваСертификата.ЕстьВСправочнике); ОбработанныеСтроки.Вставить(Строка, Истина); Индекс = Индекс + 1; КонецЦикла; @@ -1162,6 +1296,55 @@ //////////////////////////////////////////////////////////////////////////////// // Общие процедуры и функции управляемых форм. +// Только для внутреннего использования. +// +// Параметры: +// СписокСертификатов - СписокЗначений - список сертификатов, в который нужно добавить сертификаты из личного хранилища. +// Ошибка - Строка - ошибка +// +Процедура ДополнитьСписокСертификатовВЛичномХранилищеНаСервере(СписокСертификатов, Ошибка = "") Экспорт + + Если ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда + + ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии(); + ПараметрыСоздания.ОписаниеОшибки = Ошибка; + + МенеджерКриптографии = МенеджерКриптографии("ПолучениеСертификатов", ПараметрыСоздания); + + Ошибка = ПараметрыСоздания.ОписаниеОшибки; + Если МенеджерКриптографии <> Неопределено Тогда + + МассивСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов( + ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты).ПолучитьВсе(); + + Для Каждого Элемент Из МассивСертификатов Цикл + СписокСертификатов.Добавить(Base64Строка(Элемент.Отпечаток)); + КонецЦикла; + + КонецЕсли; + + КонецЕсли; + + Если ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда + + МодульХранилищеСертификатов = ОбщегоНазначения.ОбщийМодуль("ХранилищеСертификатов"); + МассивСертификатов = МодульХранилищеСертификатов.Получить("ПерсональныеСертификаты"); + Для Каждого Элемент Из МассивСертификатов Цикл + СписокСертификатов.Добавить(Base64Строка(Элемент.Отпечаток)); + КонецЦикла; + + КонецЕсли; + + Если ИспользоватьСервисОблачнойПодписи() Тогда + МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный"); + МассивСертификатов = МодульСервисКриптографииDSSСлужебный.ПолучитьДанныеСертификатов(Ложь); + Для Каждого Элемент Из МассивСертификатов Цикл + СписокСертификатов.Добавить(Base64Строка(Элемент.Отпечаток)); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + // Только для внутреннего использования. Процедура НастроитьФормуПодписанияШифрованияРасшифровки(Форма, Шифрование = Ложь, Расшифровка = Ложь) Экспорт @@ -1310,7 +1493,7 @@ СохраненныеСвойства.Вставить("Наименование"); СохраненныеСвойства.Вставить("Пользователь"); СохраненныеСвойства.Вставить("Организация"); - СохраненныеСвойства.Вставить("УсиленнаяЗащитаЗакрытогоКлюча"); + СохраненныеСвойства.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи"); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Отпечаток", Отпечаток); @@ -1320,7 +1503,7 @@ | Сертификаты.Наименование КАК Наименование, | Сертификаты.Пользователь, | Сертификаты.Организация, - | Сертификаты.УсиленнаяЗащитаЗакрытогоКлюча, + | Сертификаты.ВводитьПарольВПрограммеЭлектроннойПодписи, | Сертификаты.ДанныеСертификата |ИЗ | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты @@ -1365,7 +1548,7 @@ ЗаполнитьРеквизит(СохраненныеСвойства, ПараметрыРеквизитов, "Наименование"); ЗаполнитьРеквизит(СохраненныеСвойства, ПараметрыРеквизитов, "Пользователь"); ЗаполнитьРеквизит(СохраненныеСвойства, ПараметрыРеквизитов, "Организация"); - ЗаполнитьРеквизит(СохраненныеСвойства, ПараметрыРеквизитов, "УсиленнаяЗащитаЗакрытогоКлюча"); + ЗаполнитьРеквизит(СохраненныеСвойства, ПараметрыРеквизитов, "ВводитьПарольВПрограммеЭлектроннойПодписи"); КонецЕсли; Если Не ЗначениеЗаполнено(СохраненныеСвойства.Ссылка) @@ -1402,8 +1585,8 @@ Если Не ДляШифрования Тогда ДополнительныеПараметры.Вставить("Программа", Программа); - ДополнительныеПараметры.Вставить("УсиленнаяЗащитаЗакрытогоКлюча", - Форма.СертификатУсиленнаяЗащитаЗакрытогоКлюча); + ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи", + Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи); КонецЕсли; Если Не ЗначениеЗаполнено(Форма.Сертификат) Тогда @@ -1411,7 +1594,7 @@ ПропускаемыеРеквизиты.Вставить("Ссылка", Истина); ПропускаемыеРеквизиты.Вставить("Наименование", Истина); ПропускаемыеРеквизиты.Вставить("Организация", Истина); - ПропускаемыеРеквизиты.Вставить("УсиленнаяЗащитаЗакрытогоКлюча", Истина); + ПропускаемыеРеквизиты.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи", Истина); Если Не ДляШифрования И Форма.ЛичныйСписокПриДобавлении Тогда ПропускаемыеРеквизиты.Вставить("Пользователь", Истина); КонецЕсли; @@ -1547,10 +1730,10 @@ // Параметры: // Форма - ФормаКлиентскогоПриложения // -Процедура НастроитьПояснениеВводаПароля(Форма, ИмяЭлементаУсиленнаяЗащитаЗакрытогоКлюча = "", ИмяЭлементаПояснениеУсиленногоПароля = "") Экспорт +Процедура НастроитьПояснениеВводаПароля(Форма, ИмяЭлементаВводитьПарольВПрограммеЭлектроннойПодписи = "", ИмяЭлементаПояснениеУсиленногоПароля = "") Экспорт - Если ЗначениеЗаполнено(ИмяЭлементаУсиленнаяЗащитаЗакрытогоКлюча) Тогда - Элемент = Форма.Элементы[ИмяЭлементаУсиленнаяЗащитаЗакрытогоКлюча]; // ПолеФормы + Если ЗначениеЗаполнено(ИмяЭлементаВводитьПарольВПрограммеЭлектроннойПодписи) Тогда + Элемент = Форма.Элементы[ИмяЭлементаВводитьПарольВПрограммеЭлектроннойПодписи]; // ПолеФормы Элемент.Заголовок = НСтр("ru = 'Вводить пароль в программе электронной подписи'"); Элемент.Подсказка = НСтр("ru = '- Включается интерактивный режим работы программы электронной подписи, @@ -1563,8 +1746,7 @@ Если ЗначениеЗаполнено(ИмяЭлементаПояснениеУсиленногоПароля) Тогда Элемент = Форма.Элементы[ИмяЭлементаПояснениеУсиленногоПароля]; Элемент.Подсказка = - НСтр("ru = 'Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, - |так как для выбранного сертификата включен режим ""Вводить пароль в программе электронной подписи"".'"); + НСтр("ru = 'Для выбранного сертификата указано ""Вводить пароль в программе электронной подписи"".'"); КонецЕсли; КонецПроцедуры @@ -1849,12 +2031,13 @@ Возврат ВозвращаемоеЗначение; Иначе Если ПодписьВерна Тогда - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue корректно, DigestValue некорректно).'") + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 корректно, %2 некорректно).'") ИначеЕсли ХешСовпадает Тогда - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue некорректно, DigestValue корректно).'"); + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 некорректно, %2 корректно).'"); Иначе - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue некорректно, DigestValue некорректно).'"); + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 некорректно, %2 некорректно).'"); КонецЕсли; + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, "SignatureValue", "DigestValue"); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2033,7 +2216,8 @@ ОписаниеКомпоненты.ПолноеИмяМакета); Если ОбъектКомпоненты = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту ExtraCryptoAPI.'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось подключить внешнюю компоненту %1.'"), ОписаниеКомпоненты.ИмяОбъекта); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2049,7 +2233,8 @@ ОбъектКомпоненты.СоответствиеOID = ЭлектроннаяПодписьСлужебныйКлиентСервер.ИдентификаторыАлгоритмовХешированияИОткрытогоКлюча(); Исключение - ТекстОшибки = НСтр("ru = 'При установке свойства СоответствиеOID компоненты ExtraCryptoAPI произошла ошибка:'") + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При установке свойства %1 компоненты %2 произошла ошибка:'"), "СоответствиеOID", "ExtraCryptoAPI") + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ВызватьИсключение ТекстОшибки; КонецПопытки; @@ -2142,14 +2327,14 @@ Попытка КанонизированныйТекстXML = ОбъектКомпоненты.C14N(КонвертXML, XPath); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода C14N компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если КанонизированныйТекстXML = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода C14N компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2206,14 +2391,14 @@ КанонизированныйТекстXML = ОбъектКомпоненты.c14n_body(ТекстXML, Алгоритм.Версия, Алгоритм.СКомментариями); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода C14N_body компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если КанонизированныйТекстXML = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода C14N_body компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2226,14 +2411,14 @@ Попытка КанонизированныйТекстXML = ОбъектКомпоненты.TransformSMEV(ТекстXML); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если КанонизированныйТекстXML = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2249,14 +2434,14 @@ OIDАлгоритмаХеширования, ТипКриптопровайдера); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если АтрибутDigestValue = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2276,14 +2461,14 @@ СертификатКриптографииBase64, ПарольДоступаКЗакрытомуКлючу); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода Sign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Sign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если АтрибутSignatureValue = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода Sign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Sign", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2301,14 +2486,14 @@ СертификатКриптографииBase64, ТипКриптопровайдера); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода VerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если ПодписьВерна = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода VerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2332,14 +2517,14 @@ ПараметрыКомпоненты.Открепленная, ПараметрыКомпоненты.ВключениеСертификатовВПодпись); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода CMSSign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSSign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если Не ЗначениеЗаполнено(АтрибутSignatureValue) Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода CMSSign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSSign", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; КонецЕсли; @@ -2354,14 +2539,14 @@ ПодписьВерна = ОбъектКомпоненты.CMSVerifySign(Подпись, ПараметрыCMS.Открепленная, Данные, ТипКриптопровайдера, Сертификат); Исключение - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода CMSVerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSVerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ТекстОшибки; КонецПопытки; Если ПодписьВерна = Неопределено Тогда - ТекстОшибки = НСтр("ru = 'Ошибка вызова метода CMSVerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ОбъектКомпоненты.GetLastError(); + ТекстОшибки = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSVerifySign", + ОбъектКомпоненты.GetLastError()); ВызватьИсключение ТекстОшибки; ИначеЕсли Не ПодписьВерна Тогда @@ -2386,6 +2571,7 @@ КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Вспомогательные процедуры и функции. @@ -2411,7 +2597,8 @@ |ИЗ | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК Сертификаты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Отпечатки КАК Отпечатки - | ПО Сертификаты.Отпечаток = Отпечатки.Отпечаток"; + | ПО Сертификаты.Отпечаток = Отпечатки.Отпечаток + | И &ДополнительноеСоединение"; Если Метаданные.Обработки.Найти("ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата") <> Неопределено Тогда ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = @@ -2419,6 +2606,8 @@ "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросПриДобавленииСертификатов( Запрос.Текст); + Иначе + Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &ДополнительноеСоединение", ""); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); @@ -2436,6 +2625,7 @@ Иначе Строка.Представление = Выборка.Представление; Строка.ЭтоЗаявление = Выборка.ЭтоЗаявление; + Строка.ЕстьВСправочнике = Истина; КонецЕсли; КонецЦикла; @@ -2747,8 +2937,8 @@ КонецЕсли; ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Форма.Сертификат, - "УсиленнаяЗащитаЗакрытогоКлюча, Отпечаток, Программа, - |ДействителенДо, ПользовательОповещенОСрокеДействия, ДанныеСертификата"); + "ВводитьПарольВПрограммеЭлектроннойПодписи, Отпечаток, Программа, + |ДействителенДо, ДанныеСертификата"); Попытка ДвоичныеДанныеСертификата = ЗначенияРеквизитов.ДанныеСертификата.Получить(); @@ -2782,12 +2972,16 @@ Форма.СертификатПрограмма = ЗначенияРеквизитов.Программа; Форма.ВыполнятьВМоделиСервиса = ЭтоПрограммаОблачногоСервиса; Форма.СертификатДействителенДо = ЗначенияРеквизитов.ДействителенДо; - Форма.СертификатУсиленнаяЗащитаЗакрытогоКлюча = ЗначенияРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча; - - Форма.ОповеститьОбОкончанииСрокаДействия = - Не ЗначенияРеквизитов.ПользовательОповещенОСрокеДействия - И ДобавитьМесяц(ТекущаяДатаСеанса(), 1) > Форма.СертификатДействителенДо; + Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи = ЗначенияРеквизитов.ВводитьПарольВПрограммеЭлектроннойПодписи; + ЕстьПараметрОповеститьОбОкончанииСрокаДействия = Форма.Параметры.Свойство("ОповеститьОбОкончанииСрокаДействия"); + Если ЕстьПараметрОповеститьОбОкончанииСрокаДействия И Форма.Параметры.ОповеститьОбОкончанииСрокаДействия + Или Не ЕстьПараметрОповеститьОбОкончанииСрокаДействия Тогда + Форма.ОповеститьОбОкончанииСрокаДействия = Форма.СертификатДействителенДо <= ТекущаяУниверсальнаяДата() + 30*24*60*60 + И РегистрыСведений.ОповещенияПользователейСертификатов.ПрочитатьОтметкуОНапоминании(Форма.Сертификат) <> Истина + И Не СертификатПеревыпущен(Форма.Сертификат); + КонецЕсли; + Форма.СертификатНаСервереОписаниеОшибки = Новый Структура; Если Не ЭлектроннаяПодпись.СоздаватьЭлектронныеПодписиНаСервере() Тогда @@ -3096,7 +3290,8 @@ МодульВнешниеКомпонентыСлужебный = ОбщегоНазначения.ОбщийМодуль("ВнешниеКомпонентыСлужебный"); ПараметрыКомпоненты = МодульВнешниеКомпонентыСлужебный.ПараметрыЗагрузки(); ПараметрыКомпоненты.Идентификатор = ОписаниеКомпоненты.ИмяОбъекта; - ПараметрыКомпоненты.Наименование = НСтр("ru='ExtraCryptoAPI для 1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()); + ПараметрыКомпоненты.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='%1 для 1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()), "ExtraCryptoAPI"); ПараметрыКомпоненты.Версия = КомпонентаПоследнейВерсииИзМакета.Версия; ПараметрыКомпоненты.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Добавлена обработчиком обновления %1.'", ОбщегоНазначения.КодОсновногоЯзыка()), ТекущаяДатаСеанса()); @@ -3107,6 +3302,79 @@ КонецПроцедуры +Функция СертификатПеревыпущен(Сертификат) + + Если ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + ВыпущенныеСертификаты = ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ВыпущенныеСертификаты(Сертификат); + Если ВыпущенныеСертификаты.Количество() > 0 Тогда + Возврат Истина; + КонецЕсли; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + + +Функция КоличествоСертификатовСИстекающимСрокомДействия() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ПОМЕСТИТЬ СертификатыПользователя + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователь = &Пользователь + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь = &Пользователь + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка) КАК Количество + |ИЗ + | СертификатыПользователя КАК СертификатыПользователя + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК + | СертификатыКлючейЭлектроннойПодписиИШифрования + | ПО СертификатыПользователя.Ссылка = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ГДЕ + | НЕ СертификатыКлючейЭлектроннойПодписиИШифрования.ПометкаУдаления + | И СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо >= &ТекущаяДата + | И СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо <= &Дата + | И НЕ СертификатыКлючейЭлектроннойПодписиИШифрования.Отозван"; + + ТекущаяДата = ТекущаяУниверсальнаяДата(); + Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата); + Запрос.УстановитьПараметр("Дата", ТекущаяДата + 30*24*60*60); + Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); + + Возврат Запрос.Выполнить().Выгрузить()[0].Количество; + +КонецФункции + +Функция КоличествоЗаявленийВРаботе() + + ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = + ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата"); + + Возврат ОбработкаЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.КоличествоЗаявленийВРаботе(); + +КонецФункции + #Область СвойстваКонвертаXML Функция ОбработатьУзелSignedInfo(УзелSignedInfo, СвойстваКонвертаXML) @@ -3977,8 +4245,8 @@ СтрокаПреобразованная.Добавить(СтрСоединить(СтрокаБезСсылок)); КонецЕсли; - Возврат Новый ФорматированнаяСтрока(СтрокаПреобразованная); // АПК:1356 - можно использовать составную форматированную строку, так как массив строк формируется из переданного в функцию текста. - + Возврат Новый ФорматированнаяСтрока(СтрокаПреобразованная); // АПК:1356 - можно использовать составную форматированную строку, + // так как массив строк формируется из переданного в функцию текста. КонецФункции Функция ЭтоСимволСсылки(Символ) @@ -4069,11 +4337,7 @@ Функция ОбновитьКлассификатор() ДатаПоследнегоОбновления = Константы.ДатаПоследнегоОбновленияКлассификатораОшибок.Получить(); - Если ЗначениеЗаполнено(ДатаПоследнегоОбновления) - И ТекущаяУниверсальнаяДата() - ДатаПоследнегоОбновления < 24*3600 Тогда - - Возврат ""; - КонецЕсли; + ДатаПоследнегоИзменения = Неопределено; АдресКлассификатора = АдресКлассификатораОшибок(); ПолныйАдрес = АдресКлассификатора.Протокол + АдресКлассификатора.АдресСервера + "/" + АдресКлассификатора.АдресРесурса; @@ -4082,10 +4346,19 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда - МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); - РезультатЗагрузки = МодульПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище(ПолныйАдрес,, Ложь); + МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер"); + ПараметрыПолученияФайла = МодульПолучениеФайловИзИнтернетаКлиентСервер.ПараметрыПолученияФайла(); + ПараметрыПолученияФайла.Заголовки.Вставить("If-Modified-Since", + ОбщегоНазначенияКлиентСервер.ДатаHTTP(ДатаПоследнегоОбновления)); - Если РезультатЗагрузки.Статус Тогда + МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + РезультатЗагрузки = МодульПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище( + ПолныйАдрес, ПараметрыПолученияФайла, Ложь); + + Если РезультатЗагрузки.КодСостояния = 304 Тогда // Классификатор не был обновлен. + Возврат ""; + ИначеЕсли РезультатЗагрузки.Статус Тогда + ДатаПоследнегоИзменения = ДатаПоследнегоИзмененияФайла(РезультатЗагрузки); ДанныеКлассификатора = ПолучитьИзВременногоХранилища(РезультатЗагрузки.Путь); УдалитьИзВременногоХранилища(РезультатЗагрузки.Путь); Иначе @@ -4098,14 +4371,17 @@ Заголовки = Новый Соответствие; Заголовки.Вставить("Accept-Charset", "UTF-8"); + Заголовки.Вставить("If-Modified-Since", ОбщегоНазначенияКлиентСервер.ДатаHTTP(ДатаПоследнегоОбновления)); Ответ = Соединение.Получить( Новый HTTPЗапрос(АдресКлассификатора.АдресРесурса, Заголовки)); - - Если Ответ.КодСостояния = 200 Тогда + + Если Ответ.КодСостояния = 304 Тогда // Классификатор не был обновлен. + Возврат ""; + ИначеЕсли Ответ.КодСостояния = 200 Тогда + ДатаПоследнегоИзменения = ДатаПоследнегоИзмененияФайла(Ответ); ДанныеКлассификатора = Ответ.ПолучитьТелоКакСтроку(); - Иначе - ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Иначе ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'HTTP ответ - %1'"), Строка(Ответ.КодСостояния)); КонецЕсли; @@ -4127,44 +4403,73 @@ ТекстОшибки); КонецЕсли; - ЗаписатьДанныеКлассификатора(ДанныеКлассификатора); + ЗаписатьДанныеКлассификатора(ДанныеКлассификатора, ДатаПоследнегоИзменения); Возврат ""; КонецФункции -Процедура ЗаписатьДанныеКлассификатора(ДанныеКлассификатора) +Функция ДатаПоследнегоИзмененияФайла(РезультатЗагрузки) - ЧтениеJSON = Новый ЧтениеJSON; - Если ТипЗнч(ДанныеКлассификатора) = Тип("Строка") Тогда - ЧтениеJSON.УстановитьСтроку(ДанныеКлассификатора); - Иначе - ЧтениеJSON.ОткрытьПоток(ДанныеКлассификатора.ОткрытьПотокДляЧтения()); + Заголовки = Неопределено; + Если ТипЗнч(РезультатЗагрузки) = Тип("Структура") Тогда + Заголовки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатЗагрузки, "Заголовки", Неопределено); + ИначеЕсли ТипЗнч(РезультатЗагрузки) = Тип("HTTPОтвет") Тогда + Заголовки = РезультатЗагрузки.Заголовки; КонецЕсли; - КлассификаторОшибок = ПрочитатьJSON(ЧтениеJSON,, "LastChangeDate"); - ЧтениеJSON.Закрыть(); + Если Заголовки = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; - ПредставлениеКлассификатора = ПредставлениеКлассификатораДляХранения(); - Для Каждого ИзвестнаяОшибка Из КлассификаторОшибок.Classifier Цикл - - НоваяОшибка = ПредставлениеКлассификатора.Добавить(); - НоваяОшибка.Ссылка = ИзвестнаяОшибка.Anchor; - НоваяОшибка.Причина = ИзвестнаяОшибка.Reason; - НоваяОшибка.Решение = ИзвестнаяОшибка.Solution; - НоваяОшибка.ТекстОшибки = ИзвестнаяОшибка.ErrorText; - НоваяОшибка.СпособУстранения = ИзвестнаяОшибка.RepairMethods; - - КонецЦикла; + ДатаПоследнегоИзмененияСтрока = Заголовки["Last-Modified"]; + Если ДатаПоследнегоИзмененияСтрока <> Неопределено Тогда + Возврат ОбщегоНазначенияКлиентСервер.ДатаRFC1123(ДатаПоследнегоИзмененияСтрока); + КонецЕсли; - Константы.КлассификаторОшибокКриптографии.Установить( - Новый ХранилищеЗначения(ПредставлениеКлассификатора, Новый СжатиеДанных(9))); + Возврат Неопределено; + +КонецФункции + +Процедура ЗаписатьДанныеКлассификатора(ДанныеКлассификатора, ДатаПоследнегоИзменения = Неопределено) - Константы.ДатаПоследнегоОбновленияКлассификатораОшибок.Установить( - ТекущаяУниверсальнаяДата()); + Если ДанныеКлассификатора <> Неопределено Тогда + + ЧтениеJSON = Новый ЧтениеJSON; + Если ТипЗнч(ДанныеКлассификатора) = Тип("Строка") Тогда + ЧтениеJSON.УстановитьСтроку(ДанныеКлассификатора); + Иначе + ЧтениеJSON.ОткрытьПоток(ДанныеКлассификатора.ОткрытьПотокДляЧтения()); + КонецЕсли; + КлассификаторОшибок = ПрочитатьJSON(ЧтениеJSON,, "LastChangeDate"); + ЧтениеJSON.Закрыть(); + + ПредставлениеКлассификатора = ПредставлениеКлассификатораДляХранения(); + Для Каждого ИзвестнаяОшибка Из КлассификаторОшибок.Classifier Цикл + + НоваяОшибка = ПредставлениеКлассификатора.Добавить(); + НоваяОшибка.Ссылка = ИзвестнаяОшибка.Anchor; + НоваяОшибка.Причина = ИзвестнаяОшибка.Reason; + НоваяОшибка.Решение = ИзвестнаяОшибка.Solution; + НоваяОшибка.ТекстОшибки = ИзвестнаяОшибка.ErrorText; + НоваяОшибка.СпособУстранения = ИзвестнаяОшибка.RepairMethods; + + КонецЦикла; + + Константы.КлассификаторОшибокКриптографии.Установить( + Новый ХранилищеЗначения(ПредставлениеКлассификатора, Новый СжатиеДанных(9))); + + КонецЕсли; + + Если ДатаПоследнегоИзменения <> Неопределено Тогда + Константы.ДатаПоследнегоОбновленияКлассификатораОшибок.Установить( + ДатаПоследнегоИзменения); + КонецЕсли; + КонецПроцедуры + #КонецОбласти #Область ДиагностикаЭлектроннойПодписи @@ -4236,7 +4541,8 @@ ВерсияКомпоненты = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; - Возврат НСтр("ru = 'Версия компоненты ExtraCryptoAPI на сервере'") + " - " + ВерсияКомпоненты; + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Версия компоненты %1 на сервере - %2'"), "ExtraCryptoAPI", ВерсияКомпоненты); КонецФункции @@ -4370,4 +4676,236 @@ #КонецОбласти +#Область ОбновлениеИнформационнойБазы + +// Заменяет роль ДобавлениеИзменениеЭлектронныхПодписейИШифрование во всех профилях, в которые она входит +// на роли ДобавлениеИзменениеЭлектронныхПодписей, ДобавлениеИзменениеСертификатовКлючейЭлектроннойПодписиИШифрования +// и ШифрованиеИРасшифровкаДанных. +// +Процедура ЗаменитьРольДобавлениеИзменениеЭлектронныхПодписейИШифрование() Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + Возврат; + КонецЕсли; + + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); + + НовыеРоли = Новый Массив; + НовыеРоли.Добавить("ДобавлениеИзменениеЭлектронныхПодписей"); + НовыеРоли.Добавить("ШифрованиеИРасшифровкаДанных"); + НовыеРоли.Добавить("ДобавлениеИзменениеСертификатовКлючейЭлектроннойПодписиИШифрования"); + ЗаменяемыеРоли = Новый Соответствие; + ЗаменяемыеРоли.Вставить("? ДобавлениеИзменениеЭлектронныхПодписейИШифрование", НовыеРоли); + + МодульУправлениеДоступом.ЗаменитьРолиВПрофилях(ЗаменяемыеРоли); + +КонецПроцедуры + +#КонецОбласти + +#Область СодержимоеСертификата + +// Содержит встроенную лицензию КриптоПро. +// +// Параметры: +// Данные - ДвоичныеДанные - данные сертификата +// +// Возвращаемое значение: +// Булево +// +Функция СодержитВстроеннуюЛицензиюКриптоПро(Данные) Экспорт + + АнализДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыйАнализДанных(Данные); + + // TBSCertificate ::= SEQUENCE { + // version [0] EXPLICIT Version DEFAULT v1, + // ... + // extensions [3] EXPLICIT Extensions OPTIONAL + // -- If present, version MUST be v3 + + // SEQUENCE (Certificate). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + // SEQUENCE (tbsCertificate). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + // [0] EXPLICIT (version). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 2, 0); + // INTEGER {v1(0), v2(1), v3(2)}. + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 2); + Целое = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьПотоковоеЦелое(АнализДанных); + Если Целое <> 2 Тогда + Возврат Ложь; + КонецЕсли; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); + // version + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); + // INTEGER (serialNumber CertificateSerialNumber). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 2); + // SEQUENCE (signature AlgorithmIdentifier). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (issuer Name). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (validity Validity). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (subject Name). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (subjectPublicKeyInfo SubjectPublicKeyInfo). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // [1] IMPLICIT UniqueIdentifier OPTIONAL (issuerUniqueID). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 1, Ложь); + // [2] IMPLICIT UniqueIdentifier OPTIONAL (subjectUniqueID). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 2, Ложь); + // [3] EXPLICIT SEQUENCE SIZE (1..MAX) OF Extension (extensions). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 2, 3); + Если АнализДанных.ЕстьОшибка Тогда + Возврат Ложь; + КонецЕсли; + // SEQUENCE OF + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + СмещениеСледующего = АнализДанных.Родители[0].СмещениеСледующего; + Пока АнализДанных.Смещение < СмещениеСледующего Цикл + // SEQUENCE (extension). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + Если АнализДанных.ЕстьОшибка Тогда + Возврат Ложь; + КонецЕсли; + // OBJECT IDENTIFIER + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 6); + РазмерДанных = АнализДанных.Родители[0].РазмерДанных; + Если РазмерДанных = 0 Тогда + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПриОшибкеСтруктурыДанных(АнализДанных); + Возврат Ложь; + КонецЕсли; + Если РазмерДанных = 7 Тогда + Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных + СтрокаБуфера = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер); + Если СтрокаБуфера = "2A850302023102" Тогда // 1.2.643.2.2.49.2 + Возврат Истина; + КонецЕсли; + КонецЕсли; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +// Расширенные данные для печати сертификата. +// +// Параметры: +// Данные - ДвоичныеДанные - данные сертификата +// +// Возвращаемое значение: +// Структура - расширенные данные для печати сертификата: +// * ТипИдентификации - Число +// * СКЗИ - Строка +// * Заключение - Строка +// * СКЗИ_УЦ - Строка +// * ЗаключениеУЦ - Строка +// * Подпись - ДвоичныеДанные +// +Функция РасширенныеДанныеДляПечатиСертификата(Данные) Экспорт + + Структура = Новый Структура("ТипИдентификации, СКЗИ, Заключение, СКЗИ_УЦ, ЗаключениеУЦ, Подпись"); + + АнализДанных = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыйАнализДанных(Данные); + // SEQUENCE (Certificate). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + // SEQUENCE (tbsCertificate). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + // [0] EXPLICIT (version). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 0); + // INTEGER (serialNumber CertificateSerialNumber). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 2); + // SEQUENCE (signature AlgorithmIdentifier). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (issuer Name). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (validity Validity). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (subject Name). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // SEQUENCE (subjectPublicKeyInfo SubjectPublicKeyInfo). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); + // [1] IMPLICIT UniqueIdentifier OPTIONAL (issuerUniqueID). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 1, Ложь); + // [2] IMPLICIT UniqueIdentifier OPTIONAL (subjectUniqueID). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 2, 2, Ложь); + // [3] EXPLICIT SEQUENCE SIZE (1..MAX) OF Extension (extensions). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 2, 3); + // SEQUENCE OF + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + СмещениеСледующего = АнализДанных.Родители[0].СмещениеСледующего; + Пока АнализДанных.Смещение < СмещениеСледующего Цикл + // SEQUENCE (extension). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); + Если АнализДанных.ЕстьОшибка Тогда + Прервать; + КонецЕсли; + // OBJECT IDENTIFIER + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 6); + РазмерДанных = АнализДанных.Родители[0].РазмерДанных; + Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных + СтрокаБуфера = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер); // Идентификатор + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // OBJECT IDENTIFIER + + Если СтрокаБуфера = "2A85036470" Тогда // 1.2.643.100.112 + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 4); // OCTET STRING + // IssuerSignTool ::= SEQUENCE { + // signTool UTF8String SIZE(1..200), + // cATool UTF8String SIZE(1..200), + // signToolCert UTF8String SIZE(1..100), + // cAToolCert UTF8String SIZE(1..100) }. + // SEQUENCE (IssuerSignTool). + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 16); // SEQUENCE + Структура.СКЗИ = СтрокаUTF8(АнализДанных); + Структура.СКЗИ_УЦ = СтрокаUTF8(АнализДанных); + Структура.Заключение = СтрокаUTF8(АнализДанных); + Структура.ЗаключениеУЦ = СтрокаUTF8(АнализДанных); + АнализДанных.Родители.Удалить(0); // SEQUENCE + АнализДанных.Родители.Удалить(0); // OCTET STRING + ИначеЕсли СтрокаБуфера = "2A85036472" Тогда // 1.2.643.100.114 + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 4); // OCTET STRING + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 2); // INTEGER + Структура.ТипИдентификации = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПрочитатьПотоковоеЦелое(АнализДанных); + АнализДанных.Родители.Удалить(0); // INTEGER + АнализДанных.Родители.Удалить(0); // OCTET STRING + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE + КонецЦикла; + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE OF + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // EXPLICIT SEQUENCE + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // SEQUENCE (tbsCertificate) + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьБлок(АнализДанных, 0, 16); // signatureAlgorithm + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 3); // signatureValue + Если НЕ АнализДанных.ЕстьОшибка Тогда + РазмерДанных = АнализДанных.Родители[0].РазмерДанных; + Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных + Структура.Подпись = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Буфер); + Иначе + ВызватьИсключение НСтр("ru = 'Ошибка при чтении расширенных данных сертификата.'"); + КонецЕсли; + + Возврат Структура; + +КонецФункции + +Функция СтрокаUTF8(АнализДанных) + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьНачалоБлока(АнализДанных, 0, 12); // UTF8String + + РазмерДанных = АнализДанных.Родители[0].РазмерДанных; + Буфер = АнализДанных.Буфер.Прочитать(АнализДанных.Смещение, РазмерДанных); // БуферДвоичныхДанных + Строка = ПолучитьСтрокуИзБуфераДвоичныхДанных(Буфер, "UTF-8"); + + ЭлектроннаяПодписьСлужебныйКлиентСервер.ПропуститьРодительскийБлок(АнализДанных); // UTF8String + + Возврат Строка; + +КонецФункции + +#КонецОбласти + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйВызовСервера/Module.bsl index 422d356e1..35b945037 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйВызовСервера/Module.bsl @@ -295,8 +295,8 @@ Если ЭтоXMLDSig Тогда Если Параметры.Операция <> "Подписание" Тогда - ОшибкаНаСервере.Вставить("ОписаниеОшибки", - НСтр("ru = 'Внешняя компонента ExtraCryptoAPI может использоваться только для подписания.'")); + ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Внешняя компонента %1 может использоваться только для подписания.'"), "ExtraCryptoAPI")); Возврат Ложь; КонецЕсли; @@ -314,8 +314,8 @@ ИначеЕсли ЭтоCMS Тогда Если Параметры.Операция <> "Подписание" Тогда - ОшибкаНаСервере.Вставить("ОписаниеОшибки", - НСтр("ru = 'Внешняя компонента ExtraCryptoAPI может использоваться только для подписания.'")); + ОшибкаНаСервере.Вставить("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Внешняя компонента %1 может использоваться только для подписания.'"), "ExtraCryptoAPI")); Возврат Ложь; КонецЕсли; @@ -597,6 +597,12 @@ КонецФункции +Процедура ИзменитьОтметкуОНапоминании(Сертификат, Напомнить, ИдентификаторНапоминания) Экспорт + + ЭлектроннаяПодписьСлужебный.ИзменитьОтметкуОНапоминании(Сертификат, Напомнить, ИдентификаторНапоминания); + +КонецПроцедуры + #Область ДиагностикаЭлектроннойПодписи Процедура ДобавитьОписаниеДополнительныхДанных(ДополнительныеДанные, ОписаниеФайлов, Сведения) Экспорт @@ -644,7 +650,7 @@ Если ТипЗнч(Сертификат) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( - Сертификат, "Наименование, Программа, УсиленнаяЗащитаЗакрытогоКлюча, ДанныеСертификата"); + Сертификат, "Наименование, Программа, ВводитьПарольВПрограммеЭлектроннойПодписи, ДанныеСертификата"); Если ТипЗнч(ЗначенияРеквизитов.ДанныеСертификата) = Тип("ХранилищеЗначения") Тогда ДанныеСертификата = ЗначенияРеквизитов.ДанныеСертификата.Получить(); @@ -701,7 +707,7 @@ Сведения = Сведения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Символы.Таб + НСтр("ru = 'Вводить пароль в программе электронной подписи: %1'"), - ?(ЗначенияРеквизитов.УсиленнаяЗащитаЗакрытогоКлюча = Истина, НСтр("ru = 'Да'"), НСтр("ru = 'Нет'"))) + Символы.ПС; + ?(ЗначенияРеквизитов.ВводитьПарольВПрограммеЭлектроннойПодписи = Истина, НСтр("ru = 'Да'"), НСтр("ru = 'Нет'"))) + Символы.ПС; КонецЕсли; ОписаниеФайлов.Добавить(ОписаниеФайла); diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиент/Module.bsl index 8e5442115..b9fde24bb 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиент/Module.bsl @@ -483,9 +483,9 @@ ИначеЕсли ТипЗнч(Контекст.ДанныеСертификата) <> Тип("Строка") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка при вызове процедуры ОткрытьСертификат общего модуля ЭлектроннаяПодписьКлиент: - |Некорректное значение параметра ДанныеСертификата ""%1"".'"), - Строка(Контекст.ДанныеСертификата)); + НСтр("ru = 'Ошибка при вызове процедуры %1 общего модуля %2: + |Некорректное значение параметра %3 ""%4"".'"), + "ОткрытьСертификат", "ЭлектроннаяПодписьКлиент", "ДанныеСертификата", Строка(Контекст.ДанныеСертификата)); ИначеЕсли ЭтоАдресВременногоХранилища(Контекст.ДанныеСертификата) Тогда Контекст.АдресСертификата = Контекст.ДанныеСертификата; @@ -707,6 +707,22 @@ КонецПроцедуры +// Параметры записи сертификата. +// +// Возвращаемое значение: +// Структура - параметры оповещения при записи сертификата и изменении статуса заявления: +// * ЭтоНовый - Булево - добавление сертификата в справочник. +// * Установлен - Булево - сертификат установлен в личное хранилище. +// +Функция ПараметрыОповещенияПриЗаписиСертификата() Экспорт + + ПараметрыОповещенияПриЗаписиСертификата = Новый Структура; + ПараметрыОповещенияПриЗаписиСертификата.Вставить("ЭтоНовый", Ложь); + ПараметрыОповещенияПриЗаписиСертификата.Вставить("Установлен", Ложь); + Возврат ПараметрыОповещенияПриЗаписиСертификата; + +КонецФункции + // Находит сертификат на компьютере по строке отпечатка. // // Параметры: @@ -1682,8 +1698,8 @@ ИначеЕсли Операция <> "" Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ошибка в функции МенеджерКриптографии. - |Неверное значение параметра Операция ""%1"".'"), Операция); + НСтр("ru = 'Ошибка в функции %1. + |Неверное значение параметра Операция ""%2"".'"), "МенеджерКриптографии", Операция); Иначе ЗаголовокОшибки = НСтр("ru = 'Не удалось выполнить операцию по причине:'"); КонецЕсли; @@ -2252,15 +2268,17 @@ ДополнительныеПараметры = Неопределено, ОбработкаПродолжения = Неопределено) Экспорт Если ТипЗнч(ОшибкаНаКлиенте) <> Тип("Структура") Тогда - ВызватьИсключение - НСтр("ru = 'Для процедуры ПоказатьОшибкуОбращенияКПрограмме - |указан некорректный тип параметра ОшибкаНаКлиенте.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для процедуры %1 + |указан некорректный тип параметра %2.'"), + "ПоказатьОшибкуОбращенияКПрограмме", "ОшибкаНаКлиенте"); КонецЕсли; Если ТипЗнч(ОшибкаНаСервере) <> Тип("Структура") Тогда - ВызватьИсключение - НСтр("ru = 'Для процедуры ПоказатьОшибкуОбращенияКПрограмме - |указан некорректный тип параметра ОшибкаНаСервере.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для процедуры %1 + |указан некорректный тип параметра %2.'"), + "ПоказатьОшибкуОбращенияКПрограмме", "ОшибкаНаСервере"); КонецЕсли; ПараметрыФормы = Новый Структура; @@ -3313,8 +3331,8 @@ КонецЕсли; ДополнительныеПараметры.Вставить("Сертификат", Форма.Сертификат); - ДополнительныеПараметры.Вставить("УсиленнаяЗащитаЗакрытогоКлюча", - Форма.СертификатУсиленнаяЗащитаЗакрытогоКлюча); + ДополнительныеПараметры.Вставить("ВводитьПарольВПрограммеЭлектроннойПодписи", + Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи); Если Не ДополнительныеПараметры.Свойство("ПриУстановкеПароляИзДругойОперации") Тогда ДополнительныеПараметры.Вставить("ПриУстановкеПароляИзДругойОперации", Ложь); @@ -3367,15 +3385,14 @@ НСтр("ru = 'Облачный сервис вышлет одноразовый пароль по SMS или E-Mail, |который нужно будет ввести после получения.'"); - ИначеЕсли ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча Тогда + ИначеЕсли ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи Тогда ЭлементПароль.Доступность = Ложь; ЭлементЗапомнитьПароль.Доступность = Ложь; Элементы.Страницы.Видимость = Истина; Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПояснениеУсиленногоПароля; Элементы.ПояснениеУсиленногоПароля.Подсказка = - НСтр("ru = 'Пароль запрашивает программа электронной подписи, а не программа 1С:Предприятие, - |так как для выбранного сертификата указана усиленная защита закрытого ключа.'"); + НСтр("ru = 'Для выбранного сертификата указано ""Вводить пароль в программе электронной подписи"".'"); Иначе @@ -3555,7 +3572,7 @@ ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии(); ПараметрыСоздания.ПоказатьОшибку = Неопределено; ПараметрыСоздания.Программа = Контекст.Форма.СертификатПрограмма; - ПараметрыСоздания.ИнтерактивныйРежим = Контекст.Форма.СертификатУсиленнаяЗащитаЗакрытогоКлюча; + ПараметрыСоздания.ИнтерактивныйРежим = Контекст.Форма.СертификатВводитьПарольВПрограммеЭлектроннойПодписи; СоздатьМенеджерКриптографии(Новый ОписаниеОповещения( "ВыполнитьНаСторонеПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст), @@ -3788,15 +3805,29 @@ // Процедура ВыполнитьНаСторонеЦиклПослеПолученияДанных(Результат, Контекст) Экспорт - ЭтоXMLDSig = (ТипЗнч(Результат) = Тип("Структура") И Результат.Свойство("ПараметрыXMLDSig")); - ЭтоCMS = (ТипЗнч(Результат) = Тип("Структура") И Результат.Свойство("ПараметрыCMS")); + ТипРезультата = ТипЗнч(Результат); + + Если ТипРезультата <> Тип("Строка") + И ТипРезультата <> Тип("ДвоичныеДанные") + И ТипРезультата <> Тип("Структура") Тогда + + Ошибка = Новый Структура("ОписаниеОшибки", + ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаголовокОшибкиПолученияДанных(Контекст.Операция) + + Символы.ПС + + НСтр("ru = 'Некорректный тип данных: %1'")); + ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст); + Возврат; + КонецЕсли; + + ЭтоXMLDSig = (ТипРезультата = Тип("Структура") И Результат.Свойство("ПараметрыXMLDSig")); + ЭтоCMS = (ТипРезультата = Тип("Структура") И Результат.Свойство("ПараметрыCMS")); Если ЭтоXMLDSig И Не Результат.Свойство("КонвертXML") Тогда Результат = Новый Структура(Новый ФиксированнаяСтруктура(Результат)); Результат.Вставить("КонвертXML", Результат.КонвертSOAP); КонецЕсли; - Если ТипЗнч(Результат) = Тип("Структура") + Если ТипРезультата = Тип("Структура") И Не ЭтоXMLDSig И Не ЭтоCMS Тогда @@ -3806,6 +3837,7 @@ ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст); Возврат; КонецЕсли; + Данные = Результат; Если Контекст.НаСторонеКлиента Тогда @@ -3819,7 +3851,8 @@ Если Контекст.Операция <> "Подписание" Тогда Ошибка = Новый Структура("ОписаниеОшибки", - НСтр("ru = 'Внешняя компонента ExtraCryptoAPI может использоваться только для подписания.'")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Внешняя компонента %1 может использоваться только для подписания.'"), "ExtraCryptoAPI")); ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст); Возврат; КонецЕсли; @@ -3843,7 +3876,8 @@ ИначеЕсли ЭтоCMS Тогда Если Контекст.Операция <> "Подписание" Тогда Ошибка = Новый Структура("ОписаниеОшибки", - НСтр("ru = 'Внешняя компонента ExtraCryptoAPI может использоваться только для подписания.'")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Внешняя компонента %1 может использоваться только для подписания.'"), "ExtraCryptoAPI")); ВыполнитьНаСторонеПослеЦикла(Ошибка, Контекст); Возврат; КонецЕсли; @@ -4622,10 +4656,11 @@ Контекст.СертификатКриптографии = СертификатКриптографии; - ПодключитьКомпоненту(Контекст, - ?(Контекст.ТипПодписи = "CMS", - НСтр("ru = 'Для проверки подписи CMS необходима установка компоненты ExtraCryptoAPI'"), - НСтр("ru = 'Для проверки подписи XML необходима установка компоненты ExtraCryptoAPI'"))); + ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для проверки подписи %1 необходима установка компоненты %2'"), + ?(Контекст.ТипПодписи = "CMS", "CMS", "XML"), "ExtraCryptoAPI"); + + ПодключитьКомпоненту(Контекст, ТекстПояснения); КонецПроцедуры @@ -4658,9 +4693,10 @@ ЗавершитьОперациюСОшибкой( Контекст, - НСтр("ru = 'Операция невозможна. Требуется установка компоненты ExtraCryptoAPI.'")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Операция невозможна. Требуется установка компоненты %1.'"), "ExtraCryptoAPI")); - Иначе + Иначе // Установка не удалась, описание ошибки в Результат.ОписаниеОшибки. @@ -4698,7 +4734,8 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'При установке свойства СоответствиеOID компоненты ExtraCryptoAPI произошла ошибка:'") + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При установке свойства %1 компоненты %2 произошла ошибка:'"), "СоответствиеOID", "ExtraCryptoAPI") + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); КонецПроцедуры @@ -4765,9 +4802,8 @@ ИначеЕсли Контекст.Режим = "РежимПодписание" Тогда НачатьПодписаниеXMLDSig(Контекст); Иначе - ЗавершитьОперациюСОшибкой( - Контекст, - НСтр("ru = 'Не установлен режим работы компоненты ExtraCryptoAPI.'")); + ЗавершитьОперациюСОшибкой(Контекст, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не установлен режим работы компоненты %1.'"), "ExtraCryptoAPI")); КонецЕсли; ИначеЕсли Контекст.ТипПодписи = "CMS" Тогда @@ -4778,15 +4814,14 @@ ИначеЕсли Контекст.Режим = "РежимПодписание" Тогда НачатьПодписаниеCMS(Контекст); Иначе - ЗавершитьОперациюСОшибкой( - Контекст, - НСтр("ru = 'Не установлен режим работы компоненты ExtraCryptoAPI.'")); + ЗавершитьОперациюСОшибкой(Контекст, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не установлен режим работы компоненты %1.'"), "ExtraCryptoAPI")); КонецЕсли; Иначе - ЗавершитьОперациюСОшибкой( - Контекст, - НСтр("ru = 'Не установлен тип подписи компоненты ExtraCryptoAPI.'")); + + ЗавершитьОперациюСОшибкой(Контекст, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не установлен тип подписи компоненты %1.'"), "ExtraCryptoAPI")); КонецЕсли; КонецПроцедуры @@ -4797,8 +4832,8 @@ ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатКриптографииBase64( ДвоичныеДанныеСертификата); - ПодключитьКомпоненту(Контекст, - НСтр("ru = 'Для подписания XML необходима установка компоненты ExtraCryptoAPI'")); + ПодключитьКомпоненту(Контекст, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для подписания XML необходима установка компоненты %1'"), "ExtraCryptoAPI")); КонецПроцедуры @@ -4808,8 +4843,9 @@ ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатКриптографииBase64( ДвоичныеДанныеСертификата); - ПодключитьКомпоненту(Контекст, - НСтр("ru = 'Для подписания CMS необходима установка компоненты ExtraCryptoAPI'")); + ПодключитьКомпоненту(Контекст, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для подписания CMS необходима установка компоненты %1'"), "ExtraCryptoAPI")); + КонецПроцедуры @@ -4831,9 +4867,8 @@ ПараметрыCMSSign.Открепленная, ПараметрыCMSSign.ВключениеСертификатовВПодпись); Исключение - ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода CMSSign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗавершитьОперациюСОшибкой(Контекст, ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSSign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -4842,16 +4877,15 @@ СтандартнаяОбработка = Ложь; - ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода CMSSign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЗавершитьОперациюСОшибкой(Контекст, ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSSign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры Процедура Подписание_ПослеВыполненияCMSSign(АтрибутSignatureValue, Параметры, Контекст) Экспорт Если Не ЗначениеЗаполнено(АтрибутSignatureValue) Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода CMSSign произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("CMSSign"), Контекст); Возврат; КонецЕсли; @@ -4876,9 +4910,10 @@ Контекст.ТипКриптопровайдера, Null); Исключение - ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода CMSVerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗавершитьОперациюСОшибкой(Контекст, + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSVerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); + КонецПопытки; КонецПроцедуры @@ -4888,15 +4923,15 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода CMSVerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("CMSVerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры Процедура Проверка_ПослеВыполненияCMSVerifySign(ПодписьВерна, Параметры, Контекст) Экспорт Если ПодписьВерна <> Истина Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода CMSVerifySign произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("CMSVerifySign"), Контекст); Возврат; КонецЕсли; @@ -4967,8 +5002,8 @@ Контекст.ТипКриптопровайдера); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -4978,15 +5013,15 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры Процедура Подписание_ПослеВыполненияHash_ПодписываемыйТег(АтрибутDigestValue, Параметры, Контекст) Экспорт Если АтрибутDigestValue = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода Hash произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("Hash"), Контекст); Возврат; КонецЕсли; @@ -5038,8 +5073,8 @@ Контекст.МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода Sign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Sign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -5047,7 +5082,7 @@ Процедура Подписание_ПослеВыполненияSign(АтрибутSignatureValue, Параметры, Контекст) Экспорт Если АтрибутSignatureValue = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода Sign произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("Sign"), Контекст); Возврат; КонецЕсли; @@ -5110,8 +5145,8 @@ Контекст.ТипКриптопровайдера); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода VerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -5121,15 +5156,15 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода VerifySign компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("VerifySign", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры Процедура Проверка_ПослеВыполненияVerifySign(ПодписьВерна, Параметры, Контекст) Экспорт Если ПодписьВерна = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода VerifySign произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("VerifySign"), Контекст); Возврат; КонецЕсли; @@ -5170,8 +5205,8 @@ Контекст.ТипКриптопровайдера); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -5181,15 +5216,15 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода Hash компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("Hash", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); + КонецПроцедуры Процедура Проверка_ПослеВыполненияHash_ПодписываемыйТег(HashValue, Параметры, Контекст) Экспорт Если HashValue = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода Hash произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("Hash"), Контекст); Возврат; КонецЕсли; @@ -5202,13 +5237,16 @@ ХешСовпадает = (АтрибутDigestValue = HashValue); Если Не Контекст.ПодписьВерна Или Не ХешСовпадает Тогда + Если Контекст.ПодписьВерна Тогда - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue корректно, DigestValue некорректно).'") + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 корректно, %2 некорректно).'") ИначеЕсли ХешСовпадает Тогда - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue некорректно, DigestValue корректно).'"); + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 некорректно, %2 корректно).'"); Иначе - ТекстОшибки = НСтр("ru = 'Подпись неверна (SignatureValue некорректно, DigestValue некорректно).'"); + ТекстОшибки = НСтр("ru = 'Подпись неверна (%1 некорректно, %2 некорректно).'"); КонецЕсли; + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, "SignatureValue", "DigestValue"); + ЗавершитьОперациюСОшибкой(Контекст, ТекстОшибки); Возврат; КонецЕсли; @@ -5255,8 +5293,8 @@ ОбъектКомпоненты.НачатьВызовC14N(ОписаниеОповещения, КонвертXML, XPath); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода C14N компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -5264,7 +5302,7 @@ Процедура C14NПослеВызова(КанонизированныйТекстXML, Параметры, Контекст) Экспорт Если КанонизированныйТекстXML = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода C14N произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("C14N"), Контекст); Возврат; КонецЕсли; @@ -5278,9 +5316,9 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода C14N компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); + КонецПроцедуры Процедура C14NЗавершениеСОшибкой(ТекстОшибки, Контекст) Экспорт @@ -5358,8 +5396,8 @@ // АПК:216-вкл. Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода C14N_body компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; Иначе Оповещение = Новый ОписаниеОповещения( @@ -5369,8 +5407,8 @@ Контекст.ОбъектКомпоненты.НачатьВызовTransformSMEV(Оповещение, ТекстXML); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецЕсли; Иначе @@ -5382,7 +5420,7 @@ Процедура C14N_bodyПослеВызова(КанонизированныйТекстXML, Параметры, Контекст) Экспорт Если КанонизированныйТекстXML = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода C14N_body произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("C14N_body"), Контекст); Возврат; КонецЕсли; @@ -5396,15 +5434,15 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода C14N_body компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("C14N_body", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры Процедура TransformSMEVПослеВызова(КанонизированныйТекстXML, Параметры, Контекст) Экспорт Если КанонизированныйТекстXML = Неопределено Тогда - НачатьПолучениеТекстаОшибки(НСтр("ru = 'При выполнении метода TransformSMEV произошла ошибка:'"), Контекст); + НачатьПолучениеТекстаОшибки(НачалоОписанияТекстаОшибки("TransformSMEV"), Контекст); Возврат; КонецЕсли; @@ -5418,8 +5456,8 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода TransformSMEV компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("TransformSMEV", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры @@ -5442,8 +5480,8 @@ Контекст.ОбъектКомпоненты.НачатьВызовGetLastError(Оповещение); Исключение ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода GetLastError компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("GetLastError", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); КонецПопытки; КонецПроцедуры @@ -5453,8 +5491,8 @@ СтандартнаяОбработка = Ложь; ЗавершитьОперациюСОшибкой(Контекст, - НСтр("ru = 'Ошибка вызова метода GetLastError компоненты ExtraCryptoAPI.'") - + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ЭлектроннаяПодписьСлужебныйКлиентСервер.ОшибкаВызоваМетодаКомпоненты("GetLastError", + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке))); КонецПроцедуры @@ -5521,7 +5559,7 @@ ВнутренниеДанные.Получить("ПоясненияУстановленныхПаролей").Получить(Сертификат)); КонецЕсли; - Если ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча Тогда + Если ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи Тогда СвойстваПароля.Значение = ""; СвойстваПароля.ПарольПроверен = Ложь; РеквизитПароль = ""; @@ -5847,8 +5885,8 @@ Функция ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Экспорт Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ТехнологияСервиса.ЭлектроннаяПодписьВМоделиСервиса") Тогда - МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьВМоделиСервисаКлиентСервер"); - Возврат МодульЭлектроннаяПодписьВМоделиСервисаКлиентСервер.ИспользованиеВозможно(); + МодульЭлектроннаяПодписьВМоделиСервисаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьВМоделиСервисаКлиент"); + Возврат МодульЭлектроннаяПодписьВМоделиСервисаКлиент.ИспользованиеВозможно(); КонецЕсли; Возврат Ложь; @@ -5861,6 +5899,13 @@ КонецФункции +Функция НачалоОписанияТекстаОшибки(ИмяМетода) + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При выполнении метода %1 произошла ошибка:'"), ИмяМетода); + +КонецФункции + #Область ДобавлениеСертификата // Продолжение процедуры ЭлектроннаяПодписьКлиент.ДобавитьСертификат. @@ -5935,7 +5980,7 @@ ПараметрыСоздания = ПараметрыСозданияМенеджераКриптографии(); ПараметрыСоздания.ПоказатьОшибку = Неопределено; ПараметрыСоздания.Программа = ОписаниеПрограммы.Ссылка; - ПараметрыСоздания.ИнтерактивныйРежим = Контекст.ДополнительныеПараметры.УсиленнаяЗащитаЗакрытогоКлюча; + ПараметрыСоздания.ИнтерактивныйРежим = Контекст.ДополнительныеПараметры.ВводитьПарольВПрограммеЭлектроннойПодписи; ПараметрыСоздания.АлгоритмПодписи = Контекст.АлгоритмПодписи; СоздатьМенеджерКриптографии( @@ -6669,14 +6714,23 @@ Функция ТекстОшибкиОблачнаяПодпись(Операция, РезультатВызова = Неопределено, ЭтоОшибкаВыполнения = Ложь) + АдресСервера = ""; + ИсходныйТекст = ""; + Если ТипЗнч(РезультатВызова) = Тип("Структура") Тогда - ИсходныйТекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВызова.СтатусОшибки, "ИсходныйТекст", ""); - Иначе - ИсходныйТекст = ""; + Если РезультатВызова.Свойство("НастройкиПользователя") Тогда + АдресСервера = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВызова.НастройкиПользователя, "Сервер", ""); + КонецЕсли; + Если РезультатВызова.Свойство("СтатусОшибки") Тогда + ИсходныйТекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(РезультатВызова.СтатусОшибки, "ИсходныйТекст", ""); + КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(ИсходныйТекст) Тогда ТекстОшибки = ИсходныйТекст; + Если ЭтоОшибкаВыполнения И ЗначениеЗаполнено(АдресСервера) Тогда + ТекстОшибки = ТекстОшибки + " " + НСтр("ru = 'на сервере'") + " " + СокрЛП(АдресСервера); + КонецЕсли; ИначеЕсли Операция = "ПроверкаПодписи" Тогда Если ЭтоОшибкаВыполнения Тогда @@ -6708,7 +6762,7 @@ НСтр("ru = 'Неизвестная операция ""%1"".'"), Операция); КонецЕсли; - Возврат НСтр("ru = 'Облачный сервис'") + ": " + ТекстОшибки; + Возврат НСтр("ru = 'Сервис облачной подписи'") + ": " + ТекстОшибки; КонецФункции @@ -6817,8 +6871,9 @@ Процедура ПослеСбораТехническойИнформацииОКомпоненте(ИнформацияОКомпоненте, Контекст) Экспорт - Контекст.СопроводительныйТекст = Контекст.СопроводительныйТекст + Символы.ПС - + НСтр("ru = 'Версия компоненты ExtraCryptoAPI на клиенте'") + " - " + ИнформацияОКомпоненте + Символы.ПС; + Контекст.СопроводительныйТекст = Контекст.СопроводительныйТекст + Символы.ПС + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Версия компоненты %1 на клиенте - %2'"), + "ExtraCryptoAPI", ИнформацияОКомпоненте) + Символы.ПС; ДиагностическаяИнформацияОПрограммах( Новый ОписаниеОповещения("ПослеСбораТехническойИнформацииОПрограммах", ЭтотОбъект, Контекст)); @@ -6849,7 +6904,8 @@ Процедура ПолучитьВерсиюКомпоненты(Оповещение) ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты(); - ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для получения версии требуется установка компоненты ExtraCryptoAPI'"); + ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для получения версии требуется установка компоненты %1'"), "ExtraCryptoAPI"); ПараметрыПодключения.ПредложитьЗагрузить = Ложь; ПараметрыПодключения.ПредложитьУстановить = Ложь; @@ -6871,7 +6927,7 @@ Если Результат.Подключено Тогда Попытка ОповещениеПослеПолученияВерсии = Новый ОписаниеОповещения("ПослеПолученияВерсииКомпоненты", ЭтотОбъект, Оповещение); - ВерсияКомпоненты = Результат.ПодключаемыйМодуль.НачатьВызовПолучитьВерсию(ОповещениеПослеПолученияВерсии); + Результат.ПодключаемыйМодуль.НачатьВызовПолучитьВерсию(ОповещениеПослеПолученияВерсии); Возврат; Исключение ВерсияКомпоненты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -6880,11 +6936,12 @@ Иначе Если ПустаяСтрока(Результат.ОписаниеОшибки) Тогда // Пользователь отказался от установки. - ВерсияКомпоненты = НСтр("ru = 'Компонента ExtraCryptoAPI не установлена.'"); + ВерсияКомпоненты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Компонента %1 не установлена.'"), "ExtraCryptoAPI"); Иначе // Установка не удалась, описание ошибки в Результат.ОписаниеОшибки. ВерсияКомпоненты = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Компонента ExtraCryptoAPI не установлена (%1).'"), Результат.ОписаниеОшибки); + НСтр("ru = 'Компонента %1 не установлена (%2).'"), "ExtraCryptoAPI", Результат.ОписаниеОшибки); КонецЕсли; КонецЕсли; @@ -6934,4 +6991,20 @@ КонецФункции +// Используется для управления напоминаниями пользователя из формы сертификата, заявления на сертификат +// и формы ОповещениеОбОкончанииСрокаДействия. +// +Процедура ИзменитьОтметкуОНапоминании(Сертификат, Напомнить, ФормаВладелец) Экспорт + + Если ФормаВладелец.ИмяФормы = "Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Форма" Тогда + ИдентификаторНапоминания = "АвтоматическоеНапоминаниеОбИзмененииСостоянияЗаявления"; + Иначе + ИдентификаторНапоминания = "АвтоматическоеНапоминаниеОПродленииСертификата"; + КонецЕсли; + + ЭлектроннаяПодписьСлужебныйВызовСервера.ИзменитьОтметкуОНапоминании(Сертификат, Напомнить, ИдентификаторНапоминания); + +КонецПроцедуры + + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиентСервер/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиентСервер/Module.bsl index 1bf26b2fb..c0573a408 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйКлиентСервер/Module.bsl @@ -38,6 +38,18 @@ #Область СлужебныеПроцедурыИФункции +Функция ПользователиСертификатаСтрокой(Пользователь1, Пользователь2, КоличествоПользователей) Экспорт + + СтрокаПользователей = СтрШаблон("%1, %2", Пользователь1, Пользователь2); + Если КоличествоПользователей > 2 Тогда + СтрокаПользователей = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 и другие (всего %2)'"), СтрокаПользователей, Формат(КоличествоПользователей, "ЧГ=0")); + КонецЕсли; + + Возврат СтрокаПользователей; + +КонецФункции + Функция ОписаниеПрограммыПоИмениКриптопровайдера(ИмяКриптопровайдера, ОписанияПрограмм) Экспорт ПрограммаНайдена = Ложь; @@ -138,6 +150,23 @@ КонецФункции +// Текст ошибки вызова метода компоненты ExtraCryptoAPI. +// +// Параметры: +// ИмяМетода - Строка +// ИнформацияОбОшибке - Строка +// +// Возвращаемое значение: +// Строка +// +Функция ОшибкаВызоваМетодаКомпоненты(ИмяМетода, ИнформацияОбОшибке) Экспорт + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка вызова метода %1 компоненты %2.'"), ИмяМетода, "ExtraCryptoAPI") + + Символы.ПС + ИнформацияОбОшибке; + +КонецФункции + // Только для внутреннего использования. // // Параметры: @@ -849,12 +878,21 @@ КонецЕсли; КонецЕсли; + СостояниеСертификата = 2; + Если ДатыСертификата.ДатаОкончания <= ТекущаяДатаСеанса Тогда + СостояниеСертификата = 4; + ИначеЕсли ДатыСертификата.ДатаОкончания <= ТекущаяДатаСеанса + 30*24*60*60 Тогда + СостояниеСертификата = 3; + КонецЕсли; + СвойстваСертификата = Новый Структура; СвойстваСертификата.Вставить("Отпечаток", Отпечаток); СвойстваСертификата.Вставить("Представление", ПредставлениеСертификата(ТекущийСертификат, ДобавкаВремени)); СвойстваСертификата.Вставить("КемВыдан", ПредставлениеИздателя(ТекущийСертификат)); СвойстваСертификата.Вставить("ТипРазмещения", ТипРазмещения); + СвойстваСертификата.Вставить("СостояниеСертификата", СостояниеСертификата); + Если ТипЗнч(Таблица) = Тип("Массив") Тогда Таблица.Добавить(СвойстваСертификата); @@ -896,6 +934,27 @@ КонецПроцедуры // Только для внутреннего использования. +// +// Параметры: +// ДвоичныеДанныеПодписи - ДвоичныеДанные +// СвойстваСертификата - см. ЭлектроннаяПодписьКлиент.СвойстваСертификата +// Комментарий - Строка +// АвторизованныйПользователь - СправочникСсылка.Пользователи +// ИмяФайлаПодписи - Строка - имя файла подписи +// +// Возвращаемое значение: +// Структура: +// * Подпись - ДвоичныеДанные +// * УстановившийПодпись - СправочникСсылка.Пользователи +// * Комментарий - Строка +// * ИмяФайлаПодписи - Строка +// * ДатаПодписи - Дата +// * ДатаПроверкиПодписи - Дата +// * ПодписьВерна - Булево +// * Сертификат - ДвоичныеДанные +// * Отпечаток - Строка +// * КомуВыданСертификат - Строка +// Функция СвойстваПодписи(ДвоичныеДанныеПодписи, СвойстваСертификата, Комментарий, АвторизованныйПользователь, ИмяФайлаПодписи = "") Экспорт @@ -1592,7 +1651,9 @@ Если ПараметрыCMS.ТипПодписи = "CAdES-BES" Тогда ПараметрыКомпоненты.Вставить("ТипПодписи", 0); Иначе - ВызватьИсключение НСтр("ru = 'Некорректный параметр ТипПодписи метода CMSSign компоненты ExtraCryptoAPI.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректный параметр %1 метода %2 компоненты %3.'"), + "ТипПодписи", "CMSSign", "ExtraCryptoAPI"); КонецЕсли; Если ТипЗнч(Данные) = Тип("Строка") @@ -1600,13 +1661,17 @@ ПараметрыКомпоненты.Вставить("Данные", Данные); Иначе - ВызватьИсключение НСтр("ru = 'Некорректный параметр Данные метода CMSSign компоненты ExtraCryptoAPI.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректный параметр %1 метода %2 компоненты %3.'"), + "Данные", "CMSSign", "ExtraCryptoAPI"); КонецЕсли; Если ТипЗнч(ПараметрыCMS.Открепленная) = Тип("Булево") Тогда ПараметрыКомпоненты.Вставить("Открепленная", ПараметрыCMS.Открепленная); Иначе - ВызватьИсключение НСтр("ru = 'Некорректный параметр Открепленная метода CMSSign компоненты ExtraCryptoAPI.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректный параметр %1 метода %2 компоненты %3.'"), + "Открепленная", "CMSSign", "ExtraCryptoAPI"); КонецЕсли; // 0 - РежимВключенияСертификатовКриптографии.НеВключать. @@ -2176,7 +2241,7 @@ #КонецОбласти -#Область АлгоритмыПодписи +#Область СодержимоеСертификата Функция АлгоритмСформированнойПодписи(ДанныеПодписи, ВключаяOID = Ложь, ТолькоOID = Ложь) Экспорт @@ -2335,7 +2400,7 @@ ОжидаемыеТипы.Добавить(Тип("ДвоичныеДанные")); ОжидаемыеТипы.Добавить(Тип("Строка")); ОбщегоНазначенияКлиентСервер.ПроверитьПараметр( - "ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписи", + ИмяФункции, "Данные", Данные, ОжидаемыеТипы); Если ТипЗнч(Данные) = Тип("Строка") Тогда @@ -2346,7 +2411,7 @@ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недопустимый адрес временного хранилища в параметре Данные: |%1'") + Символы.ПС, Данные), - "ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписи"); + ИмяФункции); КонецЕсли; Если ТипЗнч(ДвоичныеДанные) <> Тип("ДвоичныеДанные") Тогда ОбщегоНазначенияКлиентСервер.Проверить(Ложь, @@ -2354,7 +2419,7 @@ НСтр("ru = 'Недопустимый тип значения ""%1"" |по адресу временного хранилища, указанному в параметре Данные'") + Символы.ПС, Строка(ТипЗнч(ДвоичныеДанные))), - "ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписи"); + ИмяФункции); КонецЕсли; Иначе ДвоичныеДанные = Данные; @@ -2374,7 +2439,7 @@ // * Родители - Массив из Структура // * Буфер - БуферДвоичныхДанных // -Функция НовыйАнализДанных(ДвоичныеДанные) +Функция НовыйАнализДанных(ДвоичныеДанные) Экспорт АнализДанных = Новый Структура; АнализДанных.Вставить("ЕстьОшибка", Ложь); @@ -2405,13 +2470,13 @@ КонецФункции -Процедура ПропуститьНачалоБлока(АнализДанных, КлассДанных = Неопределено, ТипДанных = Неопределено) +Процедура ПропуститьНачалоБлока(АнализДанных, КлассДанных = Неопределено, ТипДанных = Неопределено) Экспорт ПропуститьНачалоБлокаИлиБлок(АнализДанных, Истина, КлассДанных, ТипДанных, Истина) КонецПроцедуры -Процедура ПропуститьБлок(АнализДанных, КлассДанных = Неопределено, ТипДанных = Неопределено, ОбязательныйБлок = Истина) +Процедура ПропуститьБлок(АнализДанных, КлассДанных = Неопределено, ТипДанных = Неопределено, ОбязательныйБлок = Истина) Экспорт Если АнализДанных.ЕстьОшибка Тогда Возврат; @@ -2428,7 +2493,7 @@ КонецПроцедуры -Процедура ПропуститьРодительскийБлок(АнализДанных) +Процедура ПропуститьРодительскийБлок(АнализДанных) Экспорт Если АнализДанных.ЕстьОшибка Тогда Возврат; @@ -2687,7 +2752,7 @@ КонецПроцедуры -Функция ПрочитатьПотоковоеЦелое(АнализДанных) +Функция ПрочитатьПотоковоеЦелое(АнализДанных) Экспорт Целое = 0; Для Счетчик = 1 По 9 Цикл @@ -2770,7 +2835,7 @@ КонецПроцедуры -Процедура ПриОшибкеСтруктурыДанных(АнализДанных) +Процедура ПриОшибкеСтруктурыДанных(АнализДанных) Экспорт АнализДанных.ЭтоОшибкаСтруктурыДанных = Истина; АнализДанных.ЕстьОшибка = Истина; diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйПовтИсп/Module.bsl index ac13cfe5f..516120d1d 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПодписьСлужебныйПовтИсп/Module.bsl @@ -199,7 +199,9 @@ | ПутиКПрограмме.ИмяКомпьютера = &ИмяКомпьютера"; ПутиКПрограммамНаСерверахLinux = Новый Соответствие; + УстановитьПривилегированныйРежим(Истина); Выборка = Запрос.Выполнить().Выбрать(); + УстановитьПривилегированныйРежим(Ложь); Пока Выборка.Следующий() Цикл ТекстыОшибок = Новый Массив; ОписаниеПути = Новый Структура; diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.svg b/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.svg new file mode 100644 index 000000000..6f15dff8d --- /dev/null +++ b/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.zip b/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.zip deleted file mode 100644 index cb9a54ceb..000000000 Binary files a/SSL/src/CommonPictures/ВертикальноеПоложениеВерх/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.svg b/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.svg new file mode 100644 index 000000000..7128a8daa --- /dev/null +++ b/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.zip b/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.zip deleted file mode 100644 index 7fe19ea39..000000000 Binary files a/SSL/src/CommonPictures/ВертикальноеПоложениеНиз/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.svg b/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.svg new file mode 100644 index 000000000..497207381 --- /dev/null +++ b/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.zip b/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.zip deleted file mode 100644 index f57423c76..000000000 Binary files a/SSL/src/CommonPictures/ВертикальноеПоложениеЦентр/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.svg b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.svg new file mode 100644 index 000000000..e38379672 --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.zip b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.zip deleted file mode 100644 index 40e136807..000000000 Binary files a/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.svg b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.svg new file mode 100644 index 000000000..8b418f49c --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.zip b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.zip deleted file mode 100644 index 0de5b080f..000000000 Binary files a/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.svg b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.svg new file mode 100644 index 000000000..817592bbc --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.zip b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.zip deleted file mode 100644 index 6078afc2b..000000000 Binary files a/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/МестоДляКартинки/Picture.png b/SSL/src/CommonPictures/МестоДляКартинки/Picture.png new file mode 100644 index 000000000..4f5819893 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..5b5f67f85 --- /dev/null +++ b/SSL/src/CommonPictures/МестоДляКартинки/МестоДляКартинки.mdo @@ -0,0 +1,8 @@ + + + МестоДляКартинки + + ru + Место для картинки + + diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисы/Picture.png b/SSL/src/CommonPictures/МетаданныеHTTPСервисы/Picture.png new file mode 100644 index 000000000..7797f4ea2 Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеHTTPСервисы/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисы/МетаданныеHTTPСервисы.mdo b/SSL/src/CommonPictures/МетаданныеHTTPСервисы/МетаданныеHTTPСервисы.mdo new file mode 100644 index 000000000..b35217270 --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеHTTPСервисы/МетаданныеHTTPСервисы.mdo @@ -0,0 +1,8 @@ + + + МетаданныеHTTPСервисы + + ru + Метаданные HTTP-сервисы + + diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/Picture.png b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/Picture.png new file mode 100644 index 000000000..82d007862 Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/МетаданныеHTTPСервисыШаблоныURL.mdo b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/МетаданныеHTTPСервисыШаблоныURL.mdo new file mode 100644 index 000000000..4f28ceeed --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURL/МетаданныеHTTPСервисыШаблоныURL.mdo @@ -0,0 +1,8 @@ + + + МетаданныеHTTPСервисыШаблоныURL + + ru + Метаданные HTTP-сервисы шаблоны URL + + diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/Picture.png b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/Picture.png new file mode 100644 index 000000000..ad8e3fb4a Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/МетаданныеHTTPСервисыШаблоныURLМетоды.mdo b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/МетаданныеHTTPСервисыШаблоныURLМетоды.mdo new file mode 100644 index 000000000..639d483e4 --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеHTTPСервисыШаблоныURLМетоды/МетаданныеHTTPСервисыШаблоныURLМетоды.mdo @@ -0,0 +1,8 @@ + + + МетаданныеHTTPСервисыШаблоныURLМетоды + + ru + Метаданные HTTP-сервисы шаблоны URL методы + + diff --git a/SSL/src/CommonPictures/МетаданныеWSСсылки/Picture.png b/SSL/src/CommonPictures/МетаданныеWSСсылки/Picture.png new file mode 100644 index 000000000..f9eca8cea Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеWSСсылки/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеWSСсылки/МетаданныеWSСсылки.mdo b/SSL/src/CommonPictures/МетаданныеWSСсылки/МетаданныеWSСсылки.mdo new file mode 100644 index 000000000..6b9f23e9e --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеWSСсылки/МетаданныеWSСсылки.mdo @@ -0,0 +1,8 @@ + + + МетаданныеWSСсылки + + ru + Метаданные WS-ссылки + + diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисы/Picture.png b/SSL/src/CommonPictures/МетаданныеWebСервисы/Picture.png new file mode 100644 index 000000000..a5be176b1 Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеWebСервисы/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисы/МетаданныеWebСервисы.mdo b/SSL/src/CommonPictures/МетаданныеWebСервисы/МетаданныеWebСервисы.mdo new file mode 100644 index 000000000..935353906 --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеWebСервисы/МетаданныеWebСервисы.mdo @@ -0,0 +1,8 @@ + + + МетаданныеWebСервисы + + ru + Метаданные Web-сервисы + + diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/Picture.png b/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/Picture.png new file mode 100644 index 000000000..b50c800eb Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/МетаданныеWebСервисыОперации.mdo b/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/МетаданныеWebСервисыОперации.mdo new file mode 100644 index 000000000..21cc6f493 --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеWebСервисыОперации/МетаданныеWebСервисыОперации.mdo @@ -0,0 +1,8 @@ + + + МетаданныеWebСервисыОперации + + ru + Метаданные Web-сервисы операции + + diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/Picture.png b/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/Picture.png new file mode 100644 index 000000000..1757f9564 Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/МетаданныеWebСервисыОперацииПараметры.mdo b/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/МетаданныеWebСервисыОперацииПараметры.mdo new file mode 100644 index 000000000..18a88f86b --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеWebСервисыОперацииПараметры/МетаданныеWebСервисыОперацииПараметры.mdo @@ -0,0 +1,8 @@ + + + МетаданныеWebСервисыОперацииПараметры + + ru + Метаданные Web-сервисы операции параметры + + diff --git a/SSL/src/CommonPictures/МетаданныеБизнесПроцессы/Picture.png b/SSL/src/CommonPictures/МетаданныеБизнесПроцессы/Picture.png new file mode 100644 index 000000000..ee456b75b 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..03ef3bd8f --- /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..8c024b925 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..f6d39e1a0 --- /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..fa7bc9281 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..c81df10fa --- /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..f328e8d46 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..f724287e8 --- /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..8e91bd8b5 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..8f108b881 --- /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..7b45f376b 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..fecda6dd4 --- /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..b1077a01c 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..b15f67ceb --- /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..3a2e1256b 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..d2e082ed6 --- /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..658f399c4 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..ef52dc876 --- /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..32dc3c493 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..df733ff8c --- /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..f256844e7 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..6bb512135 --- /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..3c21ff649 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..87a81293c --- /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..2b50b63c6 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..0a1b14a8b --- /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..739469e1e 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..63511159b --- /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..3ad335e0a 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..7f57f17d2 --- /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..876a713c3 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..307ea23d8 --- /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..f1ea30773 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..92985528e --- /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..771f423ef 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..e3128df35 --- /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..a3266f91d 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..3204018d1 --- /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..f56152819 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..ef36eba23 --- /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..7b6ab3958 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..56d7b1017 --- /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..040d3ad54 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..1194e8fb3 --- /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..781a100ea 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..b567c9d5c --- /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..c613d0d8f 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..b2e975ec7 --- /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..da47f998f 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..483f07bc2 --- /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..91c9926c9 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..f77b287b6 --- /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..61436f332 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..e2847a3ed --- /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..c4900e356 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..34988bdbb --- /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..892a1157c 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..02532c28f --- /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..a752f2770 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..a63b5f735 --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеОтчеты/МетаданныеОтчеты.mdo @@ -0,0 +1,8 @@ + + + МетаданныеОтчеты + + ru + Метаданные отчеты + + diff --git a/SSL/src/CommonPictures/МетаданныеПакетыXDTO/Picture.png b/SSL/src/CommonPictures/МетаданныеПакетыXDTO/Picture.png new file mode 100644 index 000000000..724b2622d Binary files /dev/null and b/SSL/src/CommonPictures/МетаданныеПакетыXDTO/Picture.png differ diff --git a/SSL/src/CommonPictures/МетаданныеПакетыXDTO/МетаданныеПакетыXDTO.mdo b/SSL/src/CommonPictures/МетаданныеПакетыXDTO/МетаданныеПакетыXDTO.mdo new file mode 100644 index 000000000..295116b8d --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеПакетыXDTO/МетаданныеПакетыXDTO.mdo @@ -0,0 +1,8 @@ + + + МетаданныеПакетыXDTO + + ru + Метаданные пакеты XDTO + + diff --git a/SSL/src/CommonPictures/МетаданныеПараметрыСеанса/Picture.png b/SSL/src/CommonPictures/МетаданныеПараметрыСеанса/Picture.png new file mode 100644 index 000000000..4f0526330 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..d4a64ca71 --- /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..00b012755 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..7cb6f8711 --- /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..1e5e4b5f5 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..95579a9bd --- /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..19ebf43a3 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..8f50fdb38 --- /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..a3cd7d8c6 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..b756cf0b4 --- /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..142d73bc5 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..a83fff972 --- /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..545120749 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..054339524 --- /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..bf2faec7a 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..9ca7e8d66 --- /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..0afb6412a 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..056d65667 --- /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..96adbe5bd 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..b739004bb --- /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..de2c35ded 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..d8c3360df --- /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..5e35aeeac 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..93a94df5e --- /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..855f8b4ba 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..5a0408f0b --- /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..f9fbd61e2 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..f1174c0e3 --- /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..16e022756 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..ef387e9fc --- /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..561514d66 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..b32c664f7 --- /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..91d948393 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..527308ca4 --- /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..eeb9b427e 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..289a84f5c --- /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..8158a7223 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..e1761d3a7 --- /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..b1e93b9a7 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..07c2dff21 --- /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..a40670ce4 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..2f0e48ee1 --- /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..149b39b6d 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..296680390 --- /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..b8963eda5 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..4dc425ca5 --- /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..6ddd933ed 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..1131877da --- /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..830fc2382 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..a66a3273b --- /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..89ad2a211 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..af7ce05dd --- /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..066ddb4cc 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..7df39d46c --- /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..0a545839e 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..bfcfcbd8d --- /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..804bf75c4 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..b27dce67b --- /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..42a4a4667 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..b5f59ed40 --- /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..b340a3914 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..86cedaafe --- /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..6c669467e 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..11f8e46ab --- /dev/null +++ b/SSL/src/CommonPictures/МетаданныеЯзыки/МетаданныеЯзыки.mdo @@ -0,0 +1,8 @@ + + + МетаданныеЯзыки + + ru + Метаданные языки + + diff --git a/SSL/src/CommonPictures/НаследованиеВключено/Picture.svg b/SSL/src/CommonPictures/НаследованиеВключено/Picture.svg new file mode 100644 index 000000000..455ffd6be --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеВключено/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/НаследованиеВключено/НаследованиеВключено.mdo b/SSL/src/CommonPictures/НаследованиеВключено/НаследованиеВключено.mdo new file mode 100644 index 000000000..1492cee7e --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеВключено/НаследованиеВключено.mdo @@ -0,0 +1,8 @@ + + + НаследованиеВключено + + ru + Наследование включено + + diff --git a/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/Picture.svg b/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/Picture.svg new file mode 100644 index 000000000..db18a21d4 --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/Picture.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/НаследованиеВключеноСПапкой.mdo b/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/НаследованиеВключеноСПапкой.mdo new file mode 100644 index 000000000..c1c998a76 --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеВключеноСПапкой/НаследованиеВключеноСПапкой.mdo @@ -0,0 +1,8 @@ + + + НаследованиеВключеноСПапкой + + ru + Наследование включено с папкой + + diff --git a/SSL/src/CommonPictures/НаследованиеОтключено/Picture.svg b/SSL/src/CommonPictures/НаследованиеОтключено/Picture.svg new file mode 100644 index 000000000..bb7cb5414 --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеОтключено/Picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/SSL/src/CommonPictures/НаследованиеОтключено/НаследованиеОтключено.mdo b/SSL/src/CommonPictures/НаследованиеОтключено/НаследованиеОтключено.mdo new file mode 100644 index 000000000..0fd51217c --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеОтключено/НаследованиеОтключено.mdo @@ -0,0 +1,8 @@ + + + НаследованиеОтключено + + ru + Наследование отключено + + diff --git a/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/Picture.svg b/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/Picture.svg new file mode 100644 index 000000000..82e02a92b --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/Picture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/НаследованиеОтключеноСПапкой.mdo b/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/НаследованиеОтключеноСПапкой.mdo new file mode 100644 index 000000000..82e4fb02e --- /dev/null +++ b/SSL/src/CommonPictures/НаследованиеОтключеноСПапкой/НаследованиеОтключеноСПапкой.mdo @@ -0,0 +1,8 @@ + + + НаследованиеОтключеноСПапкой + + ru + Наследование отключено с папкой + + diff --git a/SSL/src/CommonPictures/ОтменитьДействие/Picture.svg b/SSL/src/CommonPictures/ОтменитьДействие/Picture.svg new file mode 100644 index 000000000..b54465b33 --- /dev/null +++ b/SSL/src/CommonPictures/ОтменитьДействие/Picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/SSL/src/CommonPictures/ОтменитьДействие/ОтменитьДействие.mdo b/SSL/src/CommonPictures/ОтменитьДействие/ОтменитьДействие.mdo new file mode 100644 index 000000000..0369c9ccf --- /dev/null +++ b/SSL/src/CommonPictures/ОтменитьДействие/ОтменитьДействие.mdo @@ -0,0 +1,8 @@ + + + ОтменитьДействие + + ru + Отменить действие + + diff --git a/SSL/src/CommonPictures/Папка/Picture.svg b/SSL/src/CommonPictures/Папка/Picture.svg new file mode 100644 index 000000000..d08de6b54 --- /dev/null +++ b/SSL/src/CommonPictures/Папка/Picture.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/SSL/src/CommonPictures/Папка/Picture.zip b/SSL/src/CommonPictures/Папка/Picture.zip deleted file mode 100644 index a5301ade7..000000000 Binary files a/SSL/src/CommonPictures/Папка/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/ПереводТекста/Picture.png b/SSL/src/CommonPictures/ПереводТекста/Picture.png new file mode 100644 index 000000000..c20134592 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..3a04e36d1 --- /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..ea6ce2b9f 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..b7c44cdf2 --- /dev/null +++ b/SSL/src/CommonPictures/ПечатьОрганизации/ПечатьОрганизации.mdo @@ -0,0 +1,8 @@ + + + ПечатьОрганизации + + ru + Печать организации + + diff --git a/SSL/src/CommonPictures/ПовторитьДействие/Picture.svg b/SSL/src/CommonPictures/ПовторитьДействие/Picture.svg new file mode 100644 index 000000000..78915de84 --- /dev/null +++ b/SSL/src/CommonPictures/ПовторитьДействие/Picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/SSL/src/CommonPictures/ПовторитьДействие/ПовторитьДействие.mdo b/SSL/src/CommonPictures/ПовторитьДействие/ПовторитьДействие.mdo new file mode 100644 index 000000000..2c19c8f36 --- /dev/null +++ b/SSL/src/CommonPictures/ПовторитьДействие/ПовторитьДействие.mdo @@ -0,0 +1,8 @@ + + + ПовторитьДействие + + ru + Повторить действие + + diff --git a/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/Picture.svg b/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/Picture.svg new file mode 100644 index 000000000..17bd9c407 --- /dev/null +++ b/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/Picture.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/ПовторятьВКонцеСтраницы.mdo b/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/ПовторятьВКонцеСтраницы.mdo new file mode 100644 index 000000000..89266a98d --- /dev/null +++ b/SSL/src/CommonPictures/ПовторятьВКонцеСтраницы/ПовторятьВКонцеСтраницы.mdo @@ -0,0 +1,8 @@ + + + ПовторятьВКонцеСтраницы + + ru + Повторять в конце страницы + + diff --git a/SSL/src/CommonPictures/ПовторятьВНачалеСтраницы/Picture.svg b/SSL/src/CommonPictures/ПовторятьВНачалеСтраницы/Picture.svg new file mode 100644 index 000000000..99a6462b2 --- /dev/null +++ b/SSL/src/CommonPictures/ПовторятьВНачалеСтраницы/Picture.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SSL/src/CommonPictures/ПовторятьВНачалеСтраницы/ПовторятьВНачалеСтраницы.mdo b/SSL/src/CommonPictures/ПовторятьВНачалеСтраницы/ПовторятьВНачалеСтраницы.mdo new file mode 100644 index 000000000..0212e7d16 --- /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..739357ef1 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..0b9b1c93e --- /dev/null +++ b/SSL/src/CommonPictures/Подпись/Подпись.mdo @@ -0,0 +1,8 @@ + + + Подпись + + ru + Подпись + + diff --git a/SSL/src/CommonPictures/Просмотр/Picture.zip b/SSL/src/CommonPictures/Просмотр/Picture.zip deleted file mode 100644 index 1f68db052..000000000 Binary files a/SSL/src/CommonPictures/Просмотр/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/Редактирование/Picture.zip b/SSL/src/CommonPictures/Редактирование/Picture.zip deleted file mode 100644 index 72b8fe1e5..000000000 Binary files a/SSL/src/CommonPictures/Редактирование/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/СертификатВЛичномХранилище/Picture.zip b/SSL/src/CommonPictures/СертификатВЛичномХранилище/Picture.zip new file mode 100644 index 000000000..e71351f55 Binary files /dev/null and b/SSL/src/CommonPictures/СертификатВЛичномХранилище/Picture.zip differ diff --git a/SSL/src/CommonPictures/СертификатВЛичномХранилище/СертификатВЛичномХранилище.mdo b/SSL/src/CommonPictures/СертификатВЛичномХранилище/СертификатВЛичномХранилище.mdo new file mode 100644 index 000000000..4b9a6b728 --- /dev/null +++ b/SSL/src/CommonPictures/СертификатВЛичномХранилище/СертификатВЛичномХранилище.mdo @@ -0,0 +1,8 @@ + + + СертификатВЛичномХранилище + + ru + Сертификат в личном хранилище + + diff --git a/SSL/src/CommonPictures/СертификатПросрочен/Picture.zip b/SSL/src/CommonPictures/СертификатПросрочен/Picture.zip new file mode 100644 index 000000000..32ac8846e Binary files /dev/null and b/SSL/src/CommonPictures/СертификатПросрочен/Picture.zip differ diff --git a/SSL/src/CommonPictures/СертификатПросрочен/СертификатПросрочен.mdo b/SSL/src/CommonPictures/СертификатПросрочен/СертификатПросрочен.mdo new file mode 100644 index 000000000..d0d897107 --- /dev/null +++ b/SSL/src/CommonPictures/СертификатПросрочен/СертификатПросрочен.mdo @@ -0,0 +1,8 @@ + + + СертификатПросрочен + + ru + Сертификат просрочен + + diff --git a/SSL/src/CommonPictures/СинхронизацияДанныхНедоступна/СинхронизацияДанныхНедоступна.mdo b/SSL/src/CommonPictures/СинхронизацияДанныхНедоступна/СинхронизацияДанныхНедоступна.mdo index b64759941..39c0220b6 100644 --- a/SSL/src/CommonPictures/СинхронизацияДанныхНедоступна/СинхронизацияДанныхНедоступна.mdo +++ b/SSL/src/CommonPictures/СинхронизацияДанныхНедоступна/СинхронизацияДанныхНедоступна.mdo @@ -5,4 +5,8 @@ ru Синхронизация данных недоступна + + en + Restore + diff --git a/SSL/src/CommonPictures/Создание/Picture.zip b/SSL/src/CommonPictures/Создание/Picture.zip deleted file mode 100644 index faf597ced..000000000 Binary files a/SSL/src/CommonPictures/Создание/Picture.zip and /dev/null differ diff --git a/SSL/src/CommonPictures/СостоянияСертификатов/Picture.zip b/SSL/src/CommonPictures/СостоянияСертификатов/Picture.zip new file mode 100644 index 000000000..d388ee2d3 Binary files /dev/null and b/SSL/src/CommonPictures/СостоянияСертификатов/Picture.zip differ diff --git a/SSL/src/CommonPictures/СостоянияСертификатов/СостоянияСертификатов.mdo b/SSL/src/CommonPictures/СостоянияСертификатов/СостоянияСертификатов.mdo new file mode 100644 index 000000000..d8880d3e3 --- /dev/null +++ b/SSL/src/CommonPictures/СостоянияСертификатов/СостоянияСертификатов.mdo @@ -0,0 +1,8 @@ + + + СостоянияСертификатов + + ru + Состояния сертификатов + + diff --git a/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/Picture.zip b/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/Picture.zip new file mode 100644 index 000000000..c6cbda099 Binary files /dev/null and b/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/Picture.zip differ diff --git a/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/СрокДействияСертификатаЗаканчивается.mdo b/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/СрокДействияСертификатаЗаканчивается.mdo new file mode 100644 index 000000000..cbef44fbe --- /dev/null +++ b/SSL/src/CommonPictures/СрокДействияСертификатаЗаканчивается/СрокДействияСертификатаЗаканчивается.mdo @@ -0,0 +1,8 @@ + + + СрокДействияСертификатаЗаканчивается + + ru + Срок действия сертификата заканчивается + + diff --git a/SSL/src/CommonPictures/Информация/Picture.zip b/SSL/src/CommonPictures/УдалитьИнформация/Picture.zip similarity index 100% rename from SSL/src/CommonPictures/Информация/Picture.zip rename to SSL/src/CommonPictures/УдалитьИнформация/Picture.zip diff --git a/SSL/src/CommonPictures/Информация/Информация.mdo b/SSL/src/CommonPictures/УдалитьИнформация/УдалитьИнформация.mdo similarity index 65% rename from SSL/src/CommonPictures/Информация/Информация.mdo rename to SSL/src/CommonPictures/УдалитьИнформация/УдалитьИнформация.mdo index 93285ffab..27349ab27 100644 --- a/SSL/src/CommonPictures/Информация/Информация.mdo +++ b/SSL/src/CommonPictures/УдалитьИнформация/УдалитьИнформация.mdo @@ -1,8 +1,8 @@ - Информация + УдалитьИнформация ru - Информация + (не используется) Информация diff --git a/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/Picture.svg new file mode 100644 index 000000000..458ad5061 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/Picture.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/УровеньДоступаАдминистрированиеИсточника.mdo b/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/УровеньДоступаАдминистрированиеИсточника.mdo new file mode 100644 index 000000000..641ab25f3 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаАдминистрированиеИсточника/УровеньДоступаАдминистрированиеИсточника.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаАдминистрированиеИсточника + + ru + Уровень доступа администрирование источника + + diff --git a/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/Picture.svg new file mode 100644 index 000000000..279ac1228 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/Picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/УровеньДоступаЕстьПраво.mdo b/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/УровеньДоступаЕстьПраво.mdo new file mode 100644 index 000000000..9c91a7e0c --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаЕстьПраво/УровеньДоступаЕстьПраво.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаЕстьПраво + + ru + Уровень доступа есть право + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользование/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаИспользование/Picture.svg new file mode 100644 index 000000000..bce738015 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользование/Picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользование/УровеньДоступаИспользование.mdo b/SSL/src/CommonPictures/УровеньДоступаИспользование/УровеньДоступаИспользование.mdo new file mode 100644 index 000000000..4b38ffa6c --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользование/УровеньДоступаИспользование.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаИспользование + + ru + Уровень доступа использование + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/Picture.svg new file mode 100644 index 000000000..8f1e0a064 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/Picture.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/УровеньДоступаИспользованиеИАдминистрированиеИсточника.mdo b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/УровеньДоступаИспользованиеИАдминистрированиеИсточника.mdo new file mode 100644 index 000000000..70719fa60 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИАдминистрированиеИсточника/УровеньДоступаИспользованиеИАдминистрированиеИсточника.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаИспользованиеИАдминистрированиеИсточника + + ru + Уровень доступа использование и администрирование источника + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/Picture.svg new file mode 100644 index 000000000..1194e7a1a --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/УровеньДоступаИспользованиеИсточника.mdo b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/УровеньДоступаИспользованиеИсточника.mdo new file mode 100644 index 000000000..22911764c --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаИспользованиеИсточника/УровеньДоступаИспользованиеИсточника.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаИспользованиеИсточника + + ru + Уровень доступа использование источника + + diff --git a/SSL/src/CommonPictures/УровеньДоступаПолучение/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаПолучение/Picture.svg new file mode 100644 index 000000000..56b938da5 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаПолучение/Picture.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаПолучение/УровеньДоступаПолучение.mdo b/SSL/src/CommonPictures/УровеньДоступаПолучение/УровеньДоступаПолучение.mdo new file mode 100644 index 000000000..e03535b38 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаПолучение/УровеньДоступаПолучение.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаПолучение + + ru + Уровень доступа получение + + diff --git a/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/Picture.svg new file mode 100644 index 000000000..f23d4830a --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/Picture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/УровеньДоступаПолучениеИУстановка.mdo b/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/УровеньДоступаПолучениеИУстановка.mdo new file mode 100644 index 000000000..58af694ec --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаПолучениеИУстановка/УровеньДоступаПолучениеИУстановка.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаПолучениеИУстановка + + ru + Уровень доступа получение и установка + + diff --git a/SSL/src/CommonPictures/УровеньДоступаПросмотр/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаПросмотр/Picture.svg new file mode 100644 index 000000000..bc2331e49 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаПросмотр/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/Просмотр/Просмотр.mdo b/SSL/src/CommonPictures/УровеньДоступаПросмотр/УровеньДоступаПросмотр.mdo similarity index 64% rename from SSL/src/CommonPictures/Просмотр/Просмотр.mdo rename to SSL/src/CommonPictures/УровеньДоступаПросмотр/УровеньДоступаПросмотр.mdo index 03d45e375..abea9c822 100644 --- a/SSL/src/CommonPictures/Просмотр/Просмотр.mdo +++ b/SSL/src/CommonPictures/УровеньДоступаПросмотр/УровеньДоступаПросмотр.mdo @@ -1,8 +1,8 @@ - Просмотр + УровеньДоступаПросмотр ru - Просмотр + Уровень доступа просмотр diff --git a/SSL/src/CommonPictures/УровеньДоступаРедактирование/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаРедактирование/Picture.svg new file mode 100644 index 000000000..218af772a --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаРедактирование/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/Редактирование/Редактирование.mdo b/SSL/src/CommonPictures/УровеньДоступаРедактирование/УровеньДоступаРедактирование.mdo similarity index 60% rename from SSL/src/CommonPictures/Редактирование/Редактирование.mdo rename to SSL/src/CommonPictures/УровеньДоступаРедактирование/УровеньДоступаРедактирование.mdo index bdce01f3e..3185fa920 100644 --- a/SSL/src/CommonPictures/Редактирование/Редактирование.mdo +++ b/SSL/src/CommonPictures/УровеньДоступаРедактирование/УровеньДоступаРедактирование.mdo @@ -1,8 +1,8 @@ - Редактирование + УровеньДоступаРедактирование ru - Редактирование + Уровень доступа редактирование diff --git a/SSL/src/CommonPictures/УровеньДоступаСоздание/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаСоздание/Picture.svg new file mode 100644 index 000000000..163318089 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаСоздание/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/Создание/Создание.mdo b/SSL/src/CommonPictures/УровеньДоступаСоздание/УровеньДоступаСоздание.mdo similarity index 64% rename from SSL/src/CommonPictures/Создание/Создание.mdo rename to SSL/src/CommonPictures/УровеньДоступаСоздание/УровеньДоступаСоздание.mdo index 7a56a5451..ed46e69e6 100644 --- a/SSL/src/CommonPictures/Создание/Создание.mdo +++ b/SSL/src/CommonPictures/УровеньДоступаСоздание/УровеньДоступаСоздание.mdo @@ -1,8 +1,8 @@ - Создание + УровеньДоступаСоздание ru - Создание + Уровень доступа создание diff --git a/SSL/src/CommonPictures/УровеньДоступаУстановка/Picture.svg b/SSL/src/CommonPictures/УровеньДоступаУстановка/Picture.svg new file mode 100644 index 000000000..c2b0751e1 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаУстановка/Picture.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/SSL/src/CommonPictures/УровеньДоступаУстановка/УровеньДоступаУстановка.mdo b/SSL/src/CommonPictures/УровеньДоступаУстановка/УровеньДоступаУстановка.mdo new file mode 100644 index 000000000..6c9fdecf0 --- /dev/null +++ b/SSL/src/CommonPictures/УровеньДоступаУстановка/УровеньДоступаУстановка.mdo @@ -0,0 +1,8 @@ + + + УровеньДоступаУстановка + + ru + Уровень доступа установка + + diff --git a/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/Picture.svg b/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/Picture.svg new file mode 100644 index 000000000..174fd767b --- /dev/null +++ b/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/Picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/ШтампЭлектроннойПодписи.mdo b/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/ШтампЭлектроннойПодписи.mdo new file mode 100644 index 000000000..09b560c22 --- /dev/null +++ b/SSL/src/CommonPictures/ШтампЭлектроннойПодписи/ШтампЭлектроннойПодписи.mdo @@ -0,0 +1,8 @@ + + + ШтампЭлектроннойПодписи + + ru + Штамп электронной подписи + + diff --git a/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/Template.dcs b/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/Template.dcs new file mode 100644 index 000000000..f6eaf1f50 --- /dev/null +++ b/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/Template.dcs @@ -0,0 +1,153 @@ + + + + ИсточникДанных1 + Local + + + НаборДанных1 + + ОбщиеРеквизиты.ТекущаяДата + ТекущаяДата + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Текущая дата</v8:content> + </v8:item> + + + xs:dateTime + + DateTime + + + + + ОбщиеРеквизиты.ТекущийПользователь + ТекущийПользователь + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Текущий пользователь</v8:content> + </v8:item> + + + d5p1:CatalogRef.Пользователи + + + + ОбщиеРеквизиты.ОсновнаяОрганизация + ОсновнаяОрганизация + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Основная организация</v8:content> + </v8:item> + + + + ОбщиеРеквизиты.ОбратныйАдрес + ОбратныйАдрес + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обратный адрес</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + ОбщиеРеквизиты.ЗаголовокСистемы + ЗаголовокСистемы + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Заголовок системы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + ОбщиеРеквизиты.АдресБазыВЛокальнойСети + АдресБазыВЛокальнойСети + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Адрес базы в локальной сети</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + ОбщиеРеквизиты.АдресБазыВИнтернете + АдресБазыВИнтернете + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Адрес базы в интернете</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + ОбщиеРеквизиты.ШтампЭП + ШтампЭП + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Штамп электронной подписи</v8:content> + </v8:item> + + + + ОбщиеРеквизиты + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Общие реквизиты</v8:content> + </v8:item> + + + + Ссылка + Ссылка + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Ссылка</v8:content> + </v8:item> + + + ИсточникДанных1 + Данные + + + Основной + Основной + + + \ No newline at end of file diff --git a/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/ДанныеПечатиОбщиеРеквизиты.mdo b/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/ДанныеПечатиОбщиеРеквизиты.mdo new file mode 100644 index 000000000..257df6451 --- /dev/null +++ b/SSL/src/CommonTemplates/ДанныеПечатиОбщиеРеквизиты/ДанныеПечатиОбщиеРеквизиты.mdo @@ -0,0 +1,9 @@ + + + ДанныеПечатиОбщиеРеквизиты + + ru + Данные печати общие реквизиты + + DataCompositionSchema + diff --git a/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/Template.dcs b/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/Template.dcs new file mode 100644 index 000000000..3d2fbbf76 --- /dev/null +++ b/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/Template.dcs @@ -0,0 +1,70 @@ + + + + ИсточникДанных1 + Local + + + НаборДанных1 + + РегистрСимволов.ВсеПрописные + ВсеПрописные + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ВСЕ ПРОПИСНЫЕ</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + РегистрСимволов.ВсеСтрочные + ВсеСтрочные + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>все строчные</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + РегистрСимволов + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Регистр символов</v8:content> + </v8:item> + + + + Ссылка + Ссылка + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Ссылка</v8:content> + </v8:item> + + + ИсточникДанных1 + Данные + + + Основной + Основной + + + \ No newline at end of file diff --git a/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/ДанныеПечатиРегистрСимволов.mdo b/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/ДанныеПечатиРегистрСимволов.mdo new file mode 100644 index 000000000..eb456af7d --- /dev/null +++ b/SSL/src/CommonTemplates/ДанныеПечатиРегистрСимволов/ДанныеПечатиРегистрСимволов.mdo @@ -0,0 +1,9 @@ + + + ДанныеПечатиРегистрСимволов + + ru + Данные печати регистр символов + + DataCompositionSchema + diff --git a/SSL/src/Configuration/Configuration.mdo b/SSL/src/Configuration/Configuration.mdo index ce3d6478e..057ffe563 100644 --- a/SSL/src/Configuration/Configuration.mdo +++ b/SSL/src/Configuration/Configuration.mdo @@ -1,17 +1,17 @@ - + БиблиотекаСтандартныхПодсистем ru Библиотека стандартных подсистем, редакция 3.1 - - - - - - - + + + + + + + ManagedApplication PersonalComputer Russian @@ -19,7 +19,7 @@ Role.АдминистраторСистемы Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок Фирма "1С" - 3.1.5.289 + 3.1.6.62 http://downloads.v8.1c.ru/tmplts/ true @@ -77,6 +77,7 @@ StyleItem.ВладелецФайловШрифт StyleItem.ВыделенныйЗаголовокПодтвержденияШрифт StyleItem.ВыполненнаяЗадача + StyleItem.ВычисленноеПравоДоступаЦвет StyleItem.ГиперссылкаЦвет StyleItem.ГруппаВариантовОтчетовВажнаяШрифт StyleItem.ГруппаВариантовОтчетовОбычнаяШрифт @@ -91,7 +92,7 @@ StyleItem.ЗаголовокДелаЦвет StyleItem.ЗаголовокУдаленногоРеквизитаФон StyleItem.ЗаголовокУдаленногоРеквизитаШрифт - StyleItem.ЗапрещенноеПравоДоступа + StyleItem.ЗапрещенноеПравоДоступаЦвет StyleItem.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт StyleItem.ИзмененноеЗначениеРеквизитаФон StyleItem.ИзмененноеЗначениеРеквизитаЦвет @@ -101,6 +102,7 @@ StyleItem.КонтактнаяИнформацияСРедактированиемВДиалогеЦвет StyleItem.МелкийЗаголовокПодтвержденияШрифт StyleItem.МоиВариантыОтчетовЦвет + StyleItem.НеназначенноеПравоДоступаЦвет StyleItem.НепринятаяВерсия StyleItem.НеПринятыеКИсполнениюЗадачи StyleItem.НерабочийПериодПроизводственногоКалендаряФон @@ -119,6 +121,7 @@ StyleItem.ПравоСозданияФон StyleItem.ПросроченныеДанныеЦвет StyleItem.РазделВариантовОтчетовШрифт + StyleItem.РазрешенноеПравоДоступаЦвет StyleItem.РезультатУспехЦвет StyleItem.РольБезИсполнителей StyleItem.СкрытыйВариантОтчетаЦвет @@ -246,7 +249,6 @@ CommonPicture.ЗначокЩита CommonPicture.ИерархическийСписок CommonPicture.ИзменитьШрифт - CommonPicture.Информация CommonPicture.Информация32 CommonPicture.ИнформацияПоНедоступнымПолям CommonPicture.ИспользованиеМакета @@ -291,9 +293,84 @@ CommonPicture.КурсивноеНачертание CommonPicture.Максимум CommonPicture.МенюДополнительныеФункции + CommonPicture.МестоДляКартинки + CommonPicture.МетаданныеHTTPСервисы + CommonPicture.МетаданныеHTTPСервисыШаблоныURL + CommonPicture.МетаданныеHTTPСервисыШаблоныURLМетоды + CommonPicture.МетаданныеWebСервисы + CommonPicture.МетаданныеWebСервисыОперации + CommonPicture.МетаданныеWebСервисыОперацииПараметры + CommonPicture.МетаданныеWSСсылки + CommonPicture.МетаданныеБизнесПроцессы + CommonPicture.МетаданныеБоты + CommonPicture.МетаданныеВнешниеИсточникиДанных + CommonPicture.МетаданныеВнешниеИсточникиКубы + CommonPicture.МетаданныеВнешниеИсточникиТаблицы + CommonPicture.МетаданныеВнешниеИсточникиТаблицыИзмерений + CommonPicture.МетаданныеВнешниеИсточникиФункции + CommonPicture.МетаданныеГрафы + CommonPicture.МетаданныеГруппыКоманд + CommonPicture.МетаданныеДокументы + CommonPicture.МетаданныеЖурналыДокументов + CommonPicture.МетаданныеЗадачи + CommonPicture.МетаданныеЗначениеПеречисления + CommonPicture.МетаданныеИзмерения + CommonPicture.МетаданныеКоманды + CommonPicture.МетаданныеКонстанты + CommonPicture.МетаданныеКонфигурация + CommonPicture.МетаданныеКритерииОтбора + CommonPicture.МетаданныеМакеты + CommonPicture.МетаданныеОбработки + CommonPicture.МетаданныеОбщие + CommonPicture.МетаданныеОбщиеКартинки + CommonPicture.МетаданныеОбщиеКоманды + CommonPicture.МетаданныеОбщиеМакеты + CommonPicture.МетаданныеОбщиеМодули + CommonPicture.МетаданныеОбщиеРеквизиты + CommonPicture.МетаданныеОбщиеФормы + CommonPicture.МетаданныеОпределяемыеТипы + CommonPicture.МетаданныеОпределяемыйТип + CommonPicture.МетаданныеОтчеты + CommonPicture.МетаданныеПакетыXDTO + CommonPicture.МетаданныеПараметрыСеанса + CommonPicture.МетаданныеПараметрыФункциональныхОпций + CommonPicture.МетаданныеПерерасчеты + CommonPicture.МетаданныеПеречисления + CommonPicture.МетаданныеПланыВидовРасчета + CommonPicture.МетаданныеПланыВидовХарактеристик + CommonPicture.МетаданныеПланыОбмена + CommonPicture.МетаданныеПланыСчетов + CommonPicture.МетаданныеПодпискиНаСобытия + CommonPicture.МетаданныеПодсистемы + CommonPicture.МетаданныеПоследовательности + CommonPicture.МетаданныеПризнакиУчета + CommonPicture.МетаданныеПризнакиУчетаСубконто + CommonPicture.МетаданныеРегистрыБухгалтерии + CommonPicture.МетаданныеРегистрыНакопления + CommonPicture.МетаданныеРегистрыРасчета + CommonPicture.МетаданныеРегистрыСведений + CommonPicture.МетаданныеРегламентныеЗадания + CommonPicture.МетаданныеРеквизиты + CommonPicture.МетаданныеРеквизитыАдресации + CommonPicture.МетаданныеРесурсы + CommonPicture.МетаданныеРоли + CommonPicture.МетаданныеСправочники + CommonPicture.МетаданныеСтандартныеРеквизиты + CommonPicture.МетаданныеСтандартныеТабличныеЧасти + CommonPicture.МетаданныеСтили + CommonPicture.МетаданныеТабличныеЧасти + CommonPicture.МетаданныеФормы + CommonPicture.МетаданныеФункциональныеОпции + CommonPicture.МетаданныеХранилищаНастроек + CommonPicture.МетаданныеЭлементыСтиля + CommonPicture.МетаданныеЯзыки CommonPicture.Минимум CommonPicture.НаписатьSMS CommonPicture.Напоминание + CommonPicture.НаследованиеВключено + CommonPicture.НаследованиеВключеноСПапкой + CommonPicture.НаследованиеОтключено + CommonPicture.НаследованиеОтключеноСПапкой CommonPicture.НастроитьСостоянияОригиналаПервичногоДокумента CommonPicture.НезавершившаясяПроверка CommonPicture.НетГраницы @@ -313,6 +390,7 @@ CommonPicture.ОткрытьВыбранныйФайл CommonPicture.ОткрытьМакет CommonPicture.ОтложитьРассмотрениеВзаимодействия + CommonPicture.ОтменитьДействие CommonPicture.ОтменитьРедактированиеМакета CommonPicture.ОтправитьSMS CommonPicture.ОтправитьПолучитьПочту @@ -327,6 +405,7 @@ CommonPicture.ПапкаОблачногоСервиса CommonPicture.Папки CommonPicture.ПапкиЭлектронныхПисем + CommonPicture.ПереводТекста CommonPicture.ПерейтиВПолноэкранныйРежим CommonPicture.ПереместитьВЗакладкиВзаимодействия CommonPicture.ПереместитьВлевоВверх @@ -339,18 +418,23 @@ CommonPicture.ПереместитьКолонкуВправо CommonPicture.ПереслатьПисьмоКакВложение CommonPicture.ПереслатьЭлектронноеПисьмо + CommonPicture.ПечатьОрганизации CommonPicture.ПиктограммыДоступаКНастройкамОтчета CommonPicture.ПиктограммыНастроекОтчета CommonPicture.ПиктограммыПланОбменаУзел CommonPicture.ПиктограммыТиповДанных CommonPicture.ПиктограммыЭлементов CommonPicture.ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов + CommonPicture.ПовторитьДействие + CommonPicture.ПовторятьВКонцеСтраницы + CommonPicture.ПовторятьВНачалеСтраницы CommonPicture.ПодключениеОбсуждений CommonPicture.Подменю CommonPicture.ПодменюСервис CommonPicture.ПодписанЗашифрованЗаголовок CommonPicture.ПодписанЗашифрованСостояния CommonPicture.ПодписанЭП + CommonPicture.Подпись CommonPicture.ПодписьОблако CommonPicture.ПодписьСервиса CommonPicture.Подсистема @@ -380,7 +464,6 @@ CommonPicture.ПроверкаСертификатаОшибка CommonPicture.ПроверкаСертификатаПредупреждение CommonPicture.ПроверкаСертификатаУспех - CommonPicture.Просмотр CommonPicture.ПроцессОтложен CommonPicture.ПрочиеПользовательскиеНастройки CommonPicture.Пустая @@ -393,14 +476,15 @@ CommonPicture.Рассчитать CommonPicture.РассылкаОтчетов CommonPicture.РасширениеКонфигурацииИзГлавногоУзла - CommonPicture.Редактирование CommonPicture.РедактироватьАдресСайта CommonPicture.РедактироватьМакет CommonPicture.РедактироватьФайл CommonPicture.РежимИспользованияПриложенияВСервисеЛокально CommonPicture.СдвинутьВверх CommonPicture.СдвинутьВниз + CommonPicture.СертификатВЛичномХранилище CommonPicture.СертификатКлюча + CommonPicture.СертификатПросрочен CommonPicture.СинхронизацияДанных CommonPicture.СинхронизацияДанныхАнализДанных48 CommonPicture.СинхронизацияДанныхВыгрузить @@ -422,7 +506,6 @@ CommonPicture.Скрепка CommonPicture.СкрытаяНастройкаОтчета CommonPicture.СнятьПризнакРассмотреноУВзаимодействия - CommonPicture.Создание CommonPicture.СортироватьСтрокиПоВозрастанию CommonPicture.СортироватьСтрокиПоУбыванию CommonPicture.СостояниеОбменаДанными @@ -448,6 +531,7 @@ CommonPicture.СостоянияРасширенийКонфигурации CommonPicture.СостоянияРасширенийОшибка CommonPicture.СостоянияРасширенийПодключено + CommonPicture.СостоянияСертификатов CommonPicture.СохранитьВариантОтчета CommonPicture.СохранитьКак CommonPicture.СохранитьФайлКак @@ -466,6 +550,7 @@ CommonPicture.СправочникПВХПомеченНаУдалениеКоннекторЛевоНиз CommonPicture.СправочникПВХПомеченНаУдалениеКоннекторНиз CommonPicture.Среднее + CommonPicture.СрокДействияСертификатаЗаканчивается CommonPicture.СтатусыДокумента CommonPicture.СтатусыСопоставленияОбъектов CommonPicture.СтрелкаВверх @@ -507,6 +592,17 @@ CommonPicture.ТолстаяГраницаСнизу CommonPicture.УвеличитьШрифт CommonPicture.УменьшитьШрифт + CommonPicture.УровеньДоступаАдминистрированиеИсточника + CommonPicture.УровеньДоступаЕстьПраво + CommonPicture.УровеньДоступаИспользование + CommonPicture.УровеньДоступаИспользованиеИАдминистрированиеИсточника + CommonPicture.УровеньДоступаИспользованиеИсточника + CommonPicture.УровеньДоступаПолучение + CommonPicture.УровеньДоступаПолучениеИУстановка + CommonPicture.УровеньДоступаПросмотр + CommonPicture.УровеньДоступаРедактирование + CommonPicture.УровеньДоступаСоздание + CommonPicture.УровеньДоступаУстановка CommonPicture.Успешно CommonPicture.Успешно32 CommonPicture.УстановитьОтветственногоЗаВзаимодействие @@ -530,11 +626,13 @@ CommonPicture.ЦветФона CommonPicture.ШиринаКолонки CommonPicture.Шрифт + CommonPicture.ШтампЭлектроннойПодписи CommonPicture.ЭлектронноеПисьмо CommonPicture.ЭлектронноеПисьмоВходящее CommonPicture.ЭлектронноеПисьмоИсходящее CommonPicture.ЭтапыПодтверждения CommonPicture.ЯндексКарты + CommonPicture.УдалитьИнформация SessionParameter.АвторизованныйПользователь SessionParameter.БуферОбмена SessionParameter.ВерсииШаблоновОграниченияДоступа @@ -621,15 +719,17 @@ Role.ДобавлениеИзменениеПапокИФайлов Role.ДобавлениеИзменениеПапокИФайловВнешнимиПользователями Role.ДобавлениеИзменениеПользователей + Role.ДобавлениеИзменениеПрограммЭлектроннойПодписиИШифрования Role.ДобавлениеИзменениеРассылокОтчетов Role.ДобавлениеИзменениеРолейИсполнителей Role.ДобавлениеИзменениеСерверовОблачнойПодписи + Role.ДобавлениеИзменениеСертификатовКлючейЭлектроннойПодписиИШифрования Role.ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов Role.ДобавлениеИзменениеУчетныхЗаписейОблачнойПодписи Role.ДобавлениеИзменениеУчетныхЗаписейЭлектроннойПочты Role.ДобавлениеИзменениеШаблоновАнкет Role.ДобавлениеИзменениеШаблоновСообщений - Role.ДобавлениеИзменениеЭлектронныхПодписейИШифрование + Role.ДобавлениеИзменениеЭлектронныхПодписей Role.ЗапускAutomation Role.ЗапускВебКлиента Role.ЗапускВнешнегоСоединения @@ -653,6 +753,7 @@ Role.ПросмотрОписанияИзмененийПрограммы Role.ПросмотрОтчетаДвиженияДокумента Role.ПросмотрСвязанныеДокументы + Role.РасшифровкаДанных Role.РедактированиеПечатныхФорм Role.РедактированиеРеквизитовОбъектов Role.РежимТехническогоСпециалиста @@ -678,6 +779,9 @@ Role.ЧтениеСостоянийОригиналовПервичныхДокументов Role.ЧтениеУчетныхЗаписейЭлектроннойПочты Role.ЧтениеШаблоновСообщений + Role.ШифрованиеИРасшифровкаДанных + CommonTemplate.ДанныеПечатиОбщиеРеквизиты + CommonTemplate.ДанныеПечатиРегистрСимволов CommonTemplate.ИнструкцияДляУстановкиКодаДляПредопределенногоУзла_ru CommonTemplate.ИнструкцияКакВыполнитьУстановкуОбновленияВручную CommonTemplate.ИнструкцияПоСозданиюФаксимильнойПодписиИПечати @@ -866,6 +970,7 @@ CommonModule.ОбменДаннымиСлужебный CommonModule.ОбменДаннымиСобытия CommonModule.ОбновлениеИнформационнойБазы + CommonModule.ОбновлениеИнформационнойБазыБСД CommonModule.ОбновлениеИнформационнойБазыБСП CommonModule.ОбновлениеИнформационнойБазыВызовСервера CommonModule.ОбновлениеИнформационнойБазыГлобальный @@ -1114,6 +1219,7 @@ CommonModule.УправлениеПечатьюКлиентСервер CommonModule.УправлениеПечатьюМультиязычность CommonModule.УправлениеПечатьюМультиязычностьКлиент + CommonModule.УправлениеПечатьюМультиязычностьПереопределяемый CommonModule.УправлениеПечатьюПереопределяемый CommonModule.УправлениеПечатьюРФ CommonModule.УправлениеПечатьюСлужебный @@ -1317,6 +1423,7 @@ ScheduledJob.ОбновлениеДоступаНаУровнеЗаписей ScheduledJob.ОбновлениеИндексаППД ScheduledJob.ОбновлениеПредопределенныхВариантовОтчетов + ScheduledJob.ОбновлениеСостоянияЗаявленияНаВыпускСертификата ScheduledJob.ОбновлениеСтатусовДоставкиSMS ScheduledJob.ОбработкаСервисовИнтеграции ScheduledJob.ОтключениеПроверкиИспользованияУдаляемыхОбъектов @@ -1357,6 +1464,7 @@ FunctionalOption.ИспользоватьВерсионированиеОбъекта FunctionalOption.ИспользоватьВерсионированиеОбъектов FunctionalOption.ИспользоватьВнешнихПользователей + FunctionalOption.ИспользоватьГруппыВнешнихПользователей FunctionalOption.ИспользоватьГруппыПользователей FunctionalOption.ИспользоватьДатуИВремяВСрокахЗадач FunctionalOption.ИспользоватьДатуНачалаЗадач @@ -1371,6 +1479,7 @@ FunctionalOption.ИспользоватьНапоминанияПользователя FunctionalOption.ИспользоватьНесколькоПроизводственныхКалендарей FunctionalOption.ИспользоватьОнлайнПоддержку + FunctionalOption.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста FunctionalOption.ИспользоватьОтправкуSMSВШаблонахСообщений FunctionalOption.ИспользоватьПодчиненныеБизнесПроцессы FunctionalOption.ИспользоватьПолнотекстовыйПоиск @@ -1549,6 +1658,7 @@ Constant.ВерсияКлассификатораБанков Constant.ВыполнятьЗамерыПроизводительности Constant.ГлавныйУзел + Constant.ДанныеДляИзмененияМультиязычныхРеквизитов Constant.ДанныеДляОтложенногоОбновления Constant.ДатаОбновленияПовторноИспользуемыхЗначенийМРО Constant.ДатаПоследнегоОбновленияКлассификатораОшибок @@ -1574,6 +1684,7 @@ Constant.ИспользоватьБизнесПроцессыИЗадачи Constant.ИспользоватьВерсионированиеОбъектов Constant.ИспользоватьВнешнихПользователей + Constant.ИспользоватьГруппыВнешнихПользователей Constant.ИспользоватьГруппыПользователей Constant.ИспользоватьДатуИВремяВСрокахЗадач Constant.ИспользоватьДатуНачалаЗадач @@ -1587,6 +1698,7 @@ Constant.ИспользоватьНапоминанияПользователя Constant.ИспользоватьНесколькоПроизводственныхКалендарей Constant.ИспользоватьОнлайнПоддержку + Constant.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста Constant.ИспользоватьОтправкуSMSВШаблонахСообщений Constant.ИспользоватьПодчиненныеБизнесПроцессы Constant.ИспользоватьПолнотекстовыйПоиск @@ -1799,6 +1911,7 @@ Catalog.КлассификаторБанков Catalog.КлючевыеОперации Catalog.КлючиДоступа + Catalog.МакетыПечатныхФорм Catalog.НаборыГруппДоступа Catalog.НаборыДополнительныхРеквизитовИСведений Catalog.ОбщиеВнешниеКомпоненты @@ -1947,6 +2060,7 @@ Report.ОбъемНенужныхФайлов Report.ОценкаПроизводительности Report.ПраваДоступа + Report.ПраваРолей Report.ПроверкаЦелостностиТома Report.ПрогрессОбновленияОбластейДанных Report.ПрогрессОтложенногоОбновления @@ -2055,6 +2169,7 @@ InformationRegister.ЗамерыОперацииСтатистики InformationRegister.ЗамерыСтатистики InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов + InformationRegister.ЗаявленияНаВыпускСертификата InformationRegister.ЗемельныеУчастки InformationRegister.ЗначенияГруппДоступа InformationRegister.ЗначенияГруппДоступаПоУмолчанию @@ -2113,6 +2228,7 @@ InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз InformationRegister.ОбщиеПоставляемыеМакетыПечати InformationRegister.ОперацииСтатистики + InformationRegister.ОповещенияПользователейСертификатов InformationRegister.ОриентирыАдресныхОбъектов InformationRegister.ОтветыНаВопросыАнкет InformationRegister.ОчередьИзвлеченияТекста @@ -2132,6 +2248,7 @@ InformationRegister.ПредметыПапкиВзаимодействий InformationRegister.ПредопределенныеВариантыОтчетовВерсийРасширений InformationRegister.ПричиныИзмененияАдресныхСведений + InformationRegister.ПрогрессОбновления InformationRegister.ПроцессыДляЗапуска InformationRegister.ПсевдонимыПредопределенныхУзлов InformationRegister.ПубличныеИдентификаторыСинхронизируемыхОбъектов diff --git a/SSL/src/Configuration/ParentConfigurations.bin b/SSL/src/Configuration/ParentConfigurations.bin index 38586f3ec..1e0bf0926 100644 --- a/SSL/src/Configuration/ParentConfigurations.bin +++ b/SSL/src/Configuration/ParentConfigurations.bin @@ -1 +1 @@ -{6,1,1,ac33f254-6427-11ec-6b82-0242ac110002,1,91f86b0e-6427-11ec-ae9d-0242ac110002,"3.1.5.289","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6473,1,0,44c7c0dc-6427-11ec-8f95-0242ac110002,44c7c0dc-6427-11ec-8f95-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,1,0,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,1,0,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,1,0,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,1,0,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,1,0,e0d3efe0-a321-4790-ba5d-e549a91a3ec6,e0d3efe0-a321-4790-ba5d-e549a91a3ec6,1,0,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,1,0,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,1,0,e15c3525-3453-4b62-834e-7c69f9efea51,e15c3525-3453-4b62-834e-7c69f9efea51,1,0,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,1,0,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,1,0,bc89af7a-1971-4245-8d88-1a5a50c50a8b,bc89af7a-1971-4245-8d88-1a5a50c50a8b,1,0,ad73f3a3-1dad-4920-af41-bda2b947a2f7,ad73f3a3-1dad-4920-af41-bda2b947a2f7,1,0,98b67b5a-3550-4a64-9e07-07fcc9154c73,98b67b5a-3550-4a64-9e07-07fcc9154c73,1,0,fd930b50-4ada-4e7f-8bfd-ed9a7c4e8964,fd930b50-4ada-4e7f-8bfd-ed9a7c4e8964,1,0,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,1,0,fa2a9ef2-00a1-44f4-a82c-6c7288dd62dc,fa2a9ef2-00a1-44f4-a82c-6c7288dd62dc,1,0,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,1,0,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,1,0,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,1,0,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,1,0,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,1,0,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,1,0,1c877cee-d9b8-48dc-8d79-04d27bb522f7,1c877cee-d9b8-48dc-8d79-04d27bb522f7,1,0,dd911418-ee16-4413-bfe9-4a5a238d3ce1,dd911418-ee16-4413-bfe9-4a5a238d3ce1,1,0,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,1,0,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,1,0,3d428bdf-c41b-43ac-957e-2943406c832c,3d428bdf-c41b-43ac-957e-2943406c832c,1,0,85cbc0b7-6aa5-455b-abed-7bc659d9ad51,85cbc0b7-6aa5-455b-abed-7bc659d9ad51,1,0,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,1,0,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,1,0,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,1,0,75561d71-4b06-40fc-8a46-ed5d33c80dea,75561d71-4b06-40fc-8a46-ed5d33c80dea,1,0,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,1,0,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,1,0,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,1,0,5578afd2-5aed-4164-8467-52a66f4773c4,5578afd2-5aed-4164-8467-52a66f4773c4,1,0,9eea8645-1ba7-4faf-9c29-868bf99964dd,9eea8645-1ba7-4faf-9c29-868bf99964dd,1,0,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,1,0,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,1,0,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,1,0,d9bad22e-4049-4371-86a3-1b00ae6215af,d9bad22e-4049-4371-86a3-1b00ae6215af,1,0,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,1,0,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,1,0,d5a5f53b-9cd5-4036-a379-31680cec3c24,d5a5f53b-9cd5-4036-a379-31680cec3c24,1,0,85e05ed7-25ed-4148-8247-86ff531ec48d,85e05ed7-25ed-4148-8247-86ff531ec48d,1,0,dcd34215-200c-4d3c-828c-4c3cd8b17a81,dcd34215-200c-4d3c-828c-4c3cd8b17a81,1,0,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,1,0,4a046c9b-98a0-4d4f-8e0b-b162d3c6bfc5,4a046c9b-98a0-4d4f-8e0b-b162d3c6bfc5,1,0,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,1,0,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,1,0,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,1,0,5797e28d-1318-4728-8b17-bcb78d85349a,5797e28d-1318-4728-8b17-bcb78d85349a,1,0,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,1,0,9f9e6146-17ce-4296-a89f-33dfe4d0468d,9f9e6146-17ce-4296-a89f-33dfe4d0468d,1,0,3cf15377-a5bb-4c37-9780-0dbff8d3d5bb,3cf15377-a5bb-4c37-9780-0dbff8d3d5bb,1,0,3aa020db-a811-4fb9-9ea9-00a3359fbb53,3aa020db-a811-4fb9-9ea9-00a3359fbb53,1,0,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,1,0,c90e64cf-f5d4-47b9-8243-7177ac42202e,c90e64cf-f5d4-47b9-8243-7177ac42202e,1,0,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,1,0,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,1,0,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,1,0,46692974-34aa-45e1-8fec-9b36064073cd,46692974-34aa-45e1-8fec-9b36064073cd,1,0,a6308250-2b1b-40ef-bd20-589d519e3c38,a6308250-2b1b-40ef-bd20-589d519e3c38,1,0,22eafd3b-dc42-4a99-89af-3cd5311dc29f,22eafd3b-dc42-4a99-89af-3cd5311dc29f,1,0,c67f671a-3c83-44f4-9c6a-e06667ac8da6,c67f671a-3c83-44f4-9c6a-e06667ac8da6,1,0,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,1,0,1fbd4cfa-58cb-41ea-920e-a39cfa6ad90c,1fbd4cfa-58cb-41ea-920e-a39cfa6ad90c,1,0,0da019ca-1fc7-4aff-8998-3ddcccf10872,0da019ca-1fc7-4aff-8998-3ddcccf10872,1,0,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,1,0,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,1,0,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,1,0,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,1,0,f6dd250e-75fd-47fc-abcb-79ea19ebd747,f6dd250e-75fd-47fc-abcb-79ea19ebd747,1,0,53c41e6c-89b0-4818-9832-02140373979b,53c41e6c-89b0-4818-9832-02140373979b,1,0,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,1,0,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,1,0,57e75b31-13b3-46fc-8ec4-7570ab0e9928,57e75b31-13b3-46fc-8ec4-7570ab0e9928,1,0,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,1,0,8ad81449-0b75-4775-a841-ca7fc7bf0d43,8ad81449-0b75-4775-a841-ca7fc7bf0d43,1,0,6b29b4b3-df0a-42f7-b89f-809ffbdacf02,6b29b4b3-df0a-42f7-b89f-809ffbdacf02,1,0,43d8dd53-df3e-407e-a3c1-5b893cc1976c,43d8dd53-df3e-407e-a3c1-5b893cc1976c,1,0,7741dfee-c4cc-454d-8e01-99ee82a78b5a,7741dfee-c4cc-454d-8e01-99ee82a78b5a,1,0,61e246f4-fe19-4377-8f69-fd1cb90e3f88,61e246f4-fe19-4377-8f69-fd1cb90e3f88,1,0,05c9e6c3-3e1c-4311-99ac-ec4d59a37205,05c9e6c3-3e1c-4311-99ac-ec4d59a37205,1,0,d437805b-42a9-439d-aef8-abbebe280b69,d437805b-42a9-439d-aef8-abbebe280b69,1,0,b33ccec0-a085-4e91-a26d-c262775d92e8,b33ccec0-a085-4e91-a26d-c262775d92e8,1,0,8adeeac2-d2d0-4d90-b7cb-c7871da477d5,8adeeac2-d2d0-4d90-b7cb-c7871da477d5,1,0,9e082d71-175a-4e80-8cca-6b538d3240eb,9e082d71-175a-4e80-8cca-6b538d3240eb,1,0,b8c4aff0-a36d-4be9-9a5e-b0873d83ff15,b8c4aff0-a36d-4be9-9a5e-b0873d83ff15,1,0,68704139-32bb-4b00-b439-147025d06a35,68704139-32bb-4b00-b439-147025d06a35,1,0,df80f175-7f2b-44f8-90d4-118e2e157356,df80f175-7f2b-44f8-90d4-118e2e157356,1,0,5a88f624-7b7e-43fe-8bc4-ae85d832a855,5a88f624-7b7e-43fe-8bc4-ae85d832a855,1,0,42e39ef7-268f-4053-b4e5-4bceab17d3e4,42e39ef7-268f-4053-b4e5-4bceab17d3e4,1,0,b49b47fb-d4dc-4efe-ad07-e8705d787e72,b49b47fb-d4dc-4efe-ad07-e8705d787e72,1,0,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,1,0,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,1,0,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,1,0,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,1,0,fce03f58-7f68-4d7c-a999-687667c1f03d,fce03f58-7f68-4d7c-a999-687667c1f03d,1,0,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,1,0,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,1,0,716302cc-ad47-4823-a81a-4c58857aa0a4,716302cc-ad47-4823-a81a-4c58857aa0a4,1,0,d0f3824e-ddfb-491d-8aea-e4e4806dc3ee,d0f3824e-ddfb-491d-8aea-e4e4806dc3ee,1,0,7cab0151-f86e-4ada-9ec6-e602749e34fc,7cab0151-f86e-4ada-9ec6-e602749e34fc,1,0,d9be359f-c5cb-4f3e-9ccd-61f38c6bbb26,d9be359f-c5cb-4f3e-9ccd-61f38c6bbb26,1,0,15b5979c-755b-480e-b00a-dcc95f62dfeb,15b5979c-755b-480e-b00a-dcc95f62dfeb,1,0,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,1,0,eb3cee83-57be-4a2a-a180-366c2f6454bc,eb3cee83-57be-4a2a-a180-366c2f6454bc,1,0,c78c1d9c-5c34-4636-bf2c-6cc410e95003,c78c1d9c-5c34-4636-bf2c-6cc410e95003,1,0,dcdf2b25-b024-4a89-b2c4-0a2ee43ef623,dcdf2b25-b024-4a89-b2c4-0a2ee43ef623,1,0,9200527c-b6b9-4962-9440-10449583e1e3,9200527c-b6b9-4962-9440-10449583e1e3,1,0,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,1,0,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,1,0,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,1,0,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,1,0,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,1,0,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,1,0,1960b036-b479-4f4f-80c5-23fc82474082,1960b036-b479-4f4f-80c5-23fc82474082,1,0,7707d7b0-bf30-4362-929a-a5de104266fc,7707d7b0-bf30-4362-929a-a5de104266fc,1,0,0da8a402-ea0f-488a-a087-77990e85a643,0da8a402-ea0f-488a-a087-77990e85a643,1,0,5e7ea635-f307-43cb-9aa7-2c99997b3c2d,5e7ea635-f307-43cb-9aa7-2c99997b3c2d,1,0,484003f5-a6df-48fb-a395-d0e0ebc8cc0d,484003f5-a6df-48fb-a395-d0e0ebc8cc0d,1,0,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,1,0,8b4614aa-c769-49f4-a281-a0ffb101abf1,8b4614aa-c769-49f4-a281-a0ffb101abf1,1,0,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,1,0,ba06091b-b659-4d29-a971-81335cf4060a,ba06091b-b659-4d29-a971-81335cf4060a,1,0,7c376c72-409e-4b5f-a5b6-85b0a1c23f58,7c376c72-409e-4b5f-a5b6-85b0a1c23f58,1,0,b7a0d00f-fbf3-41fe-b72f-c17e163264f9,b7a0d00f-fbf3-41fe-b72f-c17e163264f9,1,0,7bbd6fe8-c2fe-4ed2-abd7-2b3fc5b2f410,7bbd6fe8-c2fe-4ed2-abd7-2b3fc5b2f410,1,0,d61fa2fb-a035-469f-9ae1-b78ecd82c83d,d61fa2fb-a035-469f-9ae1-b78ecd82c83d,1,0,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,1,0,4c3a39e3-40ee-423b-91f0-14b60e045b40,4c3a39e3-40ee-423b-91f0-14b60e045b40,1,0,2f2875d7-7598-4ed5-8cc0-a1982ffb5377,2f2875d7-7598-4ed5-8cc0-a1982ffb5377,1,0,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,1,0,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,1,0,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,1,0,a54f2d41-a05e-4878-80c6-81ca2899fa4c,a54f2d41-a05e-4878-80c6-81ca2899fa4c,1,0,23a898d9-5bcb-4744-ab6c-97b17dc98f20,23a898d9-5bcb-4744-ab6c-97b17dc98f20,1,0,c83f7826-0fef-4a9b-8d36-dee5d93c7417,c83f7826-0fef-4a9b-8d36-dee5d93c7417,1,0,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,1,0,f8f56806-ed7e-4059-a0c8-940538c14c98,f8f56806-ed7e-4059-a0c8-940538c14c98,1,0,9ff9f92b-c509-48da-82ce-15b524a895d6,9ff9f92b-c509-48da-82ce-15b524a895d6,1,0,c8bf96c8-f359-4940-8e87-3d190371d6d3,c8bf96c8-f359-4940-8e87-3d190371d6d3,1,0,477f0b81-0eb1-4de1-8cb5-38f1e0823947,477f0b81-0eb1-4de1-8cb5-38f1e0823947,1,0,d914eaa9-ce85-4df7-a545-2d411ef915b0,d914eaa9-ce85-4df7-a545-2d411ef915b0,1,0,41881344-82b7-4904-9ab8-0207d9bcd0a9,41881344-82b7-4904-9ab8-0207d9bcd0a9,1,0,5c542a16-0f95-43be-85cd-bfd49b15f215,5c542a16-0f95-43be-85cd-bfd49b15f215,1,0,ef4d648f-4cac-4df9-9880-2aa13c422d10,ef4d648f-4cac-4df9-9880-2aa13c422d10,1,0,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,1,0,7185a8f8-48c4-43a9-b31f-102302b8f152,7185a8f8-48c4-43a9-b31f-102302b8f152,1,0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,1,0,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,1,0,c573a29f-4c39-402d-8af4-e0fff80877f8,c573a29f-4c39-402d-8af4-e0fff80877f8,1,0,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,1,0,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,1,0,edc731ba-532f-4fa1-81a8-58beb3b2dfb1,edc731ba-532f-4fa1-81a8-58beb3b2dfb1,1,0,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,1,0,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,1,0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,1,0,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,1,0,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,1,0,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,1,0,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,1,0,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,1,0,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,1,0,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,1,0,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,1,0,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,1,0,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,1,0,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,1,0,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,1,0,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,1,0,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,1,0,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,1,0,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,1,0,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,1,0,7f7598e5-ca54-487e-b95c-b18d330b034c,7f7598e5-ca54-487e-b95c-b18d330b034c,1,0,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,1,0,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,1,0,2120ad01-6bff-48bd-bad8-324e1301b112,2120ad01-6bff-48bd-bad8-324e1301b112,1,0,b9255acf-dc35-4225-8d3a-544e66b7334d,b9255acf-dc35-4225-8d3a-544e66b7334d,1,0,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,1,0,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,1,0,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,1,0,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,1,0,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,1,0,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,1,0,64e03321-33a4-424d-a101-90f1e0da4c2e,64e03321-33a4-424d-a101-90f1e0da4c2e,1,0,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,1,0,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,1,0,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,1,0,a1d80053-ef03-4c00-9fc9-266e61aeaffb,a1d80053-ef03-4c00-9fc9-266e61aeaffb,1,0,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,1,0,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,1,0,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,1,0,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,1,0,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,1,0,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,1,0,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,1,0,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,1,0,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,1,0,691f9902-6b95-4579-a3d9-3b2b5b548776,691f9902-6b95-4579-a3d9-3b2b5b548776,1,0,c7a8a88f-040a-47a6-8c93-7f3f01544760,c7a8a88f-040a-47a6-8c93-7f3f01544760,1,0,06fc381d-f27a-433c-95c3-e0981e01f22b,06fc381d-f27a-433c-95c3-e0981e01f22b,1,0,6d93ec4f-167a-4804-910b-988ee8aad78e,6d93ec4f-167a-4804-910b-988ee8aad78e,1,0,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,1,0,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,1,0,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,1,0,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,1,0,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,1,0,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,1,0,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,1,0,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,1,0,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,1,0,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,1,0,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,1,0,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,1,0,82b05859-4c4d-4d5a-a620-cc6aab10f527,82b05859-4c4d-4d5a-a620-cc6aab10f527,1,0,c5871658-94dd-4df4-9a3f-db5d245dd106,c5871658-94dd-4df4-9a3f-db5d245dd106,1,0,a3131bf3-88b1-431c-a01c-be6e26396f91,a3131bf3-88b1-431c-a01c-be6e26396f91,1,0,5c3edcbd-fb62-471c-b75b-f1a759956ebe,5c3edcbd-fb62-471c-b75b-f1a759956ebe,1,0,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,1,0,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,1,0,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1,0,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,1,0,2a12ce95-3214-4bd2-a0e6-c2af41875821,2a12ce95-3214-4bd2-a0e6-c2af41875821,1,0,bf05548c-babf-402b-b698-9a62e7c69add,bf05548c-babf-402b-b698-9a62e7c69add,1,0,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,1,0,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,1,0,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,1,0,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,1,0,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,1,0,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,1,0,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,1,0,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,1,0,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,1,0,ed4edc6f-048a-40d5-8f61-989895c95cf3,ed4edc6f-048a-40d5-8f61-989895c95cf3,1,0,73cc5fea-597f-4490-9c62-b175fdc38fd3,73cc5fea-597f-4490-9c62-b175fdc38fd3,1,0,c2049ace-3095-4dd7-9cc0-7721118451ad,c2049ace-3095-4dd7-9cc0-7721118451ad,1,0,9ea7a191-38bb-40cc-8025-d34a5ed17c7c,9ea7a191-38bb-40cc-8025-d34a5ed17c7c,1,0,dc17d8b6-d277-43eb-8823-71d440ae1e90,dc17d8b6-d277-43eb-8823-71d440ae1e90,1,0,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,1,0,15111bf5-5bf5-4486-aff0-20ded684b67f,15111bf5-5bf5-4486-aff0-20ded684b67f,1,0,2465986e-7519-4638-9f62-5f692bebeeac,2465986e-7519-4638-9f62-5f692bebeeac,1,0,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,1,0,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,1,0,022f99dd-e1b7-42a7-8141-a8c2e8628901,022f99dd-e1b7-42a7-8141-a8c2e8628901,1,0,cc770616-f6f6-4054-876c-f319b1f8c6cf,cc770616-f6f6-4054-876c-f319b1f8c6cf,1,0,3baffdec-a2cb-48c9-9c21-4fc469e81e3b,3baffdec-a2cb-48c9-9c21-4fc469e81e3b,1,0,046e6f4f-3d92-4b20-b19f-fca608fa0f11,046e6f4f-3d92-4b20-b19f-fca608fa0f11,1,0,74bea66f-15bf-48de-9ff9-f9c35a8bf5cc,74bea66f-15bf-48de-9ff9-f9c35a8bf5cc,1,0,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,1,0,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,1,0,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,1,0,6fe9a455-7fef-4a1b-8109-57eafc17e2b6,6fe9a455-7fef-4a1b-8109-57eafc17e2b6,1,0,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,1,0,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,1,0,2031ed38-6a8e-4ca7-aa97-449ee36ab7a3,2031ed38-6a8e-4ca7-aa97-449ee36ab7a3,1,0,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,1,0,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,1,0,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,1,0,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,1,0,7a0cdc94-9e53-4fcc-ac2f-97ad2ad939f5,7a0cdc94-9e53-4fcc-ac2f-97ad2ad939f5,1,0,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,1,0,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,1,0,db6679c4-a647-471a-9f90-40248eb18db9,db6679c4-a647-471a-9f90-40248eb18db9,1,0,455a1ca6-7212-43ac-b5a2-cf85dd2f9c14,455a1ca6-7212-43ac-b5a2-cf85dd2f9c14,1,0,e7c366f7-c8e3-4ffe-bc5e-ca8a4619ec11,e7c366f7-c8e3-4ffe-bc5e-ca8a4619ec11,1,0,2997e4da-d831-48e4-96e2-c29f9d077302,2997e4da-d831-48e4-96e2-c29f9d077302,1,0,30f59002-a23d-4eff-b84f-f280f11b220e,30f59002-a23d-4eff-b84f-f280f11b220e,1,0,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,1,0,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,1,0,14583452-805e-423d-be9a-e04683c7c46f,14583452-805e-423d-be9a-e04683c7c46f,1,0,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,1,0,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,1,0,d7376ea8-245a-4342-9a40-c729ca19f966,d7376ea8-245a-4342-9a40-c729ca19f966,1,0,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,1,0,4bf12710-aef2-43ec-b16f-9c6c9e8eb18d,4bf12710-aef2-43ec-b16f-9c6c9e8eb18d,1,0,b1e837ff-0edd-4525-b2e2-92cc7990e00e,b1e837ff-0edd-4525-b2e2-92cc7990e00e,1,0,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,1,0,037fd2f3-27f1-4d8f-a621-82fa5754e8c7,037fd2f3-27f1-4d8f-a621-82fa5754e8c7,1,0,3fc1e50e-b9da-45f7-8e06-57ef6951ca40,3fc1e50e-b9da-45f7-8e06-57ef6951ca40,1,0,66d67f47-ccbb-4d58-aceb-af876f480750,66d67f47-ccbb-4d58-aceb-af876f480750,1,0,71871ca9-095d-4bde-ac80-1371f578cd51,71871ca9-095d-4bde-ac80-1371f578cd51,1,0,6aa8c1d6-9956-4a98-9992-b119ba5ba1c7,6aa8c1d6-9956-4a98-9992-b119ba5ba1c7,1,0,cafbea88-86f0-4a44-98f4-70d1837da452,cafbea88-86f0-4a44-98f4-70d1837da452,1,0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,1,0,ceb286e9-4e7c-49fa-a695-424073e0dffc,ceb286e9-4e7c-49fa-a695-424073e0dffc,1,0,727689c3-c0d8-496f-a47b-4f3243ad8974,727689c3-c0d8-496f-a47b-4f3243ad8974,1,0,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,1,0,d1771aec-ba78-4b5d-861a-9ac6d8627dea,d1771aec-ba78-4b5d-861a-9ac6d8627dea,1,0,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,1,0,07288e13-583c-4caf-983a-76c5d2ebf66f,07288e13-583c-4caf-983a-76c5d2ebf66f,1,0,2522fce4-d121-482b-a39d-0c1a842d315e,2522fce4-d121-482b-a39d-0c1a842d315e,1,0,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,1,0,b8d7bdc9-2778-4f36-a0d9-c43fce15eb3c,b8d7bdc9-2778-4f36-a0d9-c43fce15eb3c,1,0,4bad7c64-131a-42cb-9be7-d61f14f456d0,4bad7c64-131a-42cb-9be7-d61f14f456d0,1,0,d46e141b-7a10-4d65-971f-3a35f2114017,d46e141b-7a10-4d65-971f-3a35f2114017,1,0,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,1,0,0f325868-167b-43d5-b17a-eadc606a8f79,0f325868-167b-43d5-b17a-eadc606a8f79,1,0,51ea38c1-3005-4f4b-b813-91c8e2717683,51ea38c1-3005-4f4b-b813-91c8e2717683,1,0,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,1,0,ba59393c-c499-4999-91d4-b9e34d94db0e,ba59393c-c499-4999-91d4-b9e34d94db0e,1,0,626da0dd-d75b-4779-be1f-9b71d2f2d4e1,626da0dd-d75b-4779-be1f-9b71d2f2d4e1,1,0,1d4b7f71-6c72-4f41-a2ed-1f2fe2122c04,1d4b7f71-6c72-4f41-a2ed-1f2fe2122c04,1,0,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,1,0,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,1,0,913743c3-9529-4c86-b056-93e954df7819,913743c3-9529-4c86-b056-93e954df7819,1,0,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,1,0,3b453f76-ab85-4c65-b008-7f8bf44c9631,3b453f76-ab85-4c65-b008-7f8bf44c9631,1,0,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,1,0,772e7011-0019-4edc-b673-b7151cf4fa6c,772e7011-0019-4edc-b673-b7151cf4fa6c,1,0,21ac47fa-12c2-43e2-9b57-afdf521d3485,21ac47fa-12c2-43e2-9b57-afdf521d3485,1,0,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,1,0,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,1,0,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,1,0,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,1,0,8d1c44d7-52f2-4089-9d77-2f03bf051455,8d1c44d7-52f2-4089-9d77-2f03bf051455,1,0,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,1,0,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,1,0,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,1,0,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,1,0,8e87da88-9fa8-4dd8-b904-622b763239f4,8e87da88-9fa8-4dd8-b904-622b763239f4,1,0,2a7f1ce3-2629-4860-886b-67c9f82eeb29,2a7f1ce3-2629-4860-886b-67c9f82eeb29,1,0,6b5720a8-0bcc-4196-934d-84db9d99ec27,6b5720a8-0bcc-4196-934d-84db9d99ec27,1,0,c0b3e3e9-20bc-42e1-a68f-646a958586d1,c0b3e3e9-20bc-42e1-a68f-646a958586d1,1,0,39496918-7d71-4960-ad8b-0028ae659266,39496918-7d71-4960-ad8b-0028ae659266,1,0,bdf2fd35-2000-45c2-9df6-65031ee0e4af,bdf2fd35-2000-45c2-9df6-65031ee0e4af,1,0,e91118e9-d054-41a1-bfe9-343179718f33,e91118e9-d054-41a1-bfe9-343179718f33,1,0,529cc5b5-835f-4e70-9232-a9649fdc7ae5,529cc5b5-835f-4e70-9232-a9649fdc7ae5,1,0,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,1,0,4875a235-bcc8-47eb-83e3-a66f0f690b97,4875a235-bcc8-47eb-83e3-a66f0f690b97,1,0,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,1,0,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,1,0,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,1,0,cce593b4-6f7c-466d-892c-7fe89fcddf5d,cce593b4-6f7c-466d-892c-7fe89fcddf5d,1,0,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,1,0,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,1,0,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,1,0,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,1,0,330a176f-5b61-41f5-84bb-b99a9439c2a0,330a176f-5b61-41f5-84bb-b99a9439c2a0,1,0,042245ef-3a30-46fb-b3e3-6599d5426cbd,042245ef-3a30-46fb-b3e3-6599d5426cbd,1,0,d1ba8620-c0c9-4281-afa6-9c9962c338d3,d1ba8620-c0c9-4281-afa6-9c9962c338d3,1,0,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,1,0,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,1,0,4bdc1a18-f184-4f95-bda4-8f5c4b7c3aa1,4bdc1a18-f184-4f95-bda4-8f5c4b7c3aa1,1,0,60200fc6-252f-4eaf-88a2-d2cefa25061f,60200fc6-252f-4eaf-88a2-d2cefa25061f,1,0,0798a128-2f87-4173-99ae-115bb8b3a3b8,0798a128-2f87-4173-99ae-115bb8b3a3b8,1,0,697bd1de-bbef-4362-aa39-71f6008f4bd7,697bd1de-bbef-4362-aa39-71f6008f4bd7,1,0,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,1,0,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,1,0,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,1,0,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,1,0,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,1,0,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,1,0,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,1,0,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,1,0,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,1,0,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,1,0,62629f36-5d1e-460f-9ac5-983607c40cb2,62629f36-5d1e-460f-9ac5-983607c40cb2,1,0,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,1,0,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,1,0,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,1,0,4b07cdb0-c32e-4751-b317-bee62b43f128,4b07cdb0-c32e-4751-b317-bee62b43f128,1,0,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,1,0,32cab8f2-cebf-4508-9396-eb41f4e8ba22,32cab8f2-cebf-4508-9396-eb41f4e8ba22,1,0,62ef3558-5ad3-44ab-8578-1acbbfa54135,62ef3558-5ad3-44ab-8578-1acbbfa54135,1,0,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,1,0,c3572d8d-46ff-40bb-800c-2c07f884c219,c3572d8d-46ff-40bb-800c-2c07f884c219,1,0,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,1,0,d1034240-ab06-413a-9828-a5c7dc879680,d1034240-ab06-413a-9828-a5c7dc879680,1,0,b77edd78-2fad-4926-a74f-02f2135356e6,b77edd78-2fad-4926-a74f-02f2135356e6,1,0,57b0b6b2-bbdd-48d2-a52e-e3495e00860e,57b0b6b2-bbdd-48d2-a52e-e3495e00860e,1,0,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,1,0,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,1,0,4f4916dc-b6fe-4f99-9220-bd7c076408ae,4f4916dc-b6fe-4f99-9220-bd7c076408ae,1,0,857daa3a-0058-4464-9173-13a2926812e2,857daa3a-0058-4464-9173-13a2926812e2,1,0,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,1,0,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,1,0,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,1,0,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,1,0,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,1,0,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,1,0,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,1,0,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,1,0,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,1,0,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,1,0,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,1,0,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,1,0,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,1,0,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,1,0,2cea7641-6f1d-4bc7-9d38-8d99f196e0f5,2cea7641-6f1d-4bc7-9d38-8d99f196e0f5,1,0,0093680b-c8bc-472d-8b0d-2e6565fc6c22,0093680b-c8bc-472d-8b0d-2e6565fc6c22,1,0,7fa6a20a-26e2-41ad-be66-a43b50d0bbcd,7fa6a20a-26e2-41ad-be66-a43b50d0bbcd,1,0,5f4456d6-ff0c-425e-9603-c099492d7a6f,5f4456d6-ff0c-425e-9603-c099492d7a6f,1,0,af7c417e-5c10-4146-bde1-40db86c5806f,af7c417e-5c10-4146-bde1-40db86c5806f,1,0,ab5b0155-a4b1-47a1-ad87-12365dde20c1,ab5b0155-a4b1-47a1-ad87-12365dde20c1,1,0,90f3f3c5-4ca9-4c8f-9b73-f67760a6d2f0,90f3f3c5-4ca9-4c8f-9b73-f67760a6d2f0,1,0,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,1,0,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,1,0,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,1,0,6f21c34c-26aa-493d-aa08-2d4366b4064a,6f21c34c-26aa-493d-aa08-2d4366b4064a,1,0,0f55650a-2422-42a9-8258-61df4c17f1ef,0f55650a-2422-42a9-8258-61df4c17f1ef,1,0,2ef4ea1d-fd86-4ef3-a7e0-73abba89474d,2ef4ea1d-fd86-4ef3-a7e0-73abba89474d,1,0,3eaece9d-c9be-4b0b-a6f6-a3932274b806,3eaece9d-c9be-4b0b-a6f6-a3932274b806,1,0,5d9427ec-981d-4fb5-878b-8dba0d3a5536,5d9427ec-981d-4fb5-878b-8dba0d3a5536,1,0,c5dd6184-96e5-4abc-8c1e-5270e6547ee5,c5dd6184-96e5-4abc-8c1e-5270e6547ee5,1,0,a0047712-5769-495d-97af-20d06751a5b4,a0047712-5769-495d-97af-20d06751a5b4,1,0,e729c3c6-16e5-405b-99b1-a88022300c6d,e729c3c6-16e5-405b-99b1-a88022300c6d,1,0,9c089520-8233-42f6-8eee-9839ac708c6f,9c089520-8233-42f6-8eee-9839ac708c6f,1,0,24f2cfc7-6dc0-400c-8eb2-106ca2ea7034,24f2cfc7-6dc0-400c-8eb2-106ca2ea7034,1,0,5f3ffa44-49be-4da5-ab2a-a35c9bd76dee,5f3ffa44-49be-4da5-ab2a-a35c9bd76dee,1,0,89055896-49dd-4cfd-ab78-8ac3698e12d5,89055896-49dd-4cfd-ab78-8ac3698e12d5,1,0,277ca641-e869-4fcd-8a79-54c451efbbdd,277ca641-e869-4fcd-8a79-54c451efbbdd,1,0,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,1,0,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,1,0,672c4741-6d7b-4d3e-baa7-389bef0625d7,672c4741-6d7b-4d3e-baa7-389bef0625d7,1,0,04398ec0-1c13-43f8-8f5d-7b7619592a4d,04398ec0-1c13-43f8-8f5d-7b7619592a4d,1,0,ce463861-92df-47f2-bd0f-4a2dbf72aacc,ce463861-92df-47f2-bd0f-4a2dbf72aacc,1,0,1220ce92-b964-4fb8-9db0-b4c8c6bdbdf7,1220ce92-b964-4fb8-9db0-b4c8c6bdbdf7,1,0,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,1,0,1487d68c-7a2f-48cf-8c80-4074072ed52c,1487d68c-7a2f-48cf-8c80-4074072ed52c,1,0,57502594-74dd-45fe-9234-9a477d5b9741,57502594-74dd-45fe-9234-9a477d5b9741,1,0,6ed8c74c-6b6e-4ed1-95ff-a733f618b213,6ed8c74c-6b6e-4ed1-95ff-a733f618b213,1,0,d97c6536-fd62-4c9a-b83e-490a29a0721b,d97c6536-fd62-4c9a-b83e-490a29a0721b,1,0,93ec2af7-2ca8-4133-8cc0-31073f9bf216,93ec2af7-2ca8-4133-8cc0-31073f9bf216,1,0,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,1,0,681b27ac-69a5-4c5b-b2c7-285330fe5a4a,681b27ac-69a5-4c5b-b2c7-285330fe5a4a,1,0,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,1,0,0753701c-016e-4385-85c0-a485ca50efdc,0753701c-016e-4385-85c0-a485ca50efdc,1,0,c3a6b470-37d5-4499-badb-33b73b52e346,c3a6b470-37d5-4499-badb-33b73b52e346,1,0,24415097-bde5-447a-ac74-bd9bf0eb19fc,24415097-bde5-447a-ac74-bd9bf0eb19fc,1,0,a29d42d6-a448-4940-804d-d1be31da000d,a29d42d6-a448-4940-804d-d1be31da000d,1,0,dd780b76-2a10-40b5-9bcd-7bc8c9b06651,dd780b76-2a10-40b5-9bcd-7bc8c9b06651,1,0,8be6c4a3-d75b-405d-8d98-9baf6f20abb2,8be6c4a3-d75b-405d-8d98-9baf6f20abb2,1,0,7cbd82e3-4bf8-46ab-8504-4bf30523fa2a,7cbd82e3-4bf8-46ab-8504-4bf30523fa2a,1,0,c4b01e52-4136-460d-bd82-970177f1e256,c4b01e52-4136-460d-bd82-970177f1e256,1,0,9533784b-311a-4dbe-b73e-7348aabd387e,9533784b-311a-4dbe-b73e-7348aabd387e,1,0,56bdc69a-d8e8-4da6-a3a5-41ef32bbb626,56bdc69a-d8e8-4da6-a3a5-41ef32bbb626,1,0,c770cd75-f370-4042-9a5a-82b2fc1853cc,c770cd75-f370-4042-9a5a-82b2fc1853cc,1,0,6ee215f9-20ab-4c48-b2c2-cb1869e8906c,6ee215f9-20ab-4c48-b2c2-cb1869e8906c,1,0,b74af9c1-bc44-40ce-b093-d1f548a1742f,b74af9c1-bc44-40ce-b093-d1f548a1742f,1,0,1b401a14-4581-4f24-aaca-5f204f8fcf8b,1b401a14-4581-4f24-aaca-5f204f8fcf8b,1,0,267f7ee6-7b02-4e48-aa1e-145f586edd87,267f7ee6-7b02-4e48-aa1e-145f586edd87,1,0,e1e8ea42-6886-430a-bc59-249259112e6a,e1e8ea42-6886-430a-bc59-249259112e6a,1,0,1e27f3cd-1c9e-4f9f-b2ff-88fb1da37e11,1e27f3cd-1c9e-4f9f-b2ff-88fb1da37e11,1,0,3dcf815c-5c9a-4a78-a42e-7c9ff6faaeb8,3dcf815c-5c9a-4a78-a42e-7c9ff6faaeb8,1,0,1379f050-4f1c-4c41-993e-f7efc71325fb,1379f050-4f1c-4c41-993e-f7efc71325fb,1,0,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,1,0,753c70c1-af12-4ec2-ac12-dd1ce33f729f,753c70c1-af12-4ec2-ac12-dd1ce33f729f,1,0,6c07ddfb-8823-4953-9905-9550b847dc3f,6c07ddfb-8823-4953-9905-9550b847dc3f,1,0,2362a8d5-dca2-4527-acc0-63782377f28a,2362a8d5-dca2-4527-acc0-63782377f28a,1,0,dfd6d85c-a734-4458-83b0-87b5949f9c68,dfd6d85c-a734-4458-83b0-87b5949f9c68,1,0,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,1,0,79b6ecf5-8a6b-44a4-9587-5f8764463228,79b6ecf5-8a6b-44a4-9587-5f8764463228,1,0,cd49148c-e385-4b75-a758-a93196e73dba,cd49148c-e385-4b75-a758-a93196e73dba,1,0,ece15c4e-4a4b-421b-9f00-10f698da476b,ece15c4e-4a4b-421b-9f00-10f698da476b,1,0,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,1,0,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,1,0,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,1,0,999df397-a730-4110-b253-59fd5583dab9,999df397-a730-4110-b253-59fd5583dab9,1,0,7f7bf652-0375-4f49-94f1-ebe6a00e4e23,7f7bf652-0375-4f49-94f1-ebe6a00e4e23,1,0,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,1,0,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,1,0,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,1,0,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,1,0,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,1,0,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,1,0,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,1,0,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,1,0,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,1,0,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,1,0,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,1,0,9883862f-c0eb-41fe-9374-05c6d72878bc,9883862f-c0eb-41fe-9374-05c6d72878bc,1,0,8ccd9be8-ef26-49b9-8cee-03ae4e500386,8ccd9be8-ef26-49b9-8cee-03ae4e500386,1,0,ddca925c-fdcd-40ce-a504-4fca1758de3f,ddca925c-fdcd-40ce-a504-4fca1758de3f,1,0,9bd92328-8c9c-4882-8956-a1fccf555a64,9bd92328-8c9c-4882-8956-a1fccf555a64,1,0,cafc6b5b-a76a-4b1b-9592-ba440f7bf34f,cafc6b5b-a76a-4b1b-9592-ba440f7bf34f,1,0,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,1,0,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,1,0,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,1,0,4f9b6c01-0919-41ba-91dc-49497d0fecf7,4f9b6c01-0919-41ba-91dc-49497d0fecf7,1,0,ea07cd11-418c-4e4f-be9f-c160ee8a64e8,ea07cd11-418c-4e4f-be9f-c160ee8a64e8,1,0,5efc4bc4-b711-4620-8d2e-9d947c6cc141,5efc4bc4-b711-4620-8d2e-9d947c6cc141,1,0,1d8d0eed-caaa-494c-aeea-0df5846fc97a,1d8d0eed-caaa-494c-aeea-0df5846fc97a,1,0,1328947f-91c3-43f4-a11e-f34893d987b3,1328947f-91c3-43f4-a11e-f34893d987b3,1,0,6de9dab4-ee34-4584-a2e7-7a29c86794b0,6de9dab4-ee34-4584-a2e7-7a29c86794b0,1,0,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,1,0,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,1,0,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,1,0,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,1,0,aa8c4a71-3276-4b83-8be2-3528129e58b3,aa8c4a71-3276-4b83-8be2-3528129e58b3,1,0,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,1,0,528d3535-f20f-4d3c-8b7d-482d4d626eb0,528d3535-f20f-4d3c-8b7d-482d4d626eb0,1,0,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,1,0,e9a2441e-faf9-4158-acc7-b1a6178ae0f3,e9a2441e-faf9-4158-acc7-b1a6178ae0f3,1,0,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,1,0,871a75ef-1987-4695-9916-07439aeedc53,871a75ef-1987-4695-9916-07439aeedc53,1,0,ba64deac-5826-43f2-b88a-2e180da87059,ba64deac-5826-43f2-b88a-2e180da87059,1,0,53ee3eb6-d2d1-4fb3-8a78-1fa4543850a1,53ee3eb6-d2d1-4fb3-8a78-1fa4543850a1,1,0,0072986b-0463-4a39-9851-f9adeda99716,0072986b-0463-4a39-9851-f9adeda99716,1,0,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,1,0,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,1,0,0d4a26fb-7176-43f2-8767-d3e227c7306a,0d4a26fb-7176-43f2-8767-d3e227c7306a,1,0,77de81f0-97c5-4751-9f38-f5785c7c45e0,77de81f0-97c5-4751-9f38-f5785c7c45e0,1,0,933cbafc-5667-4a91-8b1d-dca3d7662522,933cbafc-5667-4a91-8b1d-dca3d7662522,1,0,59acaca9-ed29-4927-bee6-287c91934690,59acaca9-ed29-4927-bee6-287c91934690,1,0,9136814a-89e6-4b0f-8ca1-73e4ef29f534,9136814a-89e6-4b0f-8ca1-73e4ef29f534,1,0,d7e4795a-3431-4f7d-9699-4241611adcf0,d7e4795a-3431-4f7d-9699-4241611adcf0,1,0,ea0a498a-a1cb-4f28-88cb-0bc62971172b,ea0a498a-a1cb-4f28-88cb-0bc62971172b,1,0,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,1,0,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,1,0,b6e98aee-4936-491d-8c67-8490e1af2e34,b6e98aee-4936-491d-8c67-8490e1af2e34,1,0,0732ab1c-b49a-49ed-8667-65f4427cc301,0732ab1c-b49a-49ed-8667-65f4427cc301,1,0,b292eb46-df87-43c0-9a37-93c5a22af252,b292eb46-df87-43c0-9a37-93c5a22af252,1,0,0943dd00-1653-4760-a9fe-ebc083ffa660,0943dd00-1653-4760-a9fe-ebc083ffa660,1,0,7406da96-2e16-42a0-9522-d76547708eca,7406da96-2e16-42a0-9522-d76547708eca,1,0,ede6a379-b0e5-4b8d-a454-779c0fd8b0b3,ede6a379-b0e5-4b8d-a454-779c0fd8b0b3,1,0,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,1,0,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,1,0,f93c9a7f-0249-421e-b3d0-55f02d130017,f93c9a7f-0249-421e-b3d0-55f02d130017,1,0,062c507a-9d35-4eb5-bb91-d106a535a503,062c507a-9d35-4eb5-bb91-d106a535a503,1,0,ea1284f2-33f1-4e3d-b009-1ffad3aaf300,ea1284f2-33f1-4e3d-b009-1ffad3aaf300,1,0,bd727741-ba99-484d-9d7d-2c2ad7ddd1a5,bd727741-ba99-484d-9d7d-2c2ad7ddd1a5,1,0,90327957-5bdc-4949-883c-9eb50f527b3e,90327957-5bdc-4949-883c-9eb50f527b3e,1,0,031980f5-60e8-426a-9907-3afff75a6b05,031980f5-60e8-426a-9907-3afff75a6b05,1,0,1a26f2d5-2465-484c-9311-12d9b3b92ae3,1a26f2d5-2465-484c-9311-12d9b3b92ae3,1,0,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,1,0,64837ad8-3055-4da3-a39c-0e7db38b6084,64837ad8-3055-4da3-a39c-0e7db38b6084,1,0,695cda1d-b816-4200-9a71-490078a9faa7,695cda1d-b816-4200-9a71-490078a9faa7,1,0,75fc5bea-e239-4de1-ad68-6454876e4b9f,75fc5bea-e239-4de1-ad68-6454876e4b9f,1,0,31ba33d4-5941-4b11-ae99-b15188bfef76,31ba33d4-5941-4b11-ae99-b15188bfef76,1,0,0744e8be-747c-47bb-85f3-58b6f6f9b786,0744e8be-747c-47bb-85f3-58b6f6f9b786,1,0,7142ae5b-ec7b-4a69-9c26-f51e05a4c270,7142ae5b-ec7b-4a69-9c26-f51e05a4c270,1,0,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,1,0,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,1,0,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,1,0,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,1,0,f1e600b0-55ed-4611-b147-f04d5621796b,f1e600b0-55ed-4611-b147-f04d5621796b,1,0,e3b84128-95e1-45df-84db-5e1791779543,e3b84128-95e1-45df-84db-5e1791779543,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,e9d95895-8708-4035-89ad-72573b870491,e9d95895-8708-4035-89ad-72573b870491,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f0152598-ffa3-4eb7-811f-906e569373e6,f0152598-ffa3-4eb7-811f-906e569373e6,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,312118ff-a2a4-479c-964a-5250cca0cd20,312118ff-a2a4-479c-964a-5250cca0cd20,1,0,f8d32d21-ea2f-42bb-a785-9bd3cf754cd9,f8d32d21-ea2f-42bb-a785-9bd3cf754cd9,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,caf8f0e8-7a2c-498b-9b74-ed6b87cce670,caf8f0e8-7a2c-498b-9b74-ed6b87cce670,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,89318397-b3a6-4468-985b-ed5cb8ab5cdb,89318397-b3a6-4468-985b-ed5cb8ab5cdb,1,0,5e5b0ad7-ef73-4a73-baf5-360a9244a1cc,5e5b0ad7-ef73-4a73-baf5-360a9244a1cc,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,4436b2cf-2d71-401f-99fd-012ff0c91fbd,4436b2cf-2d71-401f-99fd-012ff0c91fbd,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,5396be45-d7c0-43df-aed4-cad062a02b11,5396be45-d7c0-43df-aed4-cad062a02b11,1,0,017e3da8-e48e-488b-9bbf-4fef1a4f3417,017e3da8-e48e-488b-9bbf-4fef1a4f3417,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,aebf163d-d8e8-492a-a973-8cb51982d475,aebf163d-d8e8-492a-a973-8cb51982d475,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,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,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d9e98c14-9b07-406b-92c8-bec76165e028,d9e98c14-9b07-406b-92c8-bec76165e028,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,7abb55d2-eac6-44a0-9ebc-fa26a7f0c028,7abb55d2-eac6-44a0-9ebc-fa26a7f0c028,1,0,68e207e7-8c20-426d-8a0e-c3dd4d683631,68e207e7-8c20-426d-8a0e-c3dd4d683631,1,0,6d7fa2f9-7ca4-4ad6-b94b-8267768a0f04,6d7fa2f9-7ca4-4ad6-b94b-8267768a0f04,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,1e015740-5b45-4729-9732-57359a7c602f,1e015740-5b45-4729-9732-57359a7c602f,1,0,db82191f-77bd-44da-8b33-86f01018e25a,db82191f-77bd-44da-8b33-86f01018e25a,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,6c138ffd-057f-4f7d-af4d-1b1a589a9057,6c138ffd-057f-4f7d-af4d-1b1a589a9057,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,69530795-5a90-47b0-ae8d-a44b420b51f6,69530795-5a90-47b0-ae8d-a44b420b51f6,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,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,1,0,d85ba2d1-63e9-4680-bd88-6c0c4dba5d0f,d85ba2d1-63e9-4680-bd88-6c0c4dba5d0f,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,cd74d617-8ebe-4a7d-b011-38c98d856d8c,cd74d617-8ebe-4a7d-b011-38c98d856d8c,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,f9a5bd40-7c56-4ced-bddb-a66c1fc31b81,f9a5bd40-7c56-4ced-bddb-a66c1fc31b81,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,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,5ea4412e-0ce0-4176-917b-37817ed788e1,5ea4412e-0ce0-4176-917b-37817ed788e1,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,8de2c020-0ebe-4374-93d7-d2e19ed82470,8de2c020-0ebe-4374-93d7-d2e19ed82470,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,1a3eff9b-6598-4e11-9b8f-81249c53abec,1a3eff9b-6598-4e11-9b8f-81249c53abec,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,33b12dd8-7a86-4a51-bd3d-4911ec1ffde4,33b12dd8-7a86-4a51-bd3d-4911ec1ffde4,1,0,1e020429-ac68-46f4-b34c-c2c4a2b494f6,1e020429-ac68-46f4-b34c-c2c4a2b494f6,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,789a2027-8601-434c-bf47-37696a3966ad,789a2027-8601-434c-bf47-37696a3966ad,1,0,f71eceb3-ef2e-4e6c-bf9c-e7e7d42c1c7c,f71eceb3-ef2e-4e6c-bf9c-e7e7d42c1c7c,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,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,4c3085e1-2f86-4af4-a392-ab45e30a7152,4c3085e1-2f86-4af4-a392-ab45e30a7152,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,1,0,89cc9ae4-e933-4f4a-849f-48ef67b75819,89cc9ae4-e933-4f4a-849f-48ef67b75819,1,0,36e096be-ee28-437a-b8f2-c1e274c150e3,36e096be-ee28-437a-b8f2-c1e274c150e3,1,0,160e9608-7301-4572-af02-6a7cceca1560,160e9608-7301-4572-af02-6a7cceca1560,1,0,4a70416b-6598-4239-be70-2c0c8255388a,4a70416b-6598-4239-be70-2c0c8255388a,1,0,f6b69c2b-e32a-477f-9128-b61d8237290e,f6b69c2b-e32a-477f-9128-b61d8237290e,1,0,e2779397-46ed-4d95-8529-45896f9567d2,e2779397-46ed-4d95-8529-45896f9567d2,1,0,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,1,0,d05bbd02-9db3-4830-be9d-7080f3506e01,d05bbd02-9db3-4830-be9d-7080f3506e01,1,0,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,1,0,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1,0,7e3283df-05a6-4dc5-a786-056c71bdbf6f,7e3283df-05a6-4dc5-a786-056c71bdbf6f,1,0,c6af8b0f-3767-4198-88e2-f5763cb0294a,c6af8b0f-3767-4198-88e2-f5763cb0294a,1,0,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,1,0,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,1,0,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,1,0,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,1,0,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,1,0,ac847dc9-e222-45cf-af4a-6fa863c919a8,ac847dc9-e222-45cf-af4a-6fa863c919a8,1,0,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,1,0,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,1,0,13fcf1e8-730e-436f-b316-6bcb8301f894,13fcf1e8-730e-436f-b316-6bcb8301f894,1,0,fa548f02-82e0-4897-89e8-0618ebf16919,fa548f02-82e0-4897-89e8-0618ebf16919,1,0,8c28a5b0-517f-48fe-9bde-5e611c319413,8c28a5b0-517f-48fe-9bde-5e611c319413,1,0,904e1209-91d8-49b1-b291-364ef728cbbf,904e1209-91d8-49b1-b291-364ef728cbbf,1,0,4a0d7cd7-8e43-4a1f-88b8-ffc376b38f7c,4a0d7cd7-8e43-4a1f-88b8-ffc376b38f7c,1,0,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1,0,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,1,0,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,1,0,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,1,0,23314bcd-2dd4-43f1-9fdb-ae182a48c886,23314bcd-2dd4-43f1-9fdb-ae182a48c886,1,0,c5f86fa3-4a36-4e22-8b57-7088dd250cd3,c5f86fa3-4a36-4e22-8b57-7088dd250cd3,1,0,9440a132-366f-4fc9-bd72-2544ba2b072a,9440a132-366f-4fc9-bd72-2544ba2b072a,1,0,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,1,0,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,1,0,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,1,0,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,1,0,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,1,0,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,1,0,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,1,0,cadb54f0-dcff-4f96-983e-a309fd72f330,cadb54f0-dcff-4f96-983e-a309fd72f330,1,0,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,1,0,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,1,0,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,1,0,e6af9db4-b93f-422e-846c-e6c5fd33f992,e6af9db4-b93f-422e-846c-e6c5fd33f992,1,0,2895ac1f-5f15-422d-9d90-2df87255a92a,2895ac1f-5f15-422d-9d90-2df87255a92a,1,0,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,1,0,ed5ff5b0-f980-4b9a-9299-eef68e3b42d5,ed5ff5b0-f980-4b9a-9299-eef68e3b42d5,1,0,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,1,0,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,1,0,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,1,0,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,1,0,42107b14-9373-418a-a41d-35c87434c51a,42107b14-9373-418a-a41d-35c87434c51a,1,0,24d8ce8d-e94c-4168-abad-d0ce5e6cbf1b,24d8ce8d-e94c-4168-abad-d0ce5e6cbf1b,1,0,8786575a-eab6-46bf-be3a-167e2d5b41dd,8786575a-eab6-46bf-be3a-167e2d5b41dd,1,0,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,1,0,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,1,0,9ff1c73e-71be-4ea6-97fb-e710d995ee62,9ff1c73e-71be-4ea6-97fb-e710d995ee62,1,0,50f7effb-e051-49dd-8b56-0771dda350cc,50f7effb-e051-49dd-8b56-0771dda350cc,1,0,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,1,0,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,1,0,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,1,0,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,1,0,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,1,0,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,1,0,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,1,0,9d669d30-a0af-4095-852a-96b4224ee933,9d669d30-a0af-4095-852a-96b4224ee933,1,0,590aba18-7d56-48e3-9454-5f2882a32f80,590aba18-7d56-48e3-9454-5f2882a32f80,1,0,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,1,0,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,1,0,18363a37-28b0-488b-a7d6-54d3596d2a6d,18363a37-28b0-488b-a7d6-54d3596d2a6d,1,0,e5f401b5-4672-4529-a8dd-6d819f3f269c,e5f401b5-4672-4529-a8dd-6d819f3f269c,1,0,126d5d78-a2b0-4c16-b429-bf8d251280e7,126d5d78-a2b0-4c16-b429-bf8d251280e7,1,0,f8f96dce-913c-4858-bcb7-dcfe3dc2f72e,f8f96dce-913c-4858-bcb7-dcfe3dc2f72e,1,0,70d93c88-c9e9-4b8e-b8f3-ef07c665ab5d,70d93c88-c9e9-4b8e-b8f3-ef07c665ab5d,1,0,12443114-1931-4eb7-968a-7dbe166b7298,12443114-1931-4eb7-968a-7dbe166b7298,1,0,0080c29d-ec54-43a8-aab8-c67e0279b6b7,0080c29d-ec54-43a8-aab8-c67e0279b6b7,1,0,a0271f6e-dc70-4dfe-a395-203e8a89f933,a0271f6e-dc70-4dfe-a395-203e8a89f933,1,0,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,1,0,5e52dfe6-5a98-4a32-9429-5f44bf442367,5e52dfe6-5a98-4a32-9429-5f44bf442367,1,0,c0e01a15-6937-4331-bdd7-2f5a68d0d3dd,c0e01a15-6937-4331-bdd7-2f5a68d0d3dd,1,0,d065c02e-9991-468a-ae32-b8c29d078d03,d065c02e-9991-468a-ae32-b8c29d078d03,1,0,c509683e-eb13-4e1a-91ed-cd6982ec5001,c509683e-eb13-4e1a-91ed-cd6982ec5001,1,0,88bf6f58-7943-42c4-bc0f-56b991590026,88bf6f58-7943-42c4-bc0f-56b991590026,1,0,9aa0a0cb-9547-4868-9495-b00f3ecd2b3a,9aa0a0cb-9547-4868-9495-b00f3ecd2b3a,1,0,a9e31d90-fe65-47c3-8109-6e1eae862f53,a9e31d90-fe65-47c3-8109-6e1eae862f53,1,0,68500931-89e0-491e-aba8-b013c9e6f8c3,68500931-89e0-491e-aba8-b013c9e6f8c3,1,0,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,1,0,e678bb94-3cb1-4706-8e76-4fada4d5036c,e678bb94-3cb1-4706-8e76-4fada4d5036c,1,0,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,1,0,dc1d0f97-e2f3-4e1d-b21c-411b46e39848,dc1d0f97-e2f3-4e1d-b21c-411b46e39848,1,0,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,1,0,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,1,0,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,1,0,f987ca28-545b-4540-9e36-b0daa67dc3cb,f987ca28-545b-4540-9e36-b0daa67dc3cb,1,0,70f156d8-9cb4-442d-a36b-7a43d03bcd12,70f156d8-9cb4-442d-a36b-7a43d03bcd12,1,0,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,1,0,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,1,0,f0a6de82-45ab-4153-bccf-df82fc960aa1,f0a6de82-45ab-4153-bccf-df82fc960aa1,1,0,77adf47b-6015-46fc-9e29-f1c025ea0d81,77adf47b-6015-46fc-9e29-f1c025ea0d81,1,0,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,1,0,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,1,0,7ea3206a-2a16-460d-ad6d-849103f50bdb,7ea3206a-2a16-460d-ad6d-849103f50bdb,1,0,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,1,0,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,1,0,10302ca9-850c-4561-a774-d099c20b1919,10302ca9-850c-4561-a774-d099c20b1919,1,0,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,1,0,d693bfcf-e117-445b-b0e1-d895bc5227c4,d693bfcf-e117-445b-b0e1-d895bc5227c4,1,0,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,1,0,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,1,0,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,1,0,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,1,0,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,1,0,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,1,0,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0508e7ab-3dd9-42b4-9542-089ce0656bbb,1,0,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,1,0,17df1591-61b0-4204-8379-8d1f58445968,17df1591-61b0-4204-8379-8d1f58445968,1,0,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,1,0,fd5e72f7-3078-48eb-b01b-1800ffbd86d3,fd5e72f7-3078-48eb-b01b-1800ffbd86d3,1,0,e83ad33d-27df-4181-afd2-b7f416e6e705,e83ad33d-27df-4181-afd2-b7f416e6e705,1,0,ddeec7f4-8bd3-40af-bcac-00d18c0e6d6a,ddeec7f4-8bd3-40af-bcac-00d18c0e6d6a,1,0,f0438b0a-7916-4de4-a3a8-d43407c3295f,f0438b0a-7916-4de4-a3a8-d43407c3295f,1,0,3309648c-aae6-4684-ae8d-7ed636bc3468,3309648c-aae6-4684-ae8d-7ed636bc3468,1,0,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,1,0,f41e5a5b-394b-423a-bee5-ed4d1da0be71,f41e5a5b-394b-423a-bee5-ed4d1da0be71,1,0,23db175f-ddfb-4af7-9c0c-232b6adb7daf,23db175f-ddfb-4af7-9c0c-232b6adb7daf,1,0,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,1,0,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,1,0,4e309f26-35e8-49d9-bbd1-c7884e666dca,4e309f26-35e8-49d9-bbd1-c7884e666dca,1,0,84f05fe4-51d3-49a8-83e7-1cae2028147e,84f05fe4-51d3-49a8-83e7-1cae2028147e,1,0,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,1,0,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,1,0,c382ee3a-d0a8-4ed8-ac88-5558b631f448,c382ee3a-d0a8-4ed8-ac88-5558b631f448,1,0,3916ddbd-9023-42a4-849e-9cda6e591408,3916ddbd-9023-42a4-849e-9cda6e591408,1,0,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,1,0,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,1,0,8e36227c-c0aa-43c4-93ad-e78701248fb1,8e36227c-c0aa-43c4-93ad-e78701248fb1,1,0,f135b60e-6d28-4ba1-acd7-76090f14855d,f135b60e-6d28-4ba1-acd7-76090f14855d,1,0,5b105084-c4ba-4ff6-9196-8b3e3a9991e2,5b105084-c4ba-4ff6-9196-8b3e3a9991e2,1,0,f78ffd16-5bd4-421a-99af-9cf5f126d960,f78ffd16-5bd4-421a-99af-9cf5f126d960,1,0,2bd23dd2-8107-410f-8137-3d022546594b,2bd23dd2-8107-410f-8137-3d022546594b,1,0,3f09badb-70bd-4996-822f-2e2e9524f09d,3f09badb-70bd-4996-822f-2e2e9524f09d,1,0,aca89232-c531-47ca-a82e-e7bfadd56674,aca89232-c531-47ca-a82e-e7bfadd56674,1,0,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,1,0,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,1,0,52b45b3d-b01b-4aac-8a1e-e256957c39c3,52b45b3d-b01b-4aac-8a1e-e256957c39c3,1,0,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,1,0,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,1,0,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,1,0,a4878c33-f156-44cc-b114-5670403075eb,a4878c33-f156-44cc-b114-5670403075eb,1,0,0f1f8bc8-73ce-4384-9496-9bc2d0e212be,0f1f8bc8-73ce-4384-9496-9bc2d0e212be,1,0,695ad525-d1ba-42fb-adc1-6c44ac433c69,695ad525-d1ba-42fb-adc1-6c44ac433c69,1,0,026dadd4-a698-4d56-9b72-7ad9f224e502,026dadd4-a698-4d56-9b72-7ad9f224e502,1,0,d0b49fd9-4054-409f-97a0-a0811ba6c1ab,d0b49fd9-4054-409f-97a0-a0811ba6c1ab,1,0,c7130560-3953-496f-b1d0-cae676fcb5a9,c7130560-3953-496f-b1d0-cae676fcb5a9,1,0,b7d5c226-a787-45e5-b46b-c51b145fcf6a,b7d5c226-a787-45e5-b46b-c51b145fcf6a,1,0,8ca63a1d-4593-4f52-8b5e-4feb9f8487ca,8ca63a1d-4593-4f52-8b5e-4feb9f8487ca,1,0,1e4cc0d6-6e5e-4d16-ba44-060912ec292f,1e4cc0d6-6e5e-4d16-ba44-060912ec292f,1,0,e9311a22-56b5-4607-8eaa-52382ed040c3,e9311a22-56b5-4607-8eaa-52382ed040c3,1,0,dc7b8596-b2c0-415f-95d9-c0aaa96c5675,dc7b8596-b2c0-415f-95d9-c0aaa96c5675,1,0,87e6e315-01e0-41eb-8373-0a60635f2f7a,87e6e315-01e0-41eb-8373-0a60635f2f7a,1,0,9b77e99b-b1d3-4368-a671-59e0ebba3f0e,9b77e99b-b1d3-4368-a671-59e0ebba3f0e,1,0,ad847998-6e50-4160-81fc-3b58ad68f202,ad847998-6e50-4160-81fc-3b58ad68f202,1,0,b2b98bcf-41da-4643-a6dc-39e5379b99e5,b2b98bcf-41da-4643-a6dc-39e5379b99e5,1,0,fdd9fb90-f5f0-4c08-9341-4374403bc950,fdd9fb90-f5f0-4c08-9341-4374403bc950,1,0,0e2d814a-cc9d-4f91-910d-bda54779e298,0e2d814a-cc9d-4f91-910d-bda54779e298,1,0,8fdfef8d-502e-4d27-a539-e833048fa1eb,8fdfef8d-502e-4d27-a539-e833048fa1eb,1,0,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,1,0,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,1,0,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,1,0,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,1,0,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,1,0,0b303d25-e141-431f-828c-1778d3c247f6,0b303d25-e141-431f-828c-1778d3c247f6,1,0,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,1,0,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,1,0,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,1,0,976533bf-f162-42a1-a47e-6d681ee67b82,976533bf-f162-42a1-a47e-6d681ee67b82,1,0,19bc0dd8-9e6b-4855-bc42-b4e98443163f,19bc0dd8-9e6b-4855-bc42-b4e98443163f,1,0,a61e10af-eaba-4e7a-a641-65d77453a559,a61e10af-eaba-4e7a-a641-65d77453a559,1,0,edf81bbb-905a-474d-959a-db5629a8e104,edf81bbb-905a-474d-959a-db5629a8e104,1,0,4c8eb34e-0bb6-487a-a2ae-24083b1f6d2e,4c8eb34e-0bb6-487a-a2ae-24083b1f6d2e,1,0,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,1,0,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,1,0,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,1,0,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,1,0,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,1,0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,1,0,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1,0,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,1,0,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,1,0,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,1,0,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,1,0,c5b4d6e4-4c99-46cb-98cf-9a0024215a12,c5b4d6e4-4c99-46cb-98cf-9a0024215a12,1,0,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,1,0,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,1,0,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,1,0,f20a04a7-84fa-48e3-8ac5-28176c1fcada,f20a04a7-84fa-48e3-8ac5-28176c1fcada,1,0,b722d6e1-fd6f-4bb4-923d-01764393722d,b722d6e1-fd6f-4bb4-923d-01764393722d,1,0,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,1,0,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,1,0,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,1,0,4ad722ca-10fc-4a83-91c9-ef0012685f89,4ad722ca-10fc-4a83-91c9-ef0012685f89,1,0,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,1,0,3b033d29-0de7-49dd-90bc-f414b28426d7,3b033d29-0de7-49dd-90bc-f414b28426d7,1,0,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,1,0,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,1,0,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,1,0,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,1,0,6ddd9c1f-daff-494c-bd6f-741bd40881ab,6ddd9c1f-daff-494c-bd6f-741bd40881ab,1,0,683c1238-5828-4ab9-a89e-7a3b31fc7fa5,683c1238-5828-4ab9-a89e-7a3b31fc7fa5,1,0,7e9c0fa3-128e-4c3f-a1f7-63cb88a1c0b1,7e9c0fa3-128e-4c3f-a1f7-63cb88a1c0b1,1,0,2ca8bca9-813a-4833-8ef0-a5e83f91c10f,2ca8bca9-813a-4833-8ef0-a5e83f91c10f,1,0,59b34b58-6ac9-467e-963b-0cccbf098797,59b34b58-6ac9-467e-963b-0cccbf098797,1,0,313d9858-3995-4a4c-b2b0-15d2350417b4,313d9858-3995-4a4c-b2b0-15d2350417b4,1,0,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,1,0,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,1,0,2e4da82c-dddb-4462-b34f-6511cd2a8356,2e4da82c-dddb-4462-b34f-6511cd2a8356,1,0,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,1,0,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,1,0,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,1,0,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,1,0,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,1,0,514e95b8-2fdd-46f7-89bf-7d1a3d9d6e1b,514e95b8-2fdd-46f7-89bf-7d1a3d9d6e1b,1,0,6ca91336-5ccd-4d0b-9602-53f4925c492d,6ca91336-5ccd-4d0b-9602-53f4925c492d,1,0,d853dd5f-d987-4cdb-82b5-5e40a5a5e449,d853dd5f-d987-4cdb-82b5-5e40a5a5e449,1,0,dc16c546-eecc-49fe-a401-e2e3987faa1f,dc16c546-eecc-49fe-a401-e2e3987faa1f,1,0,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,1,0,4fc5c023-91e2-4b3e-8f61-4dfe3be78f3a,4fc5c023-91e2-4b3e-8f61-4dfe3be78f3a,1,0,646def82-bc88-4187-8be0-93938656a20f,646def82-bc88-4187-8be0-93938656a20f,1,0,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,1,0,a07971f5-ed6d-4829-a6bb-4b17cd5c6f6c,a07971f5-ed6d-4829-a6bb-4b17cd5c6f6c,1,0,9c4e28e8-7257-42ed-9fd8-793a0b8eb945,9c4e28e8-7257-42ed-9fd8-793a0b8eb945,1,0,9b7b6d0e-68d6-4a73-837c-2a6fd456b236,9b7b6d0e-68d6-4a73-837c-2a6fd456b236,1,0,7f6222c1-1a50-4565-b66b-bcb430674efc,7f6222c1-1a50-4565-b66b-bcb430674efc,1,0,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,1,0,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,1,0,2fb5650f-a5e5-4db8-a6a7-ca1101b41d3e,2fb5650f-a5e5-4db8-a6a7-ca1101b41d3e,1,0,b0fca543-6951-4233-bdf6-58082b22252a,b0fca543-6951-4233-bdf6-58082b22252a,1,0,4929cf90-54c6-412c-b2fa-dc8230fb8f85,4929cf90-54c6-412c-b2fa-dc8230fb8f85,1,0,52ae6431-afb3-4dea-b106-00e11b174ec7,52ae6431-afb3-4dea-b106-00e11b174ec7,1,0,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,1,0,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,1,0,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,1,0,b9166ea0-cce8-4f76-a9cb-a3d6eb4dfb95,b9166ea0-cce8-4f76-a9cb-a3d6eb4dfb95,1,0,8b83324c-e10e-49d1-99d7-5bc468c25975,8b83324c-e10e-49d1-99d7-5bc468c25975,1,0,ddb75923-27bf-4996-b024-4bc6eb0f59a7,ddb75923-27bf-4996-b024-4bc6eb0f59a7,1,0,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,1,0,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,1,0,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,1,0,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,1,0,3be0acc7-223a-46ec-9ea2-ec99b869fa78,3be0acc7-223a-46ec-9ea2-ec99b869fa78,1,0,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,1,0,517ac144-ecb9-4d14-83ea-01e58f0901fc,517ac144-ecb9-4d14-83ea-01e58f0901fc,1,0,61c1ff46-2a30-43bb-b1df-4db2271b1b12,61c1ff46-2a30-43bb-b1df-4db2271b1b12,1,0,cf7bc2ca-fb57-4b1a-98cf-f2caa7e611f5,cf7bc2ca-fb57-4b1a-98cf-f2caa7e611f5,1,0,486083d8-33b1-453f-9f05-5ff867e2f4ba,486083d8-33b1-453f-9f05-5ff867e2f4ba,1,0,e4f9d9f6-38d7-4056-a95a-987ad2da2211,e4f9d9f6-38d7-4056-a95a-987ad2da2211,1,0,22c21c2b-4297-43b2-88f0-9555d22f7a14,22c21c2b-4297-43b2-88f0-9555d22f7a14,1,0,734f61c4-5429-4a09-8697-8949ac5e6bd1,734f61c4-5429-4a09-8697-8949ac5e6bd1,1,0,d04e0e2d-0a5f-4866-b0b3-b582915db899,d04e0e2d-0a5f-4866-b0b3-b582915db899,1,0,19649d3f-52aa-4054-bb84-a6a11d212495,19649d3f-52aa-4054-bb84-a6a11d212495,1,0,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,1,0,58321939-f25a-456d-8dee-97e64743dc2e,58321939-f25a-456d-8dee-97e64743dc2e,1,0,416fba62-70c4-4f8c-b10b-56d47b27ca35,416fba62-70c4-4f8c-b10b-56d47b27ca35,1,0,ec48a164-bc30-4e36-a40a-a3cca07aea0d,ec48a164-bc30-4e36-a40a-a3cca07aea0d,1,0,3174d57f-c6a8-44dc-adc1-47e9a54c844d,3174d57f-c6a8-44dc-adc1-47e9a54c844d,1,0,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,1,0,b7736108-89bd-44eb-89c1-8a5a774058f1,b7736108-89bd-44eb-89c1-8a5a774058f1,1,0,e07841ef-8392-4ceb-936d-fd160b3b03cd,e07841ef-8392-4ceb-936d-fd160b3b03cd,1,0,eee66f49-8954-4674-9e02-6bff6c332d30,eee66f49-8954-4674-9e02-6bff6c332d30,1,0,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,1,0,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,1,0,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,1,0,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,1,0,e7415ada-dd47-41f5-b4d5-7e77d1adad33,e7415ada-dd47-41f5-b4d5-7e77d1adad33,1,0,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,1,0,79c15db6-6066-4fe5-b30e-3196b6ca3d66,79c15db6-6066-4fe5-b30e-3196b6ca3d66,1,0,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,1,0,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,1,0,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,1,0,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,1,0,40cefda6-490e-4962-9747-94b823ea4ed7,40cefda6-490e-4962-9747-94b823ea4ed7,1,0,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,1,0,7e8d7d4f-98f7-4c81-94b1-f2d552b1ae5d,7e8d7d4f-98f7-4c81-94b1-f2d552b1ae5d,1,0,6aa6d14f-cd6c-413a-864e-d847d9ce120b,6aa6d14f-cd6c-413a-864e-d847d9ce120b,1,0,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,1,0,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,1,0,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,1,0,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,1,0,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,1,0,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,1,0,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,1,0,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,1,0,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,1,0,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,1,0,26aea96b-20f8-4e35-b55f-4fe3602e6597,26aea96b-20f8-4e35-b55f-4fe3602e6597,1,0,a3a3a211-e361-4e41-a6f8-d731a366c163,a3a3a211-e361-4e41-a6f8-d731a366c163,1,0,c40d6fde-4d9a-4d9e-af86-42b7916e2abe,c40d6fde-4d9a-4d9e-af86-42b7916e2abe,1,0,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,1,0,ca01417c-0ffd-4e00-91e8-93cd305be82d,ca01417c-0ffd-4e00-91e8-93cd305be82d,1,0,933ae96b-c69e-4396-bbfb-0daa81e529a4,933ae96b-c69e-4396-bbfb-0daa81e529a4,1,0,e1823be2-b646-4a1a-a9a9-c925a12c0586,e1823be2-b646-4a1a-a9a9-c925a12c0586,1,0,909e56e3-981f-430b-b775-18c70b3549e7,909e56e3-981f-430b-b775-18c70b3549e7,1,0,e613a6aa-82cb-40fd-8f28-0a74fe21e6a6,e613a6aa-82cb-40fd-8f28-0a74fe21e6a6,1,0,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,1,0,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,1,0,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,1,0,22c60cbc-429f-40d9-bf8b-681b7786c41d,22c60cbc-429f-40d9-bf8b-681b7786c41d,1,0,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,1,0,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,1,0,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,1,0,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,1,0,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,1,0,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,1,0,4654d192-74bf-430f-abee-6f4dc431b182,4654d192-74bf-430f-abee-6f4dc431b182,1,0,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,1,0,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1,0,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,1,0,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,1,0,80eb2a49-8c0e-4f92-b99c-7fdadca03e7b,80eb2a49-8c0e-4f92-b99c-7fdadca03e7b,1,0,3f7ee937-d853-47b7-a1f5-d821208e3531,3f7ee937-d853-47b7-a1f5-d821208e3531,1,0,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,1,0,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,1,0,543c32a4-ad43-4f60-9b35-77081f841ad9,543c32a4-ad43-4f60-9b35-77081f841ad9,1,0,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,1,0,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,1,0,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,1,0,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,1,0,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,1,0,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,1,0,63066bee-d428-4e32-a032-f17475056537,63066bee-d428-4e32-a032-f17475056537,1,0,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,1,0,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,1,0,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,1,0,8c2a0f6b-492c-4c5a-97c5-da0d07f9d781,8c2a0f6b-492c-4c5a-97c5-da0d07f9d781,1,0,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,1,0,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,1,0,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,1,0,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,1,0,90032ffa-f117-4a34-82f8-cc7e5a22a542,90032ffa-f117-4a34-82f8-cc7e5a22a542,1,0,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,1,0,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,1,0,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,1,0,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,1,0,49e787c9-753a-468a-b8dd-2e970d9a1fed,49e787c9-753a-468a-b8dd-2e970d9a1fed,1,0,e871dea7-1953-4511-90b0-e0957afac4c0,e871dea7-1953-4511-90b0-e0957afac4c0,1,0,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,1,0,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,1,0,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,1,0,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,1,0,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,1,0,40ae107d-67a8-404c-adf9-1a760bba94ff,40ae107d-67a8-404c-adf9-1a760bba94ff,1,0,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,1,0,32b07bc0-3b2a-4244-93d4-49f172ad3ffb,32b07bc0-3b2a-4244-93d4-49f172ad3ffb,1,0,7abec628-65c3-4a44-ae11-99c2ffc592a3,7abec628-65c3-4a44-ae11-99c2ffc592a3,1,0,7b263bb6-4a6b-46c6-a1f0-48721ac1694b,7b263bb6-4a6b-46c6-a1f0-48721ac1694b,1,0,80b4e8c4-1fb3-4c3b-883f-93b5e213f46e,80b4e8c4-1fb3-4c3b-883f-93b5e213f46e,1,0,98061bca-6e72-479b-9125-a0f9452f4ed1,98061bca-6e72-479b-9125-a0f9452f4ed1,1,0,4d50203f-4577-4615-8001-4e4ac98fd392,4d50203f-4577-4615-8001-4e4ac98fd392,1,0,5c06642b-9c31-485b-87dd-48c6d7dbd30f,5c06642b-9c31-485b-87dd-48c6d7dbd30f,1,0,eeac3530-8897-4ab6-8fe8-09fcbfcd9fde,eeac3530-8897-4ab6-8fe8-09fcbfcd9fde,1,0,c3e2e470-f0bc-4fda-8c0e-4fb900e564a9,c3e2e470-f0bc-4fda-8c0e-4fb900e564a9,1,0,7fb0f8fd-4673-4f1d-a6ef-bc4ba9a2229f,7fb0f8fd-4673-4f1d-a6ef-bc4ba9a2229f,1,0,7172bed5-b12b-4e83-b15d-1d95b63a6272,7172bed5-b12b-4e83-b15d-1d95b63a6272,1,0,25d75a3c-b801-4b1e-aed8-90e667f36c67,25d75a3c-b801-4b1e-aed8-90e667f36c67,1,0,addb3aa1-a9d6-4d30-b5db-7f3ce46bc1b2,addb3aa1-a9d6-4d30-b5db-7f3ce46bc1b2,1,0,63ebf7fd-d514-4fce-abc1-fb3f253d01cd,63ebf7fd-d514-4fce-abc1-fb3f253d01cd,1,0,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,1,0,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,1,0,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,1,0,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,1,0,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,1,0,49e21b87-beae-4640-a497-ef468da0cbbc,49e21b87-beae-4640-a497-ef468da0cbbc,1,0,08c83b5e-08dd-425d-b024-62af684df926,08c83b5e-08dd-425d-b024-62af684df926,1,0,9e40a2ef-0c96-4455-8ed6-6e09011df3df,9e40a2ef-0c96-4455-8ed6-6e09011df3df,1,0,0de78690-2038-456b-b140-2b2b81f14e44,0de78690-2038-456b-b140-2b2b81f14e44,1,0,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,1,0,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,1,0,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,1,0,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,1,0,fa787228-aed5-4a16-b958-d102b78bf776,fa787228-aed5-4a16-b958-d102b78bf776,1,0,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,1,0,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,1,0,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,1,0,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,1,0,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,1,0,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,1,0,74b1237b-4a46-438d-9756-b564260df99d,74b1237b-4a46-438d-9756-b564260df99d,1,0,19decf0f-c24e-4551-b3d6-8ebd413cba78,19decf0f-c24e-4551-b3d6-8ebd413cba78,1,0,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,1,0,189383a5-0001-4427-9e00-18451e4bfb6e,189383a5-0001-4427-9e00-18451e4bfb6e,1,0,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,1,0,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,1,0,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,1,0,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,1,0,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,1,0,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,1,0,61cc4ec9-81e7-415b-8adf-3a5e61be505f,61cc4ec9-81e7-415b-8adf-3a5e61be505f,1,0,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,1,0,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,1,0,1ef34700-ce65-4985-b4d6-7133133ef32d,1ef34700-ce65-4985-b4d6-7133133ef32d,1,0,886d99ce-9ea2-4160-8d73-84df7197c030,886d99ce-9ea2-4160-8d73-84df7197c030,1,0,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,1,0,692d289b-8bd2-4b88-a8ea-0389c967df63,692d289b-8bd2-4b88-a8ea-0389c967df63,1,0,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,1,0,393074c4-0afc-4232-8101-11a4ea6ed28a,393074c4-0afc-4232-8101-11a4ea6ed28a,1,0,5ff23123-450c-40ae-9b79-c540da53e2a0,5ff23123-450c-40ae-9b79-c540da53e2a0,1,0,639339a1-7de5-4b05-adf3-f60e7edd922c,639339a1-7de5-4b05-adf3-f60e7edd922c,1,0,dea9af9d-13c0-40d4-a9b0-1908e0a58795,dea9af9d-13c0-40d4-a9b0-1908e0a58795,1,0,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,1,0,50ef6fc7-edfc-497b-ae9d-fb676934a631,50ef6fc7-edfc-497b-ae9d-fb676934a631,1,0,6f706d33-6fc6-4311-994f-6887c46f3c3b,6f706d33-6fc6-4311-994f-6887c46f3c3b,1,0,0e1a45b0-d95d-415f-b954-5689610aa393,0e1a45b0-d95d-415f-b954-5689610aa393,1,0,4736b3d3-f696-4bdd-b0e3-0884ea88f623,4736b3d3-f696-4bdd-b0e3-0884ea88f623,1,0,e3ac6312-4397-4012-a3d1-e35071d3fb6b,e3ac6312-4397-4012-a3d1-e35071d3fb6b,1,0,1c32ac14-580d-4ac2-939b-dc5ce64b4f7f,1c32ac14-580d-4ac2-939b-dc5ce64b4f7f,1,0,9162a85e-a385-42b0-b809-da916fce44b7,9162a85e-a385-42b0-b809-da916fce44b7,1,0,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,1,0,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,1,0,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,1,0,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,1,0,01a73950-3e8f-4f56-903f-af0d9574e72e,01a73950-3e8f-4f56-903f-af0d9574e72e,1,0,14bd0844-c829-4325-aa7f-0f417bf955dc,14bd0844-c829-4325-aa7f-0f417bf955dc,1,0,7f1cd658-ca10-49c6-80ef-b8956f3269ea,7f1cd658-ca10-49c6-80ef-b8956f3269ea,1,0,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,1,0,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,1,0,23d137ad-5b37-40a9-9c9f-3a2cecfb5abb,23d137ad-5b37-40a9-9c9f-3a2cecfb5abb,1,0,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,1,0,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,1,0,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,1,0,aea031ed-44c1-441b-8ed2-3a790c0263ab,aea031ed-44c1-441b-8ed2-3a790c0263ab,1,0,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,1,0,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,1,0,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,1,0,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,1,0,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,1,0,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,1,0,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,1,0,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,1,0,d2816f95-4809-4727-8ab6-8afd375f5a75,d2816f95-4809-4727-8ab6-8afd375f5a75,1,0,1d49b1bb-5f90-46e4-adcf-55ad46442648,1d49b1bb-5f90-46e4-adcf-55ad46442648,1,0,8d4685b7-ba72-4a28-8182-3104e1330567,8d4685b7-ba72-4a28-8182-3104e1330567,1,0,b91b93f0-29ca-452d-97be-7109fb248e22,b91b93f0-29ca-452d-97be-7109fb248e22,1,0,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,1,0,1bcbf91d-cbbc-4c47-86ed-b2cab62ccbe2,1bcbf91d-cbbc-4c47-86ed-b2cab62ccbe2,1,0,27aebf22-27fe-48d4-a6f4-ea4f6a6714bb,27aebf22-27fe-48d4-a6f4-ea4f6a6714bb,1,0,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,1,0,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,1,0,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,1,0,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,1,0,932656e8-4011-4250-844b-1fd47abda912,932656e8-4011-4250-844b-1fd47abda912,1,0,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,1,0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,1,0,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,1,0,fb7a9f90-15ef-4121-adff-cd40f699182b,fb7a9f90-15ef-4121-adff-cd40f699182b,1,0,0fa52339-2d11-4c81-92b9-aa27d116134d,0fa52339-2d11-4c81-92b9-aa27d116134d,1,0,26135cf4-fbe1-4f72-a1fd-69e85ec008a6,26135cf4-fbe1-4f72-a1fd-69e85ec008a6,1,0,d83b8068-512d-4c10-88b4-f9b3413a3a81,d83b8068-512d-4c10-88b4-f9b3413a3a81,1,0,b3bbcd07-a593-4591-9d7e-9a990c0acb62,b3bbcd07-a593-4591-9d7e-9a990c0acb62,1,0,b96df5bb-d78a-40ed-a62d-2bf796c59c62,b96df5bb-d78a-40ed-a62d-2bf796c59c62,1,0,073890e5-13eb-4c50-9a6e-3e5507b111b7,073890e5-13eb-4c50-9a6e-3e5507b111b7,1,0,34a4d235-dc56-47e5-91b6-0af887ccdf42,34a4d235-dc56-47e5-91b6-0af887ccdf42,1,0,d60e7164-c686-4c50-b831-a4ee4f505c35,d60e7164-c686-4c50-b831-a4ee4f505c35,1,0,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,1,0,2fad50a6-6a3e-4f87-ab84-907364427a63,2fad50a6-6a3e-4f87-ab84-907364427a63,1,0,e37aa075-143b-44e9-a2e2-77b3e0f76a77,e37aa075-143b-44e9-a2e2-77b3e0f76a77,1,0,1df47f0c-7935-481b-9dfb-1f660ea81a2b,1df47f0c-7935-481b-9dfb-1f660ea81a2b,1,0,258736e4-93c0-4a46-8caa-75be42c9f006,258736e4-93c0-4a46-8caa-75be42c9f006,1,0,3153b2b9-9e3e-4d6b-ab8c-5ccaac78a08a,3153b2b9-9e3e-4d6b-ab8c-5ccaac78a08a,1,0,56d0acf3-c888-4824-a6e4-27d61fa35415,56d0acf3-c888-4824-a6e4-27d61fa35415,1,0,588bd1b2-ee61-4a05-83cd-efb1b82ccb44,588bd1b2-ee61-4a05-83cd-efb1b82ccb44,1,0,439129dd-ad00-484c-b84a-fb325af979ed,439129dd-ad00-484c-b84a-fb325af979ed,1,0,dcae6376-f44c-421e-87f2-df83413c021e,dcae6376-f44c-421e-87f2-df83413c021e,1,0,dbdcdcab-4cd5-44af-b52c-6ce14a26ca9c,dbdcdcab-4cd5-44af-b52c-6ce14a26ca9c,1,0,151f2d0a-cc43-490d-ad7d-71390703aa72,151f2d0a-cc43-490d-ad7d-71390703aa72,1,0,2a515a4f-683b-4674-b097-62dd2d940c39,2a515a4f-683b-4674-b097-62dd2d940c39,1,0,d14058f5-dfd4-47eb-ae6d-01b7062f5940,d14058f5-dfd4-47eb-ae6d-01b7062f5940,1,0,90f358ae-9c80-40cf-8e8f-aa02d78a2cdb,90f358ae-9c80-40cf-8e8f-aa02d78a2cdb,1,0,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,1,0,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,1,0,fdb5b235-1978-4c2a-a03f-02341df00c3c,fdb5b235-1978-4c2a-a03f-02341df00c3c,1,0,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,1,0,917f8d67-2c28-4e02-9453-e1ef9297c9a6,917f8d67-2c28-4e02-9453-e1ef9297c9a6,1,0,38637f61-399a-4966-9e64-4751aecffa31,38637f61-399a-4966-9e64-4751aecffa31,1,0,0f38a18b-a36c-45fe-86c1-396634aaa5df,0f38a18b-a36c-45fe-86c1-396634aaa5df,1,0,f2b7b8d0-c0f7-46ba-907a-f8dfa76fc2da,f2b7b8d0-c0f7-46ba-907a-f8dfa76fc2da,1,0,a81c783d-2dea-4dde-9ca1-7b23d609eb22,a81c783d-2dea-4dde-9ca1-7b23d609eb22,1,0,137ec4ee-5053-47a7-8f5d-f6e63174608f,137ec4ee-5053-47a7-8f5d-f6e63174608f,1,0,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,1,0,4b4f5777-7c36-461e-9d3e-1baaf0497d62,4b4f5777-7c36-461e-9d3e-1baaf0497d62,1,0,8f4d5fc1-5c2c-4202-bb79-a180b03b3267,8f4d5fc1-5c2c-4202-bb79-a180b03b3267,1,0,da881296-fea4-444b-96b2-12cb69d588c7,da881296-fea4-444b-96b2-12cb69d588c7,1,0,03f9d2d0-eae4-4098-a70e-4eb569b11fd9,03f9d2d0-eae4-4098-a70e-4eb569b11fd9,1,0,30031e74-e58a-44a2-98dd-fc8c950831c4,30031e74-e58a-44a2-98dd-fc8c950831c4,1,0,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,1,0,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,1,0,3fc019d1-aec8-4835-96c5-3bbf43da0b94,3fc019d1-aec8-4835-96c5-3bbf43da0b94,1,0,5371672a-c8e0-4c12-834e-f23dd885b49a,5371672a-c8e0-4c12-834e-f23dd885b49a,1,0,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,1,0,1f927f76-5523-4880-9d26-d69a059f2b67,1f927f76-5523-4880-9d26-d69a059f2b67,1,0,27a9c1de-90a9-49f8-8b16-f7ef041ae1de,27a9c1de-90a9-49f8-8b16-f7ef041ae1de,1,0,5c45e96f-e245-4d16-9c47-836505582aef,5c45e96f-e245-4d16-9c47-836505582aef,1,0,2c04d747-c363-4218-92c9-5c83393e928b,2c04d747-c363-4218-92c9-5c83393e928b,1,0,093b8255-7ee5-4463-bd20-542b1d63e799,093b8255-7ee5-4463-bd20-542b1d63e799,1,0,5afb95e0-51a3-4a0f-bea7-e06716421974,5afb95e0-51a3-4a0f-bea7-e06716421974,1,0,2bce3fbe-436b-4a9f-8478-5436d61cd57c,2bce3fbe-436b-4a9f-8478-5436d61cd57c,1,0,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,1,0,3d02ca78-c396-4797-909c-e6b910c0ff66,3d02ca78-c396-4797-909c-e6b910c0ff66,1,0,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,1,0,b0b63551-4e83-4201-af9a-b4ab150c43a5,b0b63551-4e83-4201-af9a-b4ab150c43a5,1,0,ca85912b-87b4-481e-9184-017364b4603d,ca85912b-87b4-481e-9184-017364b4603d,1,0,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,1,0,80c18959-93f0-46e6-90fd-b564efcaa395,80c18959-93f0-46e6-90fd-b564efcaa395,1,0,c53b9e19-54e4-49b4-ac63-eaeee5c2e040,c53b9e19-54e4-49b4-ac63-eaeee5c2e040,1,0,47afc45d-719e-4740-a8aa-6157c4b1aea8,47afc45d-719e-4740-a8aa-6157c4b1aea8,1,0,baec0e60-c410-4b95-8126-f77fd06225b4,baec0e60-c410-4b95-8126-f77fd06225b4,1,0,2650db63-ca98-4a8a-8c36-165548aa5279,2650db63-ca98-4a8a-8c36-165548aa5279,1,0,6a8fdf0a-5dff-49e4-a423-fc80aceeee27,6a8fdf0a-5dff-49e4-a423-fc80aceeee27,1,0,4b9320f1-c7b1-4c08-a832-64ef108d0d6d,4b9320f1-c7b1-4c08-a832-64ef108d0d6d,1,0,e8c5c961-0633-438d-ba50-d2a774f6b167,e8c5c961-0633-438d-ba50-d2a774f6b167,1,0,48b57d1b-5246-4ce8-9e0f-e369e6add55c,48b57d1b-5246-4ce8-9e0f-e369e6add55c,1,0,b6d891e4-15d6-4b40-b474-a8a1d10231e8,b6d891e4-15d6-4b40-b474-a8a1d10231e8,1,0,e60a7341-3995-4d8c-a3c6-a23ea0137754,e60a7341-3995-4d8c-a3c6-a23ea0137754,1,0,a69525c7-27ff-48df-b26b-325ba580a53e,a69525c7-27ff-48df-b26b-325ba580a53e,1,0,24a7de1c-1c1f-4987-91ff-02f78f15dd9e,24a7de1c-1c1f-4987-91ff-02f78f15dd9e,1,0,8482b31d-0ffa-4a94-9be1-09db8399b70d,8482b31d-0ffa-4a94-9be1-09db8399b70d,1,0,77fe53c2-de9d-4483-97c9-f7d44e137d5e,77fe53c2-de9d-4483-97c9-f7d44e137d5e,1,0,ac7ea771-4b10-4d43-9c0a-9cd36e4c49a4,ac7ea771-4b10-4d43-9c0a-9cd36e4c49a4,1,0,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,1,0,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,1,0,e57f4619-b5ed-44de-a186-a13a3897731b,e57f4619-b5ed-44de-a186-a13a3897731b,1,0,3b78a9d0-7382-4115-a7dc-d06c9a1962d1,3b78a9d0-7382-4115-a7dc-d06c9a1962d1,1,0,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,1,0,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,1,0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,1,0,35dee1ee-ca9e-4b6b-9767-1107283f5a04,35dee1ee-ca9e-4b6b-9767-1107283f5a04,1,0,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,1,0,cb3a5c5b-7bdc-4e12-96f1-11b1213b6853,cb3a5c5b-7bdc-4e12-96f1-11b1213b6853,1,0,e6fe7103-4dfa-4302-a58e-ccd7fac19c9d,e6fe7103-4dfa-4302-a58e-ccd7fac19c9d,1,0,bb3a9973-67ce-479e-8668-c2f3bb20301e,bb3a9973-67ce-479e-8668-c2f3bb20301e,1,0,e5250dfe-dda2-4547-9b9e-2470ea1be1ab,e5250dfe-dda2-4547-9b9e-2470ea1be1ab,1,0,2c3fccc6-c4c0-49ec-bfc2-05ce05f27ea9,2c3fccc6-c4c0-49ec-bfc2-05ce05f27ea9,1,0,37169451-1464-4f24-8ca6-802963ffb636,37169451-1464-4f24-8ca6-802963ffb636,1,0,c3a958b1-590f-4418-a74f-5982b478cf52,c3a958b1-590f-4418-a74f-5982b478cf52,1,0,ef0e618d-0942-460a-ac65-9aca2fed976e,ef0e618d-0942-460a-ac65-9aca2fed976e,1,0,fd1ed7ec-d848-41cd-8ce3-2e5a682abcf0,fd1ed7ec-d848-41cd-8ce3-2e5a682abcf0,1,0,2ac8bd69-9fbf-4f15-b58d-397d9e903532,2ac8bd69-9fbf-4f15-b58d-397d9e903532,1,0,2ff35814-7eaa-4ae5-bbac-f46bebb36c9d,2ff35814-7eaa-4ae5-bbac-f46bebb36c9d,1,0,5b460b92-2c74-4f59-88b2-18d9aac42c04,5b460b92-2c74-4f59-88b2-18d9aac42c04,1,0,db05d35b-5f53-4c27-ba80-b477b9a98299,db05d35b-5f53-4c27-ba80-b477b9a98299,1,0,fa872ae1-b699-46fe-9d6a-e42e1388752b,fa872ae1-b699-46fe-9d6a-e42e1388752b,1,0,1acf34e6-c428-4130-82f0-5160dfcc0858,1acf34e6-c428-4130-82f0-5160dfcc0858,1,0,57046262-b9ce-4670-9cf5-6db9e58dd0d5,57046262-b9ce-4670-9cf5-6db9e58dd0d5,1,0,a9824176-36d5-4be5-9984-f4312ff48515,a9824176-36d5-4be5-9984-f4312ff48515,1,0,8e980ca0-1627-45e8-bd27-5dd1ac199459,8e980ca0-1627-45e8-bd27-5dd1ac199459,1,0,8b653beb-af9f-4f39-b691-ae14f80b7cd6,8b653beb-af9f-4f39-b691-ae14f80b7cd6,1,0,77559c11-713f-454d-aff4-56649e1350e9,77559c11-713f-454d-aff4-56649e1350e9,1,0,0c965703-c1d0-48b7-80f9-b8d869ff98f5,0c965703-c1d0-48b7-80f9-b8d869ff98f5,1,0,51f8d5ff-aec5-4c0a-ad02-df8c6cb1b4ad,51f8d5ff-aec5-4c0a-ad02-df8c6cb1b4ad,1,0,7ba42162-557b-4e34-8aca-0cdee8cb2452,7ba42162-557b-4e34-8aca-0cdee8cb2452,1,0,eee99b8e-29b6-4b7a-81f1-3d91d740c0d7,eee99b8e-29b6-4b7a-81f1-3d91d740c0d7,1,0,ad4f2d1f-1e6f-4f6a-8061-202c0e42a8e4,ad4f2d1f-1e6f-4f6a-8061-202c0e42a8e4,1,0,dd577924-c6cb-4aa9-9db5-366d8958d00f,dd577924-c6cb-4aa9-9db5-366d8958d00f,1,0,8ed8f72e-404a-4be4-a44d-ddebbad5f411,8ed8f72e-404a-4be4-a44d-ddebbad5f411,1,0,e919bc4c-86e6-44f6-be27-5a729b63d042,e919bc4c-86e6-44f6-be27-5a729b63d042,1,0,ec580e4f-1518-4923-a10e-bc1da8688b37,ec580e4f-1518-4923-a10e-bc1da8688b37,1,0,91c3902a-314f-4d40-8bcc-8dd131fed2f4,91c3902a-314f-4d40-8bcc-8dd131fed2f4,1,0,ae2b21c5-9349-49e8-9627-26f05c21f43a,ae2b21c5-9349-49e8-9627-26f05c21f43a,1,0,7e4c0b74-e807-4aa9-ad69-3c85b147bb61,7e4c0b74-e807-4aa9-ad69-3c85b147bb61,1,0,917a19d7-73db-4247-b892-397598d67879,917a19d7-73db-4247-b892-397598d67879,1,0,1f866dc3-a4bc-4e8d-96a3-a26ee073926f,1f866dc3-a4bc-4e8d-96a3-a26ee073926f,1,0,d8066600-c669-449d-a187-fdd3af8f7afa,d8066600-c669-449d-a187-fdd3af8f7afa,1,0,dadf86a6-c118-4827-b1b9-6cfee731242f,dadf86a6-c118-4827-b1b9-6cfee731242f,1,0,45bf7b20-f048-491a-a989-e50bea13d028,45bf7b20-f048-491a-a989-e50bea13d028,1,0,9ad3b432-5b49-44ee-9d8d-83c36458d927,9ad3b432-5b49-44ee-9d8d-83c36458d927,1,0,a9967bff-53b9-4295-a253-3647d956d3cb,a9967bff-53b9-4295-a253-3647d956d3cb,1,0,75f0fd5b-c594-4f3a-8ff2-3fdadf1dc96d,75f0fd5b-c594-4f3a-8ff2-3fdadf1dc96d,1,0,b8a31397-8974-44ec-92b0-7cbdc481cf7e,b8a31397-8974-44ec-92b0-7cbdc481cf7e,1,0,b29c7c0d-03eb-422b-a899-ba9a7eba99f6,b29c7c0d-03eb-422b-a899-ba9a7eba99f6,1,0,fb16c4d5-854c-4525-92be-b21fa2df5b0d,fb16c4d5-854c-4525-92be-b21fa2df5b0d,1,0,5771de21-2086-432b-ad91-de14a39bd5bc,5771de21-2086-432b-ad91-de14a39bd5bc,1,0,b15bcf3b-0228-4d02-8f20-cd6ba82f7585,b15bcf3b-0228-4d02-8f20-cd6ba82f7585,1,0,ed96fbfa-bda7-405c-9073-d0b6feffedad,ed96fbfa-bda7-405c-9073-d0b6feffedad,1,0,50c724cb-dde1-4313-9492-b1750bd0afc1,50c724cb-dde1-4313-9492-b1750bd0afc1,1,0,12901981-6106-4471-ab3a-e127c2bb4ebd,12901981-6106-4471-ab3a-e127c2bb4ebd,1,0,17ad1497-fa0e-469f-b2e2-b94a6f848ec5,17ad1497-fa0e-469f-b2e2-b94a6f848ec5,1,0,d5ea5dea-233d-4106-b9ba-f030d4f762ef,d5ea5dea-233d-4106-b9ba-f030d4f762ef,1,0,903af05e-5ac5-46aa-843b-d74f9e417c1d,903af05e-5ac5-46aa-843b-d74f9e417c1d,1,0,4dc4862e-74c3-469d-863b-09fdbe0d6be0,4dc4862e-74c3-469d-863b-09fdbe0d6be0,1,0,a344290a-c9be-47a7-95ad-ced1b52a0995,a344290a-c9be-47a7-95ad-ced1b52a0995,1,0,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,1,0,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,1,0,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,1,0,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,1,0,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,1,0,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,1,0,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,1,0,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,1,0,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,1,0,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,1,0,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,1,0,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,1,0,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,1,0,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,1,0,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,1,0,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,1,0,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,1,0,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,1,0,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,1,0,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,1,0,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,1,0,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,1,0,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,1,0,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,1,0,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,1,0,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,1,0,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,1,0,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,1,0,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,1,0,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,1,0,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,1,0,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,1,0,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,1,0,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,1,0,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,1,0,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,1,0,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,1,0,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,1,0,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,1,0,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,1,0,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,1,0,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,1,0,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,1,0,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,1,0,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,1,0,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,1,0,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,1,0,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,1,0,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,1,0,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,1,0,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,1,0,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,1,0,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,1,0,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,1,0,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,1,0,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,1,0,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,1,0,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,1,0,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,1,0,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,1,0,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,1,0,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,1,0,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,1,0,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,1,0,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,1,0,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,1,0,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,1,0,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,1,0,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,1,0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,1,0,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,1,0,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,1,0,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,1,0,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,1,0,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,1,0,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,1,0,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,1,0,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,1,0,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,1,0,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,1,0,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,1,0,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,1,0,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,1,0,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,1,0,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,1,0,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,1,0,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,1,0,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,1,0,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,1,0,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,1,0,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,1,0,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,1,0,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,1,0,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,1,0,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,1,0,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,1,0,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,1,0,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,1,0,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1,0,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,1,0,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,1,0,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,1,0,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,1,0,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,1,0,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,1,0,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,1,0,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,1,0,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,1,0,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,1,0,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,1,0,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,1,0,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,1,0,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,1,0,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,1,0,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,1,0,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,1,0,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,1,0,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,1,0,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,1,0,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,1,0,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,1,0,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,1,0,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,1,0,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,1,0,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,1,0,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,1,0,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,1,0,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,1,0,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,1,0,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,1,0,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,1,0,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,1,0,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,1,0,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,1,0,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,1,0,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,1,0,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,1,0,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,1,0,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,1,0,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,1,0,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,1,0,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,1,0,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,1,0,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,1,0,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,1,0,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,1,0,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,1,0,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,1,0,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,1,0,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,1,0,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,1,0,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,1,0,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,1,0,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,1,0,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,1,0,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,1,0,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,1,0,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,1,0,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,1,0,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,1,0,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,1,0,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,1,0,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,1,0,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,1,0,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,1,0,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,1,0,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,1,0,58589e42-9ff2-4ad4-bd98-a75ab6873625,58589e42-9ff2-4ad4-bd98-a75ab6873625,1,0,92255ded-6c44-43be-b0b1-fd03c2b78c8b,92255ded-6c44-43be-b0b1-fd03c2b78c8b,1,0,dfe6da42-f024-45c5-beea-ceccaf3a5faa,dfe6da42-f024-45c5-beea-ceccaf3a5faa,1,0,08f3e8f1-284c-4059-864a-42499d48596c,08f3e8f1-284c-4059-864a-42499d48596c,1,0,3d715c1b-9a5e-408d-98d6-5345d274144b,3d715c1b-9a5e-408d-98d6-5345d274144b,1,0,3f88bc69-e140-48b6-a2f9-24f6a391bff2,3f88bc69-e140-48b6-a2f9-24f6a391bff2,1,0,65eb5361-074c-451d-a5d8-d16b6ecccf82,65eb5361-074c-451d-a5d8-d16b6ecccf82,1,0,f7c8cab8-c634-4cf3-9183-c15c915231f8,f7c8cab8-c634-4cf3-9183-c15c915231f8,1,0,563a33a6-9eff-4ff1-9eba-dafc235d2ede,563a33a6-9eff-4ff1-9eba-dafc235d2ede,1,0,fbc21f7d-c272-41ea-b048-c5af294ab5ed,fbc21f7d-c272-41ea-b048-c5af294ab5ed,1,0,088c38fa-1c8f-42e7-aa72-5f5dd8cfc1c6,088c38fa-1c8f-42e7-aa72-5f5dd8cfc1c6,1,0,370f97ee-9aed-4a0a-aefc-647d973e6741,370f97ee-9aed-4a0a-aefc-647d973e6741,1,0,c586d28e-a3ec-4201-8ba0-d453bb7c5293,c586d28e-a3ec-4201-8ba0-d453bb7c5293,1,0,d84f12b0-6e01-4646-9abd-51578716433d,d84f12b0-6e01-4646-9abd-51578716433d,1,0,a4458c18-72eb-4fc0-8dc6-fccab93b0898,a4458c18-72eb-4fc0-8dc6-fccab93b0898,1,0,3a0ceb25-60f5-4fec-ab2e-e667939bfe21,3a0ceb25-60f5-4fec-ab2e-e667939bfe21,1,0,27db4549-df2f-4856-b07f-3c9399cdee9c,27db4549-df2f-4856-b07f-3c9399cdee9c,1,0,f667d49a-8077-450f-9442-2ea4fee7b62d,f667d49a-8077-450f-9442-2ea4fee7b62d,1,0,782b1285-9618-4ec9-b817-ce93e2d24d4d,782b1285-9618-4ec9-b817-ce93e2d24d4d,1,0,dd3e202f-6225-4061-a6ab-f29cd314ab08,dd3e202f-6225-4061-a6ab-f29cd314ab08,1,0,483b7600-e46f-4739-94c8-8637c62750a0,483b7600-e46f-4739-94c8-8637c62750a0,1,0,bdcf5f7a-2888-4143-b46d-1bf0dcc16872,bdcf5f7a-2888-4143-b46d-1bf0dcc16872,1,0,bce8a955-0a0e-4771-9763-4f5d319d9848,bce8a955-0a0e-4771-9763-4f5d319d9848,1,0,090c475c-fb33-46a9-a0ed-fb9d7def2ca5,090c475c-fb33-46a9-a0ed-fb9d7def2ca5,1,0,d10c3389-5bf0-4c73-ab92-786eb19d1676,d10c3389-5bf0-4c73-ab92-786eb19d1676,1,0,c824c20d-7503-4a77-81b8-2a68b20eab68,c824c20d-7503-4a77-81b8-2a68b20eab68,1,0,a0db92c6-b39e-41ab-82e3-161e32f67bda,a0db92c6-b39e-41ab-82e3-161e32f67bda,1,0,88f91187-65d3-4684-992d-20ca29d3755a,88f91187-65d3-4684-992d-20ca29d3755a,1,0,da725701-d4fb-40a4-a63b-feaa8559d8cf,da725701-d4fb-40a4-a63b-feaa8559d8cf,1,0,0a44cfc8-0b55-4aed-990f-e97831494a3c,0a44cfc8-0b55-4aed-990f-e97831494a3c,1,0,c9adbe7c-ca6e-4048-a498-9b48f75d9b45,c9adbe7c-ca6e-4048-a498-9b48f75d9b45,1,0,c7cb80d6-13d9-49af-acdd-6d10dffd1e17,c7cb80d6-13d9-49af-acdd-6d10dffd1e17,1,0,9a3f04d7-b956-4e87-ac28-63f7afba1771,9a3f04d7-b956-4e87-ac28-63f7afba1771,1,0,41b23a18-0c4e-455f-b249-2f2eba8119db,41b23a18-0c4e-455f-b249-2f2eba8119db,1,0,ff697cb8-ab88-4634-94e3-c06a401f71ff,ff697cb8-ab88-4634-94e3-c06a401f71ff,1,0,cf98131d-2b1a-4a07-a8dd-72af01934a8b,cf98131d-2b1a-4a07-a8dd-72af01934a8b,1,0,bef1eead-3f8b-48b7-99f3-46ba332fb60d,bef1eead-3f8b-48b7-99f3-46ba332fb60d,1,0,c1b3d4c8-8c53-4452-bec5-9742bb827d8f,c1b3d4c8-8c53-4452-bec5-9742bb827d8f,1,0,b6e1d584-6817-4f06-b5b2-57037a23ce6f,b6e1d584-6817-4f06-b5b2-57037a23ce6f,1,0,1b5d2ded-3f58-4b3e-8678-48191897e408,1b5d2ded-3f58-4b3e-8678-48191897e408,1,0,62fd5457-0cfd-4273-8965-4b5bf9170209,62fd5457-0cfd-4273-8965-4b5bf9170209,1,0,88701798-0c0e-4d33-a68b-3eddfc25d835,88701798-0c0e-4d33-a68b-3eddfc25d835,1,0,c0d704b5-32de-4bb8-9525-f7d1da828ae5,c0d704b5-32de-4bb8-9525-f7d1da828ae5,1,0,b5b5ee06-4de8-4776-98f0-3e8e1b31985a,b5b5ee06-4de8-4776-98f0-3e8e1b31985a,1,0,2f999502-68e5-4823-8f94-aec98b1a1b1d,2f999502-68e5-4823-8f94-aec98b1a1b1d,1,0,2d064409-7f2a-4d2e-9155-6b34e4373e89,2d064409-7f2a-4d2e-9155-6b34e4373e89,1,0,fc51a562-01bb-47c3-bac5-89f78f64a5f3,fc51a562-01bb-47c3-bac5-89f78f64a5f3,1,0,8a33a6cd-f56d-405b-9515-9fc04d30e27a,8a33a6cd-f56d-405b-9515-9fc04d30e27a,1,0,9b199470-723d-4b72-9fdc-2bed2b7bc483,9b199470-723d-4b72-9fdc-2bed2b7bc483,1,0,5bb9aff1-f4ee-4c02-8e3f-f070bfbb8339,5bb9aff1-f4ee-4c02-8e3f-f070bfbb8339,1,0,6a06f9ee-8832-4e9e-aeba-b4cb9573c048,6a06f9ee-8832-4e9e-aeba-b4cb9573c048,1,0,38fa770e-f38d-4fdf-bb7a-56cfe76a8ab2,38fa770e-f38d-4fdf-bb7a-56cfe76a8ab2,1,0,afc4ce2a-60b6-48d0-ada0-2f651d050888,afc4ce2a-60b6-48d0-ada0-2f651d050888,1,0,5f289266-fc3c-4345-b7ab-cf863e2a6ccd,5f289266-fc3c-4345-b7ab-cf863e2a6ccd,1,0,5932f0d8-9012-4382-8c72-b1a5f4fbc937,5932f0d8-9012-4382-8c72-b1a5f4fbc937,1,0,66f1ff23-8fec-4be4-914c-43b7dee1c2a2,66f1ff23-8fec-4be4-914c-43b7dee1c2a2,1,0,56c3471e-459a-46ba-96ea-9f872b3ad54a,56c3471e-459a-46ba-96ea-9f872b3ad54a,1,0,2113195b-1553-4137-9e45-2cc62c72ee47,2113195b-1553-4137-9e45-2cc62c72ee47,1,0,1250f5b1-c766-434c-8d28-69b74a536294,1250f5b1-c766-434c-8d28-69b74a536294,1,0,80bc9b8b-7b17-4dbb-bca6-8465d6b01e0b,80bc9b8b-7b17-4dbb-bca6-8465d6b01e0b,1,0,6327e23d-6070-4b64-81c6-0d1a33eaae93,6327e23d-6070-4b64-81c6-0d1a33eaae93,1,0,4d086a1f-34e0-43f9-9401-d82e55746a9d,4d086a1f-34e0-43f9-9401-d82e55746a9d,1,0,5a4c543a-27d5-423b-a4d0-3952ea2817af,5a4c543a-27d5-423b-a4d0-3952ea2817af,1,0,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,1,0,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,1,0,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,1,0,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,1,0,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,1,0,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,1,0,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,1,0,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,1,0,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,1,0,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,1,0,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,1,0,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,1,0,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,1,0,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,1,0,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,1,0,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,1,0,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,1,0,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,1,0,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,1,0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,1,0,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,1,0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,1,0,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,1,0,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,1,0,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,1,0,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,1,0,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,1,0,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,1,0,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,1,0,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,1,0,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,1,0,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,1,0,a9a51e79-4c79-4a43-931b-c0321c1cd65b,a9a51e79-4c79-4a43-931b-c0321c1cd65b,1,0,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,1,0,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,1,0,22f2696e-0ac1-4a74-bca9-987b267b2b59,22f2696e-0ac1-4a74-bca9-987b267b2b59,1,0,d705cacc-3485-46d7-9ff4-48c3c0757c81,d705cacc-3485-46d7-9ff4-48c3c0757c81,1,0,98f043ea-633c-4a03-a56f-efbc9e6ef288,98f043ea-633c-4a03-a56f-efbc9e6ef288,1,0,2033b92a-0750-478a-a12d-cf4f74d0a9da,2033b92a-0750-478a-a12d-cf4f74d0a9da,1,0,92fa2196-d8e5-45f9-9d2e-59d837b163ea,92fa2196-d8e5-45f9-9d2e-59d837b163ea,1,0,25dc2290-e283-4449-81c1-1ce15b58067f,25dc2290-e283-4449-81c1-1ce15b58067f,1,0,c534a865-a17f-41e7-88b9-c6af89c9d202,c534a865-a17f-41e7-88b9-c6af89c9d202,1,0,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,1,0,0127937c-94c0-43fe-9630-cc2ec6904ad8,0127937c-94c0-43fe-9630-cc2ec6904ad8,1,0,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,1,0,8df5b3cd-7788-4198-a530-e88be83f1cdf,8df5b3cd-7788-4198-a530-e88be83f1cdf,1,0,ffaeea66-66d5-4741-a9b5-875afebfce7f,ffaeea66-66d5-4741-a9b5-875afebfce7f,1,0,8f6b6576-1d21-46c1-905c-f1685f0eee7a,8f6b6576-1d21-46c1-905c-f1685f0eee7a,1,0,06827a85-a9d1-472e-8087-906ff94a4adc,06827a85-a9d1-472e-8087-906ff94a4adc,1,0,bb3954de-5eaa-4ec0-931b-a1a9f233c120,bb3954de-5eaa-4ec0-931b-a1a9f233c120,1,0,10689022-cbbb-4134-901f-1e778fac2693,10689022-cbbb-4134-901f-1e778fac2693,1,0,f14e363f-512b-4658-afb5-10c3be5ff870,f14e363f-512b-4658-afb5-10c3be5ff870,1,0,4d211427-4494-45d4-ae84-38235f35eaef,4d211427-4494-45d4-ae84-38235f35eaef,1,0,f7784993-d95c-4652-9894-3cf67aeabeb8,f7784993-d95c-4652-9894-3cf67aeabeb8,1,0,485d8b29-79b1-4798-a742-75546ddb7262,485d8b29-79b1-4798-a742-75546ddb7262,1,0,e248de85-8f76-4471-ab3d-d35514b69b78,e248de85-8f76-4471-ab3d-d35514b69b78,1,0,8928ce42-2b12-402f-8115-98b5655db556,8928ce42-2b12-402f-8115-98b5655db556,1,0,9b62c109-7b52-4803-83e6-a5413cd00984,9b62c109-7b52-4803-83e6-a5413cd00984,1,0,cddb4bb0-22ec-49ae-b332-62d7307b93fe,cddb4bb0-22ec-49ae-b332-62d7307b93fe,1,0,72876709-806e-4406-b9c1-b8117f4d750a,72876709-806e-4406-b9c1-b8117f4d750a,1,0,b1efafef-74cc-4d36-a32c-b472712f11f3,b1efafef-74cc-4d36-a32c-b472712f11f3,1,0,ceb05584-1ecd-4681-8575-c0452f95b685,ceb05584-1ecd-4681-8575-c0452f95b685,1,0,03d08c14-f814-4e12-8f96-020c36cca2bf,03d08c14-f814-4e12-8f96-020c36cca2bf,1,0,a1a7aab6-cf35-42ce-97bb-c112638a2748,a1a7aab6-cf35-42ce-97bb-c112638a2748,1,0,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,1,0,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,1,0,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,1,0,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,1,0,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,1,0,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,1,0,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,1,0,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,1,0,9f36d26e-aa71-44d5-ac27-9aaa643555c3,9f36d26e-aa71-44d5-ac27-9aaa643555c3,1,0,87b8b5d7-d3d6-450a-adb1-5c875257ec80,87b8b5d7-d3d6-450a-adb1-5c875257ec80,1,0,e3640efe-e46c-4588-b251-dda23bf0641d,e3640efe-e46c-4588-b251-dda23bf0641d,1,0,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,1,0,522a4bff-34d3-46b2-8c66-0b30d881a86e,522a4bff-34d3-46b2-8c66-0b30d881a86e,1,0,3d7908b1-bd82-475e-8488-fafcbe3458ee,3d7908b1-bd82-475e-8488-fafcbe3458ee,1,0,8a6cdb21-4eff-46dc-b928-738199f54581,8a6cdb21-4eff-46dc-b928-738199f54581,1,0,1bac040b-83e4-402f-a9bf-d6a7b10c91e0,1bac040b-83e4-402f-a9bf-d6a7b10c91e0,1,0,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,1,0,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,1,0,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,1,0,0f9c08c2-e7fa-4ea0-a935-f927feb01131,0f9c08c2-e7fa-4ea0-a935-f927feb01131,1,0,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,1,0,62a6b1c9-8288-4fa1-a17d-241b85a5e4b0,62a6b1c9-8288-4fa1-a17d-241b85a5e4b0,1,0,57069b56-f732-41c0-9a75-cbdb1e88556c,57069b56-f732-41c0-9a75-cbdb1e88556c,1,0,cf80ff0d-9add-4fa5-bba2-00d43fce5ed8,cf80ff0d-9add-4fa5-bba2-00d43fce5ed8,1,0,d927f1f0-df5f-44a1-bbfd-152ebf1559dd,d927f1f0-df5f-44a1-bbfd-152ebf1559dd,1,0,7ce7aec1-fa24-4dd7-8754-8124e78521bf,7ce7aec1-fa24-4dd7-8754-8124e78521bf,1,0,8b115575-9d8b-42f8-9ec8-0825a4397c7f,8b115575-9d8b-42f8-9ec8-0825a4397c7f,1,0,40fa5847-28f0-41ff-bfb8-ec33c8626d33,40fa5847-28f0-41ff-bfb8-ec33c8626d33,1,0,6d042890-27b2-4efc-935e-8190bb57c037,6d042890-27b2-4efc-935e-8190bb57c037,1,0,23e79add-7f1c-422a-9df1-8f76ebf805df,23e79add-7f1c-422a-9df1-8f76ebf805df,1,0,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,1,0,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,1,0,5299d417-02c6-4f73-9c0c-8c22d267ab99,5299d417-02c6-4f73-9c0c-8c22d267ab99,1,0,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,1,0,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,1,0,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,1,0,5dcd8e28-b058-405a-bac4-defab7d4b789,5dcd8e28-b058-405a-bac4-defab7d4b789,1,0,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,1,0,4a2c2478-03ad-4521-9356-09ee07fce972,4a2c2478-03ad-4521-9356-09ee07fce972,1,0,077af11c-fd3c-4e87-b169-5f3137464f77,077af11c-fd3c-4e87-b169-5f3137464f77,1,0,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,1,0,da8f7f30-eb80-44db-a451-348306c90cd8,da8f7f30-eb80-44db-a451-348306c90cd8,1,0,879304f7-9507-4fb8-9177-355428d6bba9,879304f7-9507-4fb8-9177-355428d6bba9,1,0,efb50581-cc7e-47ac-bfa2-86da2860bf1d,efb50581-cc7e-47ac-bfa2-86da2860bf1d,1,0,fd07f403-1116-4102-a1bf-35abb03ad493,fd07f403-1116-4102-a1bf-35abb03ad493,1,0,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,1,0,0722315c-9217-4ecf-80ff-d1ee89f84a53,0722315c-9217-4ecf-80ff-d1ee89f84a53,1,0,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,1,0,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,1,0,a2f943a4-05a3-4eb6-9a10-74b6859469a6,a2f943a4-05a3-4eb6-9a10-74b6859469a6,1,0,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,1,0,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,1,0,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,1,0,747f1c23-3c03-456e-864e-fc714484b7d6,747f1c23-3c03-456e-864e-fc714484b7d6,1,0,9847676d-f44d-46a0-83e2-4a43a835caf8,9847676d-f44d-46a0-83e2-4a43a835caf8,1,0,43c18cae-21a9-413b-a350-d5cf826980f0,43c18cae-21a9-413b-a350-d5cf826980f0,1,0,16773cdb-b979-42d5-a2a5-d4b79e8737bd,16773cdb-b979-42d5-a2a5-d4b79e8737bd,1,0,c28a190a-f487-4e99-b8f8-6928268086f8,c28a190a-f487-4e99-b8f8-6928268086f8,1,0,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,1,0,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,1,0,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,1,0,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,1,0,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,1,0,f321e378-6d50-4567-8434-813f367d3a65,f321e378-6d50-4567-8434-813f367d3a65,1,0,27246fd8-a8a3-4244-b49a-c0372a812167,27246fd8-a8a3-4244-b49a-c0372a812167,1,0,7d91ff3c-1ec2-41d0-9d38-fa8f8534c55c,7d91ff3c-1ec2-41d0-9d38-fa8f8534c55c,1,0,6da15c1d-e144-472e-9a3a-2797c7df16e4,6da15c1d-e144-472e-9a3a-2797c7df16e4,1,0,350a7b29-4ba3-43c4-b77d-47085f53d760,350a7b29-4ba3-43c4-b77d-47085f53d760,1,0,a151715d-c89e-4e4c-b8fd-d7d6ad71e603,a151715d-c89e-4e4c-b8fd-d7d6ad71e603,1,0,f6d6f1b9-3956-4fdb-bbb0-5d81f083a072,f6d6f1b9-3956-4fdb-bbb0-5d81f083a072,1,0,a5dd4200-0f25-452d-9014-3b1506c31557,a5dd4200-0f25-452d-9014-3b1506c31557,1,0,c48c091c-0d46-4d1f-bc84-72b0537c7ec2,c48c091c-0d46-4d1f-bc84-72b0537c7ec2,1,0,122a94c7-bb89-4f11-b583-b56808c1df47,122a94c7-bb89-4f11-b583-b56808c1df47,1,0,f4371f32-95a5-40f4-bc5e-a5b9a12a86eb,f4371f32-95a5-40f4-bc5e-a5b9a12a86eb,1,0,5f434c45-a5ff-4a07-8662-6a592298c7e9,5f434c45-a5ff-4a07-8662-6a592298c7e9,1,0,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,1,0,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,1,0,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,1,0,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,1,0,5d338e31-a56b-45f0-8a62-0270ca543f6a,5d338e31-a56b-45f0-8a62-0270ca543f6a,1,0,afd8251f-548b-4bb6-8ad0-4f412bec7cb6,afd8251f-548b-4bb6-8ad0-4f412bec7cb6,1,0,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,1,0,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,1,0,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,1,0,c11d967b-1250-4345-90b0-011a96c5ae5e,c11d967b-1250-4345-90b0-011a96c5ae5e,1,0,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,1,0,24eed105-f612-4340-ad79-388a7b39b58c,24eed105-f612-4340-ad79-388a7b39b58c,1,0,8e4bd2ac-d555-490e-87ab-1b0cdd6f72e9,8e4bd2ac-d555-490e-87ab-1b0cdd6f72e9,1,0,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,1,0,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,1,0,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,1,0,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,1,0,65678df4-a323-451f-98ba-305a74fc5805,65678df4-a323-451f-98ba-305a74fc5805,1,0,6a2add61-edb7-4561-bae9-06b3741e7726,6a2add61-edb7-4561-bae9-06b3741e7726,1,0,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,1,0,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,1,0,b572b1d0-4404-421c-9950-1cc1342ca5f3,b572b1d0-4404-421c-9950-1cc1342ca5f3,1,0,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,1,0,02082174-7276-4256-b9bb-9872065a01c4,02082174-7276-4256-b9bb-9872065a01c4,1,0,86c679c0-3531-4622-9a1f-3d9d6ccdd431,86c679c0-3531-4622-9a1f-3d9d6ccdd431,1,0,cba9e94c-e328-42ef-bcd0-92db3f0c048b,cba9e94c-e328-42ef-bcd0-92db3f0c048b,1,0,b1230b96-f4c8-4311-bfc0-df33bcc41394,b1230b96-f4c8-4311-bfc0-df33bcc41394,1,0,670c62c1-1a33-4dec-9540-5b4c1fe29074,670c62c1-1a33-4dec-9540-5b4c1fe29074,1,0,cc664d81-d0af-4d25-ae29-64f422e51bf2,cc664d81-d0af-4d25-ae29-64f422e51bf2,1,0,ae3876e2-bd06-415b-9d9a-b77d787be09e,ae3876e2-bd06-415b-9d9a-b77d787be09e,1,0,0cf49621-afc5-4c8d-a1b5-f8c30db9f415,0cf49621-afc5-4c8d-a1b5-f8c30db9f415,1,0,4718392b-477c-496b-9d28-ddbdaa7a04f2,4718392b-477c-496b-9d28-ddbdaa7a04f2,1,0,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,1,0,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,1,0,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,1,0,1260b5dd-0a74-43df-bdbb-215b253da28e,1260b5dd-0a74-43df-bdbb-215b253da28e,1,0,e37a7cf1-a7b5-4b6e-b818-0915598c8505,e37a7cf1-a7b5-4b6e-b818-0915598c8505,1,0,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,1,0,f3abaf8e-0230-43db-aaf0-716fc02047eb,f3abaf8e-0230-43db-aaf0-716fc02047eb,1,0,b76c3bd6-924a-4378-acbe-6f17232b201b,b76c3bd6-924a-4378-acbe-6f17232b201b,1,0,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,1,0,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,1,0,45eec13d-e5e5-4a2e-ad6c-2780bde15ef2,45eec13d-e5e5-4a2e-ad6c-2780bde15ef2,1,0,3b1d0974-6031-4841-b632-aadd4ff13b2c,3b1d0974-6031-4841-b632-aadd4ff13b2c,1,0,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,1,0,9d358304-3fd0-4ec6-9400-cc498ff2f751,9d358304-3fd0-4ec6-9400-cc498ff2f751,1,0,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,1,0,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,1,0,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,1,0,74067eee-6cd4-4ae3-becc-457ecb51dc9a,74067eee-6cd4-4ae3-becc-457ecb51dc9a,1,0,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,1,0,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,1,0,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,1,0,077e2c42-bc3b-48bf-bbc2-41effe20f613,077e2c42-bc3b-48bf-bbc2-41effe20f613,1,0,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,1,0,f5bb88eb-c239-4ae3-a297-dfbbd679e008,f5bb88eb-c239-4ae3-a297-dfbbd679e008,1,0,c888ccc1-9116-4b88-b950-aeabd54191c0,c888ccc1-9116-4b88-b950-aeabd54191c0,1,0,ff4d92a7-5fa3-4a46-a6f5-47c3952edb22,ff4d92a7-5fa3-4a46-a6f5-47c3952edb22,1,0,bb350b39-1f4d-460a-98c9-8d2308cf22f0,bb350b39-1f4d-460a-98c9-8d2308cf22f0,1,0,eaeb5aa8-8edf-4f74-8011-2d476f543bf6,eaeb5aa8-8edf-4f74-8011-2d476f543bf6,1,0,343b979a-97e3-4eac-a314-3bd3eea9c15c,343b979a-97e3-4eac-a314-3bd3eea9c15c,1,0,b2f17ef1-3f6f-4029-b3e2-28d6b79c5b76,b2f17ef1-3f6f-4029-b3e2-28d6b79c5b76,1,0,7adced5f-3a5f-419a-926c-0452aad86c86,7adced5f-3a5f-419a-926c-0452aad86c86,1,0,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,1,0,7433b2a9-f634-4af7-ac85-6aa1280ea239,7433b2a9-f634-4af7-ac85-6aa1280ea239,1,0,9f32e85c-2ed6-41db-b0ec-6d8596940e80,9f32e85c-2ed6-41db-b0ec-6d8596940e80,1,0,f259b6b4-d582-429f-a16f-027a6bcb7438,f259b6b4-d582-429f-a16f-027a6bcb7438,1,0,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,1,0,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,1,0,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,1,0,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,1,0,f4afd271-64de-4a6d-b0ef-f27db4d66d32,f4afd271-64de-4a6d-b0ef-f27db4d66d32,1,0,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,1,0,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,1,0,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,1,0,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,1,0,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,1,0,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,1,0,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,1,0,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,1,0,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,1,0,aa0c32ae-da52-4df9-8b77-99ea31f8df81,aa0c32ae-da52-4df9-8b77-99ea31f8df81,1,0,d7dcd391-3a0e-4aa9-9b53-467a1de67593,d7dcd391-3a0e-4aa9-9b53-467a1de67593,1,0,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,1,0,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,1,0,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,1,0,0248a6c4-7ce5-4898-bb1d-9ad9509e6795,0248a6c4-7ce5-4898-bb1d-9ad9509e6795,1,0,6a5b9e7f-c368-40d8-812a-64f68ea1ef9d,6a5b9e7f-c368-40d8-812a-64f68ea1ef9d,1,0,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,1,0,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,1,0,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,1,0,00e48a23-eb5b-4a29-b36c-218ab9760f23,00e48a23-eb5b-4a29-b36c-218ab9760f23,1,0,331db120-ba88-4eb3-a8ec-10691be82e2d,331db120-ba88-4eb3-a8ec-10691be82e2d,1,0,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,1,0,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,1,0,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,1,0,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,1,0,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,1,0,b0e0a273-2613-4d5e-9901-df7893af4c74,b0e0a273-2613-4d5e-9901-df7893af4c74,1,0,4ad1ef06-d8b4-46da-b536-d23c40e85497,4ad1ef06-d8b4-46da-b536-d23c40e85497,1,0,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,1,0,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,1,0,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,1,0,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,1,0,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,1,0,c0bc4cc4-b5ca-47c2-b589-c0d25bb63f1e,c0bc4cc4-b5ca-47c2-b589-c0d25bb63f1e,1,0,35823167-b658-4563-8d01-b0aab05aa619,35823167-b658-4563-8d01-b0aab05aa619,1,0,9ee03c48-c338-4655-9095-d490231df2a3,9ee03c48-c338-4655-9095-d490231df2a3,1,0,94928ba3-6bbf-4bd3-94cf-9c51b50e005f,94928ba3-6bbf-4bd3-94cf-9c51b50e005f,1,0,3924c17c-6ee3-4406-8023-0a79a242e389,3924c17c-6ee3-4406-8023-0a79a242e389,1,0,84a159ed-bc5f-4497-94d1-94b187b0bffe,84a159ed-bc5f-4497-94d1-94b187b0bffe,1,0,0a126b0d-28c8-4ed4-836f-e39e17693ad0,0a126b0d-28c8-4ed4-836f-e39e17693ad0,1,0,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,1,0,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,1,0,f95adb50-fa0b-434c-93dd-b7fd211220b7,f95adb50-fa0b-434c-93dd-b7fd211220b7,1,0,e590825f-10c6-4fdd-98cd-3da01da2ed4f,e590825f-10c6-4fdd-98cd-3da01da2ed4f,1,0,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,1,0,b938ff17-e31c-4762-a96f-e1288f746a1d,b938ff17-e31c-4762-a96f-e1288f746a1d,1,0,d6a5083f-ca9a-42ed-b202-2983e4ba21c2,d6a5083f-ca9a-42ed-b202-2983e4ba21c2,1,0,bd69bf55-dee0-4553-8f90-5fd025c0f773,bd69bf55-dee0-4553-8f90-5fd025c0f773,1,0,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,1,0,bea697f4-46a8-4698-ac60-64326e442f2b,bea697f4-46a8-4698-ac60-64326e442f2b,1,0,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,1,0,f415296e-fceb-4835-abe9-17bb17a5d5e5,f415296e-fceb-4835-abe9-17bb17a5d5e5,1,0,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,1,0,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,1,0,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,1,0,c8679d82-075c-4556-8231-c004d144fe61,c8679d82-075c-4556-8231-c004d144fe61,1,0,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,1,0,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,1,0,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,1,0,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,1,0,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,1,0,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,1,0,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,1,0,b0ca1b85-e1de-4b7c-8261-7f9e8a6a72eb,b0ca1b85-e1de-4b7c-8261-7f9e8a6a72eb,1,0,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,1,0,91d7687b-7627-473f-a08d-433f9d385107,91d7687b-7627-473f-a08d-433f9d385107,1,0,2276a1d4-b4d9-4643-8342-36143ce4eb26,2276a1d4-b4d9-4643-8342-36143ce4eb26,1,0,83db1b00-e9e3-41da-8a59-47589dcfd618,83db1b00-e9e3-41da-8a59-47589dcfd618,1,0,91d2d798-1498-4c52-aa7b-99db4b992876,91d2d798-1498-4c52-aa7b-99db4b992876,1,0,e85a03d3-e7c7-4058-992a-515a557d9e52,e85a03d3-e7c7-4058-992a-515a557d9e52,1,0,195ea1f8-3e38-4254-a33d-c87424b8f7dc,195ea1f8-3e38-4254-a33d-c87424b8f7dc,1,0,d3a1d247-8f4a-45af-9861-7e313a100209,d3a1d247-8f4a-45af-9861-7e313a100209,1,0,837f27c1-26d7-4f24-a691-55dd9ed04ec5,837f27c1-26d7-4f24-a691-55dd9ed04ec5,1,0,9e2ddfbb-8d6b-4b82-8a2b-62c2ea990b10,9e2ddfbb-8d6b-4b82-8a2b-62c2ea990b10,1,0,5005655f-22b2-49e6-be4f-b15d768d10b2,5005655f-22b2-49e6-be4f-b15d768d10b2,1,0,208040c8-e98b-4c15-a2ec-38d44bfcfa6c,208040c8-e98b-4c15-a2ec-38d44bfcfa6c,1,0,f6811ee2-769e-488d-9ca0-70f1fe521ca9,f6811ee2-769e-488d-9ca0-70f1fe521ca9,1,0,83385f31-2cdf-44a1-85c3-461e4ad5fd45,83385f31-2cdf-44a1-85c3-461e4ad5fd45,1,0,b55b06db-604e-4fb9-9253-638c747bd8f9,b55b06db-604e-4fb9-9253-638c747bd8f9,1,0,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,1,0,9aa0c1ef-45b4-405b-ad6f-ebcf876e6318,9aa0c1ef-45b4-405b-ad6f-ebcf876e6318,1,0,deb69010-80b0-4e28-acc7-8c50e8e6f873,deb69010-80b0-4e28-acc7-8c50e8e6f873,1,0,1a9177fe-6699-42b3-9588-eed9c6008c2d,1a9177fe-6699-42b3-9588-eed9c6008c2d,1,0,93848cf6-7a87-42c7-b685-0bc418a2037c,93848cf6-7a87-42c7-b685-0bc418a2037c,1,0,4f49412a-fbbe-4ee1-9c2b-affe5266bba7,4f49412a-fbbe-4ee1-9c2b-affe5266bba7,1,0,ae698468-f42a-4400-aee6-fd849740e634,ae698468-f42a-4400-aee6-fd849740e634,1,0,0b88b50d-6aa1-4364-82bd-1c0c0da93a58,0b88b50d-6aa1-4364-82bd-1c0c0da93a58,1,0,ddec19a2-2a76-4eeb-9cbb-6bc2b4a32bc8,ddec19a2-2a76-4eeb-9cbb-6bc2b4a32bc8,1,0,6438435e-97cc-4bd2-98dc-e21cee55bb0f,6438435e-97cc-4bd2-98dc-e21cee55bb0f,1,0,31b93291-a58f-4176-8318-58200e8bc56e,31b93291-a58f-4176-8318-58200e8bc56e,1,0,293be1bc-49cb-4a99-add8-2a3a46829718,293be1bc-49cb-4a99-add8-2a3a46829718,1,0,00579e31-e97d-4d79-ba25-b8d500a17e7f,00579e31-e97d-4d79-ba25-b8d500a17e7f,1,0,5001bea4-c8f9-4950-9eda-d33125e3bb46,5001bea4-c8f9-4950-9eda-d33125e3bb46,1,0,4ac6d0dd-0007-46b8-bfcc-93c0f85b6b85,4ac6d0dd-0007-46b8-bfcc-93c0f85b6b85,1,0,bc2dd611-b589-4519-b274-40db5c66b378,bc2dd611-b589-4519-b274-40db5c66b378,1,0,e815010d-e03d-46e4-b482-c1556902cc26,e815010d-e03d-46e4-b482-c1556902cc26,1,0,d4ab930a-ddaa-4552-afed-2618af822365,d4ab930a-ddaa-4552-afed-2618af822365,1,0,2388e3f4-b23b-488f-9ea5-d9434efca195,2388e3f4-b23b-488f-9ea5-d9434efca195,1,0,dd03e170-4186-495b-ae1c-fc66385d7ccf,dd03e170-4186-495b-ae1c-fc66385d7ccf,1,0,81fbb02e-76b2-4bca-bb3b-871e4e969a3c,81fbb02e-76b2-4bca-bb3b-871e4e969a3c,1,0,cdef5df6-f3a1-4950-b197-4f375914f885,cdef5df6-f3a1-4950-b197-4f375914f885,1,0,c1caff49-dc4b-4b3e-be47-122ea8b70416,c1caff49-dc4b-4b3e-be47-122ea8b70416,1,0,a1185a4c-7351-48b0-b662-61f61a1ad715,a1185a4c-7351-48b0-b662-61f61a1ad715,1,0,bf5faaef-3a03-40bc-8d3a-644c0874b9ce,bf5faaef-3a03-40bc-8d3a-644c0874b9ce,1,0,4ee0c7a4-cc26-438d-8908-f6a900c99d8b,4ee0c7a4-cc26-438d-8908-f6a900c99d8b,1,0,71d03545-df45-4c70-aa0d-3b916f2a9041,71d03545-df45-4c70-aa0d-3b916f2a9041,1,0,da9b0d3d-27dd-4a85-b0df-ec2f54d884f6,da9b0d3d-27dd-4a85-b0df-ec2f54d884f6,1,0,28a25822-2306-409a-a7c8-6f7e42bf25e8,28a25822-2306-409a-a7c8-6f7e42bf25e8,1,0,89cb31da-a980-4207-a537-85cd47f08d32,89cb31da-a980-4207-a537-85cd47f08d32,1,0,a45fa0c3-c363-4465-861f-13cedfeb79dd,a45fa0c3-c363-4465-861f-13cedfeb79dd,1,0,a72517c3-8c91-4e40-81ac-83c762789e87,a72517c3-8c91-4e40-81ac-83c762789e87,1,0,0233b335-7e26-4661-9850-8ab09d3178e3,0233b335-7e26-4661-9850-8ab09d3178e3,1,0,d942d536-5d01-4571-b910-abd973996a38,d942d536-5d01-4571-b910-abd973996a38,1,0,b82a7103-b872-49c3-b632-81d5a0051136,b82a7103-b872-49c3-b632-81d5a0051136,1,0,4b17ac35-78cb-4d01-bb08-659c0a93e8ce,4b17ac35-78cb-4d01-bb08-659c0a93e8ce,1,0,20c2053c-8ebd-4c07-8d95-956b424d047c,20c2053c-8ebd-4c07-8d95-956b424d047c,1,0,7c9dee81-7e85-4d26-84c3-66b0d770ac5a,7c9dee81-7e85-4d26-84c3-66b0d770ac5a,1,0,08fe5e70-ac6b-427a-b6f2-0e2f7848fa6b,08fe5e70-ac6b-427a-b6f2-0e2f7848fa6b,1,0,bef6081e-f377-41d6-83a1-b0e218a3fb46,bef6081e-f377-41d6-83a1-b0e218a3fb46,1,0,9b67bfd5-ef23-4205-b7ba-9466517e9999,9b67bfd5-ef23-4205-b7ba-9466517e9999,1,0,20082776-ce24-41c5-ae11-6fa9bc54db59,20082776-ce24-41c5-ae11-6fa9bc54db59,1,0,ea2c4c8e-23cc-4884-812e-1e959da48afc,ea2c4c8e-23cc-4884-812e-1e959da48afc,1,0,c61e4c12-178d-47aa-a070-333fe5450168,c61e4c12-178d-47aa-a070-333fe5450168,1,0,9474b4f1-b1bb-4fcf-acdb-a149a09b8490,9474b4f1-b1bb-4fcf-acdb-a149a09b8490,1,0,63fd620c-59a5-493c-a39e-457fad6fe35f,63fd620c-59a5-493c-a39e-457fad6fe35f,1,0,46b0a5b3-1fa7-44ff-a941-c6de47d36e77,46b0a5b3-1fa7-44ff-a941-c6de47d36e77,1,0,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,1,0,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,1,0,89888993-3b05-475e-ac76-3cd7ced93250,89888993-3b05-475e-ac76-3cd7ced93250,1,0,129f704b-cc63-4a4e-b6a7-9e53de4537a2,129f704b-cc63-4a4e-b6a7-9e53de4537a2,1,0,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,1,0,592f55e1-b004-44ef-878a-6c2016ccbeb0,592f55e1-b004-44ef-878a-6c2016ccbeb0,1,0,19add2bd-eede-4a05-901b-cf8ce49a638f,19add2bd-eede-4a05-901b-cf8ce49a638f,1,0,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,1,0,c7f544c6-488e-4178-af0d-d2ae07a8b89a,c7f544c6-488e-4178-af0d-d2ae07a8b89a,1,0,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,1,0,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,1,0,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,1,0,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,1,0,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,1,0,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,1,0,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,1,0,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,1,0,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,1,0,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,1,0,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1,0,9043894d-f89a-459f-a4ea-77fe3633aa91,9043894d-f89a-459f-a4ea-77fe3633aa91,1,0,e417e2ab-5e25-40a9-8dc2-9552a4fe1a38,e417e2ab-5e25-40a9-8dc2-9552a4fe1a38,1,0,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,1,0,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,1,0,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,1,0,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,1,0,8c4c7982-36cc-4dc9-b055-9954f61e6365,8c4c7982-36cc-4dc9-b055-9954f61e6365,1,0,ba51c7f5-0074-4c99-a27d-ddfd4bfcc068,ba51c7f5-0074-4c99-a27d-ddfd4bfcc068,1,0,5f3d5a05-a581-462d-96a2-2750ba0e0481,5f3d5a05-a581-462d-96a2-2750ba0e0481,1,0,477ab478-b336-4bac-898f-e20e3a4039b5,477ab478-b336-4bac-898f-e20e3a4039b5,1,0,a4d767a1-d2e6-4e0a-ab35-9207eef54998,a4d767a1-d2e6-4e0a-ab35-9207eef54998,1,0,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,1,0,cc3a7f15-4db6-445e-b282-f44d0460b7d3,cc3a7f15-4db6-445e-b282-f44d0460b7d3,1,0,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,1,0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,1,0,4f86b052-b81e-49b8-9fa8-82b2ecbc8e01,4f86b052-b81e-49b8-9fa8-82b2ecbc8e01,1,0,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,1,0,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,1,0,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,1,0,e4216976-2747-4078-81d4-8ffab668c1f7,e4216976-2747-4078-81d4-8ffab668c1f7,1,0,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,1,0,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,1,0,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,1,0,3b9c03bc-8517-498f-8052-e53854fb0753,3b9c03bc-8517-498f-8052-e53854fb0753,1,0,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,1,0,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,1,0,6c66ff27-19af-4728-95a8-463fd1c4dcd3,6c66ff27-19af-4728-95a8-463fd1c4dcd3,1,0,9ed2c756-80a1-4559-8494-b7a9b82a4519,9ed2c756-80a1-4559-8494-b7a9b82a4519,1,0,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,1,0,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,1,0,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,1,0,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,1,0,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,1,0,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,1,0,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,1,0,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,1,0,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,1,0,a57f6dc1-59d7-4311-8acd-65ce57a9f386,a57f6dc1-59d7-4311-8acd-65ce57a9f386,1,0,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,1,0,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,1,0,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,1,0,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,1,0,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,1,0,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,1,0,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,1,0,387d3bbf-cddd-4506-b14f-89c1f37adbbc,387d3bbf-cddd-4506-b14f-89c1f37adbbc,1,0,16392cf6-dd83-4df0-a54b-6efc29778a89,16392cf6-dd83-4df0-a54b-6efc29778a89,1,0,e693cdd0-8ead-4ba5-adec-86bab74ee7cd,e693cdd0-8ead-4ba5-adec-86bab74ee7cd,1,0,10db9f99-c7d1-4b16-9ea2-9bfc2aa4ddb5,10db9f99-c7d1-4b16-9ea2-9bfc2aa4ddb5,1,0,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,1,0,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,1,0,a1130128-cc48-4555-93a2-99e7f74f77dc,a1130128-cc48-4555-93a2-99e7f74f77dc,1,0,9b4b7424-1af7-4d80-8404-8819fcfeae75,9b4b7424-1af7-4d80-8404-8819fcfeae75,1,0,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,1,0,8947286f-ba4a-44e7-b805-2f096028dc4f,8947286f-ba4a-44e7-b805-2f096028dc4f,1,0,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,1,0,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,1,0,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,1,0,251ca8fe-09eb-45ca-be8b-0d8faf927009,251ca8fe-09eb-45ca-be8b-0d8faf927009,1,0,e353db15-71c5-4b68-9ffb-9800800a59dc,e353db15-71c5-4b68-9ffb-9800800a59dc,1,0,976d9ba7-d9c7-4a9e-ad5d-53cb5bca8984,976d9ba7-d9c7-4a9e-ad5d-53cb5bca8984,1,0,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,1,0,e05b6f44-8244-4e94-a6d3-57450f8b47dc,e05b6f44-8244-4e94-a6d3-57450f8b47dc,1,0,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,1,0,19b98b60-deb1-4642-8159-2a11332558e2,19b98b60-deb1-4642-8159-2a11332558e2,1,0,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,1,0,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,1,0,f60cb71a-f451-426a-aa3a-aa266b8da149,f60cb71a-f451-426a-aa3a-aa266b8da149,1,0,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,1,0,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,1,0,9059defa-047f-4dac-9749-3d0a6a77308a,9059defa-047f-4dac-9749-3d0a6a77308a,1,0,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,1,0,973609a2-5b5d-45c4-9606-a13d0de1a09b,973609a2-5b5d-45c4-9606-a13d0de1a09b,1,0,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,1,0,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,1,0,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,1,0,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,1,0,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,1,0,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,1,0,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,1,0,48cefa96-46c7-4870-a096-951dcbae479a,48cefa96-46c7-4870-a096-951dcbae479a,1,0,d74e01cc-941b-4974-8771-0bd2e0d86724,d74e01cc-941b-4974-8771-0bd2e0d86724,1,0,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,1,0,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,1,0,5e4ee280-3dd2-4f68-be6c-fb5343438817,5e4ee280-3dd2-4f68-be6c-fb5343438817,1,0,75d1b6df-ede3-4172-987f-fe1551f686ee,75d1b6df-ede3-4172-987f-fe1551f686ee,1,0,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,1,0,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,1,0,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,1,0,aae09896-3b22-4d7d-9059-e47660f8b88b,aae09896-3b22-4d7d-9059-e47660f8b88b,1,0,845530cd-36fb-44c3-b30a-730985c9ca2d,845530cd-36fb-44c3-b30a-730985c9ca2d,1,0,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,1,0,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,1,0,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,1,0,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,1,0,6527be82-a665-4f8a-818b-a35b96b3484b,6527be82-a665-4f8a-818b-a35b96b3484b,1,0,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,1,0,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,1,0,83e30f0b-67b2-411b-9624-ac4c4bd7f94a,83e30f0b-67b2-411b-9624-ac4c4bd7f94a,1,0,c79ba5a5-e6d9-4a3f-ab23-eca876607f7f,c79ba5a5-e6d9-4a3f-ab23-eca876607f7f,1,0,ce5549bd-ba99-4259-86a3-36521bad59f5,ce5549bd-ba99-4259-86a3-36521bad59f5,1,0,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,1,0,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,1,0,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,1,0,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,1,0,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,1,0,3f3f1b41-57a9-4a82-bdfa-89a6653479ab,3f3f1b41-57a9-4a82-bdfa-89a6653479ab,1,0,fd12fbe2-56a2-4c9e-a072-989d826a5ea3,fd12fbe2-56a2-4c9e-a072-989d826a5ea3,1,0,f38b6034-5246-42a7-8f3c-51eaf3e5399c,f38b6034-5246-42a7-8f3c-51eaf3e5399c,1,0,08552af7-3c44-42c6-94c5-63a2316127fc,08552af7-3c44-42c6-94c5-63a2316127fc,1,0,41f6f6d1-b7cf-4477-907b-ce69fc08c799,41f6f6d1-b7cf-4477-907b-ce69fc08c799,1,0,9f1a61dd-b04f-48ae-b0c0-17cf23bdb04b,9f1a61dd-b04f-48ae-b0c0-17cf23bdb04b,1,0,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,1,0,a300ecc3-8031-4a50-a17d-b08cf3a72139,a300ecc3-8031-4a50-a17d-b08cf3a72139,1,0,e7e78b7e-b103-40d6-8064-f84e2d86ca3d,e7e78b7e-b103-40d6-8064-f84e2d86ca3d,1,0,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,1,0,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,1,0,52f3e20c-1cf7-4284-a083-6539782f4bc3,52f3e20c-1cf7-4284-a083-6539782f4bc3,1,0,657b8663-713c-4a80-81e1-8c0166742a35,657b8663-713c-4a80-81e1-8c0166742a35,1,0,866438d1-1223-4768-9c96-e6cb12f1a4d5,866438d1-1223-4768-9c96-e6cb12f1a4d5,1,0,d416cc2a-425f-4c01-a550-5a755ed78cc8,d416cc2a-425f-4c01-a550-5a755ed78cc8,1,0,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,1,0,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,1,0,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,1,0,9039f720-5728-4918-87d5-8b2d07cabcfd,9039f720-5728-4918-87d5-8b2d07cabcfd,1,0,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,1,0,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,1,0,766c9bee-b0fc-4a7f-b88e-cd8c4aad73b8,766c9bee-b0fc-4a7f-b88e-cd8c4aad73b8,1,0,aaaa7d41-3399-41b5-b882-58af38121494,aaaa7d41-3399-41b5-b882-58af38121494,1,0,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,1,0,3705a086-46e6-4090-a52a-535908eea8a5,3705a086-46e6-4090-a52a-535908eea8a5,1,0,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,1,0,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,1,0,a6587758-f7af-4f85-81b4-4312c725824e,a6587758-f7af-4f85-81b4-4312c725824e,1,0,5d336d1e-24f9-404a-9671-3bcdc7c48a25,5d336d1e-24f9-404a-9671-3bcdc7c48a25,1,0,d508b3e9-4dac-40a3-9a0b-1cc76b4196ea,d508b3e9-4dac-40a3-9a0b-1cc76b4196ea,1,0,63470706-f14b-4733-87c2-d1173f5d7e7a,63470706-f14b-4733-87c2-d1173f5d7e7a,1,0,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,1,0,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,1,0,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,1,0,76cdcc51-0e6a-4f9c-a115-1864998c2add,76cdcc51-0e6a-4f9c-a115-1864998c2add,1,0,71c3e5d3-7504-433f-9d48-7c287b2b863b,71c3e5d3-7504-433f-9d48-7c287b2b863b,1,0,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,1,0,0d8c215d-1210-47a2-897d-a3257b9f849a,0d8c215d-1210-47a2-897d-a3257b9f849a,1,0,ea2e9a4e-eca1-4a6e-b7a6-8922a11334aa,ea2e9a4e-eca1-4a6e-b7a6-8922a11334aa,1,0,c971e0ba-53b8-4454-92f7-40b0d639058a,c971e0ba-53b8-4454-92f7-40b0d639058a,1,0,9d8496ea-fc0c-410d-994d-7480350d71d3,9d8496ea-fc0c-410d-994d-7480350d71d3,1,0,0f0456a8-ca04-4de4-9d9b-e8b0fdb8b860,0f0456a8-ca04-4de4-9d9b-e8b0fdb8b860,1,0,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,1,0,5b62e0d1-8dba-47db-8dbb-517ad935fa0d,5b62e0d1-8dba-47db-8dbb-517ad935fa0d,1,0,e7a63151-fc1a-4563-8768-26d854ab012b,e7a63151-fc1a-4563-8768-26d854ab012b,1,0,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,1,0,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,1,0,73c7750f-8291-4e19-8551-635cd6b94215,73c7750f-8291-4e19-8551-635cd6b94215,1,0,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,1,0,a1463001-f3d8-4064-95e4-cf49aedc2a8c,a1463001-f3d8-4064-95e4-cf49aedc2a8c,1,0,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,1,0,249b6436-bd44-4950-b118-7f40f7aaf794,249b6436-bd44-4950-b118-7f40f7aaf794,1,0,6a9f1485-21a4-41e8-b8a7-26340eff5085,6a9f1485-21a4-41e8-b8a7-26340eff5085,1,0,65dd4904-0837-4de5-a5e5-601151055d94,65dd4904-0837-4de5-a5e5-601151055d94,1,0,99c5e87a-f096-4315-8fbe-f596ea9c176f,99c5e87a-f096-4315-8fbe-f596ea9c176f,1,0,9dd57f32-90a1-4a1d-bc2a-c1b12461d963,9dd57f32-90a1-4a1d-bc2a-c1b12461d963,1,0,ce6d1259-af90-482b-b19a-405512321bd9,ce6d1259-af90-482b-b19a-405512321bd9,1,0,9b76ded4-814a-4267-99c5-2c8fb05ee352,9b76ded4-814a-4267-99c5-2c8fb05ee352,1,0,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,1,0,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,1,0,eb276904-cad7-4401-bb78-2d13946291f1,eb276904-cad7-4401-bb78-2d13946291f1,1,0,171a64b6-39d2-455f-b304-1c6ea8d85494,171a64b6-39d2-455f-b304-1c6ea8d85494,1,0,79ff04ac-4625-469b-916e-938f04de4dd2,79ff04ac-4625-469b-916e-938f04de4dd2,1,0,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,1,0,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,1,0,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,1,0,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,1,0,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,1,0,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,1,0,1e633034-6dcc-4564-9f40-348c32143314,1e633034-6dcc-4564-9f40-348c32143314,1,0,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,1,0,0b92cced-d818-400c-82b6-7726e912a478,0b92cced-d818-400c-82b6-7726e912a478,1,0,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,1,0,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,1,0,4766c40e-6330-4c1d-a64f-0c8c672886a4,4766c40e-6330-4c1d-a64f-0c8c672886a4,1,0,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,1,0,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,1,0,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,1,0,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1,0,7a944c45-9b3d-411f-b2ef-de3c896092bb,7a944c45-9b3d-411f-b2ef-de3c896092bb,1,0,d2762764-b5c0-4aeb-8e89-3371972f22d8,d2762764-b5c0-4aeb-8e89-3371972f22d8,1,0,54f3902b-f29a-4f04-8c9d-68c318fcd076,54f3902b-f29a-4f04-8c9d-68c318fcd076,1,0,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,1,0,323997ca-488d-4d84-aa44-da60b6b4d414,323997ca-488d-4d84-aa44-da60b6b4d414,1,0,50d3e00e-1a83-4bd5-91db-0561560caf42,50d3e00e-1a83-4bd5-91db-0561560caf42,1,0,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1,0,c8ba4901-7f70-4353-b039-d75f1cb3f5b7,c8ba4901-7f70-4353-b039-d75f1cb3f5b7,1,0,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,1,0,9f4d5fe5-9bda-4ba9-a313-db1ab0ea14d1,9f4d5fe5-9bda-4ba9-a313-db1ab0ea14d1,1,0,44afff59-0590-4929-93b8-7b49735f21b5,44afff59-0590-4929-93b8-7b49735f21b5,1,0,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,1,0,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,1,0,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,1,0,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,1,0,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,1,0,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,1,0,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,1,0,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,1,0,9892f922-8745-4164-a200-94b5edc1ea0a,9892f922-8745-4164-a200-94b5edc1ea0a,1,0,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,1,0,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,1,0,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,1,0,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,1,0,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,1,0,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,1,0,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,1,0,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,1,0,3e4361e9-2baf-407b-9320-b2a265b44e46,3e4361e9-2baf-407b-9320-b2a265b44e46,1,0,a5902ed4-a8f1-460e-aced-0094b2c384a3,a5902ed4-a8f1-460e-aced-0094b2c384a3,1,0,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,1,0,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,1,0,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,1,0,26986f8d-d56d-4641-9184-2632d0881cca,26986f8d-d56d-4641-9184-2632d0881cca,1,0,92bec607-7217-42f6-8eb9-ace759672336,92bec607-7217-42f6-8eb9-ace759672336,1,0,144676de-f369-49f1-bb21-d60e073936df,144676de-f369-49f1-bb21-d60e073936df,1,0,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,1,0,4d660fec-4a76-470e-bba9-3d031941b289,4d660fec-4a76-470e-bba9-3d031941b289,1,0,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,1,0,644cf757-bff9-4e2e-b72b-1e736c42d4c3,644cf757-bff9-4e2e-b72b-1e736c42d4c3,1,0,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,1,0,a2a51b70-9570-4f53-9d30-e9a9b099a475,a2a51b70-9570-4f53-9d30-e9a9b099a475,1,0,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,1,0,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,1,0,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,1,0,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,1,0,fdcbe67c-55fb-444d-bed8-cee956ca3530,fdcbe67c-55fb-444d-bed8-cee956ca3530,1,0,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,1,0,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,1,0,6ff5b3cb-efff-430d-bf0a-957405f116ca,6ff5b3cb-efff-430d-bf0a-957405f116ca,1,0,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,1,0,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,1,0,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,1,0,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,1,0,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,1,0,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,1,0,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,1,0,b8b267e3-75af-4140-b515-d99e8e748e84,b8b267e3-75af-4140-b515-d99e8e748e84,1,0,8014684f-e1f1-4163-9083-459a009c0aac,8014684f-e1f1-4163-9083-459a009c0aac,1,0,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,1,0,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,1,0,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,1,0,40c8b547-35d0-4dbd-8fa1-ba108c3022b1,40c8b547-35d0-4dbd-8fa1-ba108c3022b1,1,0,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,1,0,c0218ef0-4aa1-4ff1-963b-e6ab1001ae9e,c0218ef0-4aa1-4ff1-963b-e6ab1001ae9e,1,0,e55d259f-cfaa-46f9-92c4-687e1ff3b89d,e55d259f-cfaa-46f9-92c4-687e1ff3b89d,1,0,cf13e2d9-72a0-47c0-bae2-f674024bbdb2,cf13e2d9-72a0-47c0-bae2-f674024bbdb2,1,0,62d4d073-80df-41e6-a915-43a4f5575206,62d4d073-80df-41e6-a915-43a4f5575206,1,0,145ecede-baae-4725-832a-5387794922ed,145ecede-baae-4725-832a-5387794922ed,1,0,540be4e1-6eae-48e2-a645-8bd0a1259c65,540be4e1-6eae-48e2-a645-8bd0a1259c65,1,0,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,1,0,a1e494f8-96a4-41bd-9234-b87e8d8742c5,a1e494f8-96a4-41bd-9234-b87e8d8742c5,1,0,5c6b9fb5-7d29-4161-a81b-7c618ca07a47,5c6b9fb5-7d29-4161-a81b-7c618ca07a47,1,0,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,1,0,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,1,0,83ead93b-4ff6-487d-934e-25088944fccc,83ead93b-4ff6-487d-934e-25088944fccc,1,0,764c76cc-0473-4633-868d-02f96aa43c10,764c76cc-0473-4633-868d-02f96aa43c10,1,0,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,1,0,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,1,0,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,1,0,9416a741-5106-454e-b953-81f3d99d5e71,9416a741-5106-454e-b953-81f3d99d5e71,1,0,30f6aedf-946f-400c-822d-5fa375b8fb1d,30f6aedf-946f-400c-822d-5fa375b8fb1d,1,0,46e313f7-54da-4884-89e8-cdba6ae30d30,46e313f7-54da-4884-89e8-cdba6ae30d30,1,0,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,1,0,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,1,0,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,1,0,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,1,0,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,1,0,61789ea5-aad2-4b3b-a1c7-3ff7409379eb,61789ea5-aad2-4b3b-a1c7-3ff7409379eb,1,0,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,1,0,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1,0,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,1,0,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,1,0,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,1,0,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,1,0,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,1,0,5a088468-4065-4e0c-9b84-1162de8d3fdd,5a088468-4065-4e0c-9b84-1162de8d3fdd,1,0,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,1,0,f3ae1a2c-e0ca-461b-ba5a-76a6423c6325,f3ae1a2c-e0ca-461b-ba5a-76a6423c6325,1,0,b233d29c-3979-4ef6-b7f0-89ca88f65e82,b233d29c-3979-4ef6-b7f0-89ca88f65e82,1,0,684ca876-644e-43f5-b96a-1561fb5b1935,684ca876-644e-43f5-b96a-1561fb5b1935,1,0,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,1,0,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,1,0,86a9d7ab-7a96-4c58-8073-ca4b2b99cceb,86a9d7ab-7a96-4c58-8073-ca4b2b99cceb,1,0,1ae1a239-0d88-4467-af33-32bcfe6cf61d,1ae1a239-0d88-4467-af33-32bcfe6cf61d,1,0,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,1,0,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,1,0,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,1,0,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,1,0,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,1,0,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,1,0,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,1,0,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,1,0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,1,0,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,1,0,259cb8f5-9e78-4b2f-941b-ccb4b1112c8b,259cb8f5-9e78-4b2f-941b-ccb4b1112c8b,1,0,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,1,0,73c1a829-0191-486b-97a0-7f333c6f8011,73c1a829-0191-486b-97a0-7f333c6f8011,1,0,db28f23f-a771-46c0-96e8-5e4389b28b8b,db28f23f-a771-46c0-96e8-5e4389b28b8b,1,0,5504f5d1-35d8-4a47-a0e1-003fe00395c1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,1,0,56242b05-d722-4d4a-82d9-517e0e169d0b,56242b05-d722-4d4a-82d9-517e0e169d0b,1,0,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,1,0,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,1,0,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,1,0,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,1,0,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,1,0,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,1,0,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,1,0,ca797560-8802-4bdc-b21f-7a7fd795beae,ca797560-8802-4bdc-b21f-7a7fd795beae,1,0,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,1,0,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,1,0,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,1,0,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,1,0,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,1,0,c1c62215-41b8-40bc-a806-1347db5b03e9,c1c62215-41b8-40bc-a806-1347db5b03e9,1,0,a24322f3-c7a5-4b25-bad6-9c75712a3e58,a24322f3-c7a5-4b25-bad6-9c75712a3e58,1,0,679d2b3b-a354-4dec-b49d-ab1163756e3a,679d2b3b-a354-4dec-b49d-ab1163756e3a,1,0,665e96bc-8ec1-4008-b9bd-db95a234b9b8,665e96bc-8ec1-4008-b9bd-db95a234b9b8,1,0,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,1,0,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,1,0,9bf55587-1ffe-42bc-b8e8-3f956956f689,9bf55587-1ffe-42bc-b8e8-3f956956f689,1,0,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,1,0,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,1,0,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,1,0,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,1,0,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,1,0,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,1,0,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,1,0,4bb0f7c3-62f3-4352-9bc8-e243dd18fe4a,4bb0f7c3-62f3-4352-9bc8-e243dd18fe4a,1,0,bc106ef9-3eeb-40d4-aa59-ae1855ba1744,bc106ef9-3eeb-40d4-aa59-ae1855ba1744,1,0,73d8b319-9bea-4638-a602-23c12f37c227,73d8b319-9bea-4638-a602-23c12f37c227,1,0,a43e9de0-2921-4c58-a5f8-7446258be967,a43e9de0-2921-4c58-a5f8-7446258be967,1,0,307656e3-df7f-46e7-946c-bbd439265c95,307656e3-df7f-46e7-946c-bbd439265c95,1,0,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,1,0,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,1,0,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,1,0,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,1,0,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,1,0,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,1,0,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,1,0,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,1,0,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,1,0,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,1,0,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,1,0,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,1,0,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,1,0,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,1,0,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,1,0,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,1,0,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,1,0,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,1,0,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,1,0,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,1,0,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,1,0,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,1,0,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,1,0,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,1,0,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,1,0,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,1,0,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,1,0,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,1,0,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,1,0,d99991b8-3a81-4e18-b0ad-05fc3e3a199b,d99991b8-3a81-4e18-b0ad-05fc3e3a199b,1,0,dd383422-dddb-4a81-9326-015fd345b5c1,dd383422-dddb-4a81-9326-015fd345b5c1,1,0,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,1,0,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,1,0,aa299fc6-051f-487c-ada4-451e08c4763c,aa299fc6-051f-487c-ada4-451e08c4763c,1,0,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,1,0,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,1,0,322645d4-e3fb-467b-a55d-d8e74cff2ea3,322645d4-e3fb-467b-a55d-d8e74cff2ea3,1,0,0f314b6b-5ed1-46ed-bdfd-cf53330c2783,0f314b6b-5ed1-46ed-bdfd-cf53330c2783,1,0,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,1,0,5ea29362-0ab7-4ca3-865e-bf93db5ca24b,5ea29362-0ab7-4ca3-865e-bf93db5ca24b,1,0,64ff6058-c6f3-4682-b9a1-11ec438fa447,64ff6058-c6f3-4682-b9a1-11ec438fa447,1,0,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,1,0,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,1,0,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,1,0,7fe61c5d-30bc-440d-9e40-12ff3b296616,7fe61c5d-30bc-440d-9e40-12ff3b296616,1,0,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,1,0,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,1,0,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,1,0,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,1,0,13dee5d8-f165-48de-9ccb-3ef0239f4b27,13dee5d8-f165-48de-9ccb-3ef0239f4b27,1,0,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,1,0,8a13c899-1659-48cf-9aa2-07ca99547b7b,8a13c899-1659-48cf-9aa2-07ca99547b7b,1,0,eb3f959c-94a4-4e77-b9f9-e81954254079,eb3f959c-94a4-4e77-b9f9-e81954254079,1,0,71dfde27-3762-4dd0-9252-6e703ce1b101,71dfde27-3762-4dd0-9252-6e703ce1b101,1,0,d8fc4644-5351-443c-8b5d-5de2c4b855d1,d8fc4644-5351-443c-8b5d-5de2c4b855d1,1,0,0f039952-09d3-49c8-b909-e8333a3fc8f9,0f039952-09d3-49c8-b909-e8333a3fc8f9,1,0,9cd2fc77-a4b0-457e-a6b0-63dbf521bf90,9cd2fc77-a4b0-457e-a6b0-63dbf521bf90,1,0,8363bd46-1ea5-44f0-858a-05bc03f6020e,8363bd46-1ea5-44f0-858a-05bc03f6020e,1,0,a321b6db-391b-4c65-8d27-ce486d10055e,a321b6db-391b-4c65-8d27-ce486d10055e,1,0,800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b,800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b,1,0,99387869-f8b1-4269-bd26-e39380d17b69,99387869-f8b1-4269-bd26-e39380d17b69,1,0,4b2acdb9-fefd-4735-9dfd-d7d141967f3c,4b2acdb9-fefd-4735-9dfd-d7d141967f3c,1,0,bc07d643-a044-4882-b95b-2173a197fd0e,bc07d643-a044-4882-b95b-2173a197fd0e,1,0,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,1,0,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,1,0,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,1,0,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,1,0,826c2821-147d-4aaf-910c-acfbdb58a29f,826c2821-147d-4aaf-910c-acfbdb58a29f,1,0,36d6b0e1-5e10-408a-8eb1-09839e57690f,36d6b0e1-5e10-408a-8eb1-09839e57690f,1,0,6423b849-7ca4-4501-8856-445157d7e5df,6423b849-7ca4-4501-8856-445157d7e5df,1,0,0819e2b0-1eb0-41b3-ab89-0974bd926fb6,0819e2b0-1eb0-41b3-ab89-0974bd926fb6,1,0,e814287f-1c13-4f74-9507-d22a62394fd2,e814287f-1c13-4f74-9507-d22a62394fd2,1,0,417ac987-7369-45af-b670-fdffb048f33d,417ac987-7369-45af-b670-fdffb048f33d,1,0,640a5d72-dbc7-421b-afdb-cc3a4622ae04,640a5d72-dbc7-421b-afdb-cc3a4622ae04,1,0,79da84c1-5ac2-4472-8eb9-f0484b9582c2,79da84c1-5ac2-4472-8eb9-f0484b9582c2,1,0,2d0b161b-7d69-4ec4-a483-79bd458cb62c,2d0b161b-7d69-4ec4-a483-79bd458cb62c,1,0,f178bc1b-ebea-4fa9-8861-fe0d91f103e4,f178bc1b-ebea-4fa9-8861-fe0d91f103e4,1,0,e33a9c94-7e98-4b38-ba20-4546a90b2937,e33a9c94-7e98-4b38-ba20-4546a90b2937,1,0,1610e73c-58df-41cc-8349-51b920806821,1610e73c-58df-41cc-8349-51b920806821,1,0,ae37f465-1ee5-4f06-a834-deea9e9e0eb3,ae37f465-1ee5-4f06-a834-deea9e9e0eb3,1,0,c6ccf82f-f130-4037-9e89-1e0365b996a4,c6ccf82f-f130-4037-9e89-1e0365b996a4,1,0,c532963e-0d92-44b9-9cfc-43ed2744ccf9,c532963e-0d92-44b9-9cfc-43ed2744ccf9,1,0,6aff2855-24d4-4f90-b617-53326efdd1bd,6aff2855-24d4-4f90-b617-53326efdd1bd,1,0,0107a9c7-4c85-49c4-918a-925d85d57a0b,0107a9c7-4c85-49c4-918a-925d85d57a0b,1,0,6e1efa55-969b-4c2b-8af2-b11d672db5f0,6e1efa55-969b-4c2b-8af2-b11d672db5f0,1,0,e5b578a1-e33b-4d49-8064-427aa928a844,e5b578a1-e33b-4d49-8064-427aa928a844,1,0,f74e97ad-fef6-4122-a056-86f2d59dfdaf,f74e97ad-fef6-4122-a056-86f2d59dfdaf,1,0,df1ef691-1e86-4a80-8671-53b3d4504bfb,df1ef691-1e86-4a80-8671-53b3d4504bfb,1,0,474b9918-23da-4289-91a9-9115526c9b5d,474b9918-23da-4289-91a9-9115526c9b5d,1,0,1cf7be60-fd84-430d-b1b5-5619c51b8b3f,1cf7be60-fd84-430d-b1b5-5619c51b8b3f,1,0,60aa9d44-5986-490e-8093-f65e194b3607,60aa9d44-5986-490e-8093-f65e194b3607,1,0,a36dee5e-7184-4caf-bf46-3977b165093b,a36dee5e-7184-4caf-bf46-3977b165093b,1,0,aa3c61a7-c905-4b5a-a44d-e2ac5d79158a,aa3c61a7-c905-4b5a-a44d-e2ac5d79158a,1,0,182916b2-972b-4e39-93ba-d45aa7a195f5,182916b2-972b-4e39-93ba-d45aa7a195f5,1,0,2b654a53-7ce8-421f-aaf5-aa1451d91415,2b654a53-7ce8-421f-aaf5-aa1451d91415,1,0,30e55306-ea5c-4ef4-9903-ea030afa3d85,30e55306-ea5c-4ef4-9903-ea030afa3d85,1,0,234c1a72-8349-472a-8373-2a25ce6252f2,234c1a72-8349-472a-8373-2a25ce6252f2,1,0,b1ccb9f7-11ff-4ad2-8806-d64de84662f0,b1ccb9f7-11ff-4ad2-8806-d64de84662f0,1,0,539e0db9-be24-4086-9632-af20553ee50f,539e0db9-be24-4086-9632-af20553ee50f,1,0,862e2759-5311-4c68-8977-86133bcf8c0e,862e2759-5311-4c68-8977-86133bcf8c0e,1,0,b9adeb51-a009-4e83-85f8-bfa1547429d6,b9adeb51-a009-4e83-85f8-bfa1547429d6,1,0,7ac85789-9c69-40b6-9130-94c40ed440d4,7ac85789-9c69-40b6-9130-94c40ed440d4,1,0,0f77d06f-f736-451e-9e6b-28868e48f3ed,0f77d06f-f736-451e-9e6b-28868e48f3ed,1,0,ac9f4c2e-316b-4f96-8fe6-fb5a5a7e48ed,ac9f4c2e-316b-4f96-8fe6-fb5a5a7e48ed,1,0,da808c0e-b1b0-4d46-8c63-2bbe7d0dca9d,da808c0e-b1b0-4d46-8c63-2bbe7d0dca9d,1,0,b848d70a-9d08-4b1a-8df1-17697432516d,b848d70a-9d08-4b1a-8df1-17697432516d,1,0,9a30b92d-0c5b-4e11-a741-2b6efa8ac229,9a30b92d-0c5b-4e11-a741-2b6efa8ac229,1,0,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,1,0,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,1,0,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,1,0,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,1,0,e8bec681-d269-41ba-9184-556cbcc27d74,e8bec681-d269-41ba-9184-556cbcc27d74,1,0,b8aaef91-f72c-4127-a494-771c13694ca4,b8aaef91-f72c-4127-a494-771c13694ca4,1,0,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,1,0,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,1,0,3e090261-4aa2-4ece-9f77-62df83c890b3,3e090261-4aa2-4ece-9f77-62df83c890b3,1,0,9292034c-24e8-49a7-9b77-7974e117847d,9292034c-24e8-49a7-9b77-7974e117847d,1,0,3327b7d4-62fc-44cc-83b4-c449bfa4e706,3327b7d4-62fc-44cc-83b4-c449bfa4e706,1,0,43ecee25-68eb-48cf-bbaa-aee71052438f,43ecee25-68eb-48cf-bbaa-aee71052438f,1,0,93799f8b-0188-4546-8815-35e733bcc2b1,93799f8b-0188-4546-8815-35e733bcc2b1,1,0,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,1,0,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,1,0,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,1,0,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,1,0,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,1,0,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,1,0,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,1,0,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,1,0,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,1,0,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,1,0,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,1,0,1b4feda1-e555-4b85-b236-b21153a7246f,1b4feda1-e555-4b85-b236-b21153a7246f,1,0,61d3cef4-2c42-417d-a762-a2d2f5a28924,61d3cef4-2c42-417d-a762-a2d2f5a28924,1,0,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,1,0,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,1,0,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,1,0,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,1,0,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,1,0,7ab6acda-6732-4582-8092-d43f9a98a28d,7ab6acda-6732-4582-8092-d43f9a98a28d,1,0,5ab1d405-bfc3-4440-8cdd-3a63013b064d,5ab1d405-bfc3-4440-8cdd-3a63013b064d,1,0,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,1,0,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,1,0,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,1,0,6bcba052-4d81-409d-b1a2-eed6be6fb024,6bcba052-4d81-409d-b1a2-eed6be6fb024,1,0,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,1,0,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,1,0,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,1,0,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,1,0,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,1,0,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,1,0,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,1,0,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,1,0,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,1,0,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,1,0,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,1,0,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,1,0,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,1,0,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,1,0,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,1,0,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,1,0,093332f5-3eb4-478c-ac95-59dcdc96765a,093332f5-3eb4-478c-ac95-59dcdc96765a,1,0,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,1,0,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,1,0,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,1,0,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,1,0,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,1,0,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,1,0,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,1,0,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,1,0,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,1,0,e72e59c0-391d-497e-9407-063e0edf573e,e72e59c0-391d-497e-9407-063e0edf573e,1,0,ae8a1e69-ee1c-4efa-8d63-0279b18617f6,ae8a1e69-ee1c-4efa-8d63-0279b18617f6,1,0,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,1,0,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,1,0,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,1,0,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,1,0,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,1,0,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,1,0,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,1,0,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,1,0,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,1,0,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,1,0,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,1,0,82e8ac21-c2aa-47de-89ae-ea6cc10cc862,82e8ac21-c2aa-47de-89ae-ea6cc10cc862,1,0,13b27ec3-2be9-4959-92e5-94ba7bb64f03,13b27ec3-2be9-4959-92e5-94ba7bb64f03,1,0,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,1,0,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,1,0,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,1,0,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,1,0,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,1,0,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,1,0,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,1,0,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,1,0,245814f7-028c-4c13-98eb-15412e851f81,245814f7-028c-4c13-98eb-15412e851f81,1,0,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,1,0,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,1,0,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,1,0,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,1,0,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,1,0,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,1,0,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,1,0,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,1,0,11c5930d-f882-46bd-9e7b-63e5344f6604,11c5930d-f882-46bd-9e7b-63e5344f6604,1,0,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,1,0,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,1,0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,1,0,83f51efe-e2af-459a-b59f-2c036124ac23,83f51efe-e2af-459a-b59f-2c036124ac23,1,0,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,1,0,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,1,0,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,1,0,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,1,0,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,1,0,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,1,0,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,1,0,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,1,0,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,1,0,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,1,0,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,1,0,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,1,0,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,1,0,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,1,0,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,1,0,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,1,0,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,1,0,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,1,0,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,1,0,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,1,0,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,1,0,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,1,0,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,1,0,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,1,0,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,1,0,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,1,0,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,1,0,f9950ab5-1077-4033-bbbf-53899a1bcf33,f9950ab5-1077-4033-bbbf-53899a1bcf33,1,0,8f16763b-86f0-4ad0-b786-cce7dcb3460e,8f16763b-86f0-4ad0-b786-cce7dcb3460e,1,0,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,1,0,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,1,0,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,1,0,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,1,0,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,1,0,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,1,0,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1,0,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,1,0,7ebf99c3-33d2-4e4c-ac45-ca4ed0c3c100,7ebf99c3-33d2-4e4c-ac45-ca4ed0c3c100,1,0,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,1,0,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,1,0,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,1,0,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,1,0,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,1,0,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,1,0,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,1,0,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,1,0,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,1,0,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,1,0,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,1,0,35828c88-f1ec-42e7-b189-78748931ee4a,35828c88-f1ec-42e7-b189-78748931ee4a,1,0,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,1,0,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1,0,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,1,0,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,1,0,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,1,0,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,1,0,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,1,0,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,1,0,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,1,0,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,1,0,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,1,0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,1,0,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,1,0,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,1,0,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,1,0,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,1,0,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,1,0,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,1,0,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,1,0,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,1,0,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,1,0,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,1,0,67a04d72-afea-487a-b629-e4b7dfc1df32,67a04d72-afea-487a-b629-e4b7dfc1df32,1,0,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,1,0,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,1,0,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,1,0,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,1,0,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,1,0,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,1,0,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,1,0,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,1,0,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,1,0,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,1,0,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,1,0,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,1,0,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,1,0,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,1,0,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,1,0,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,1,0,8f09cbed-6f24-461f-9b35-31c64310e74a,8f09cbed-6f24-461f-9b35-31c64310e74a,1,0,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,1,0,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,1,0,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,1,0,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,1,0,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,1,0,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,1,0,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,1,0,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,1,0,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,1,0,211d226f-dac6-43d5-8720-952da4339e35,211d226f-dac6-43d5-8720-952da4339e35,1,0,df67cdcd-20ff-46d4-902b-dc4d81ee46bd,df67cdcd-20ff-46d4-902b-dc4d81ee46bd,1,0,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,1,0,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,1,0,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,1,0,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,1,0,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,1,0,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,1,0,463b8966-a5f9-4a80-82b9-1608a1622e13,463b8966-a5f9-4a80-82b9-1608a1622e13,1,0,f02e807c-6cd3-4a4f-8dad-73bd56ee98ff,f02e807c-6cd3-4a4f-8dad-73bd56ee98ff,1,0,eefd00fe-3241-498f-aeb4-d429a86ab563,eefd00fe-3241-498f-aeb4-d429a86ab563,1,0,802d3489-318f-467d-a9f4-d7c644edac60,802d3489-318f-467d-a9f4-d7c644edac60,1,0,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,1,0,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,1,0,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,1,0,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,1,0,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,1,0,01cb357c-af28-4855-afae-45b6df19b344,01cb357c-af28-4855-afae-45b6df19b344,1,0,26e58429-1e08-454a-b4d7-2470390149fb,26e58429-1e08-454a-b4d7-2470390149fb,1,0,daa42bf5-9c32-4913-bc27-38f77ccc1a9f,daa42bf5-9c32-4913-bc27-38f77ccc1a9f,1,0,7620b61a-b0d1-4c71-bc80-72c48e17b96d,7620b61a-b0d1-4c71-bc80-72c48e17b96d,1,0,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,1,0,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,1,0,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,1,0,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,1,0,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,1,0,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,1,0,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,1,0,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,1,0,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,1,0,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,1,0,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,1,0,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,1,0,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,1,0,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,1,0,aa509aa3-dd45-41f3-82c7-59662c2e2c47,aa509aa3-dd45-41f3-82c7-59662c2e2c47,1,0,c4552529-e69e-4c5c-bd66-04b2f7dac281,c4552529-e69e-4c5c-bd66-04b2f7dac281,1,0,381b49ba-793a-4418-9fd4-598844fb72a6,381b49ba-793a-4418-9fd4-598844fb72a6,1,0,1aee302d-df31-49ea-b542-436dc1d79ae1,1aee302d-df31-49ea-b542-436dc1d79ae1,1,0,593509da-d33c-49ff-a62c-a28cbc4651c1,593509da-d33c-49ff-a62c-a28cbc4651c1,1,0,5e346a0b-a322-4565-adb9-70131fb05fa3,5e346a0b-a322-4565-adb9-70131fb05fa3,1,0,9a69c559-194b-4f74-9879-82740260f5f6,9a69c559-194b-4f74-9879-82740260f5f6,1,0,93bf1dcf-670d-4c8b-bdbf-e43c2edf8056,93bf1dcf-670d-4c8b-bdbf-e43c2edf8056,1,0,8a06f980-78f3-42f4-9d96-da2e0f0f36a7,8a06f980-78f3-42f4-9d96-da2e0f0f36a7,1,0,fee2aa74-7a81-4ab2-a457-2edf8ac1aa2d,fee2aa74-7a81-4ab2-a457-2edf8ac1aa2d,1,0,2e19fb7b-270f-4181-b4a1-640280bbbc5c,2e19fb7b-270f-4181-b4a1-640280bbbc5c,1,0,cf69b045-665d-4f6c-827f-5044beacd125,cf69b045-665d-4f6c-827f-5044beacd125,1,0,aa773eef-0c4a-49be-9f5e-9131bc041415,aa773eef-0c4a-49be-9f5e-9131bc041415,1,0,9b31e474-01d4-4c3b-a633-3a2ff3917d62,9b31e474-01d4-4c3b-a633-3a2ff3917d62,1,0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1,0,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,1,0,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,1,0,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,1,0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,1,0,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,1,0,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,1,0,b3f188f4-d83e-4e97-b7d3-fc384b46a80a,b3f188f4-d83e-4e97-b7d3-fc384b46a80a,1,0,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,1,0,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,1,0,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,1,0,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,1,0,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,1,0,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,1,0,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,1,0,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,1,0,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,1,0,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,1,0,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,1,0,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,1,0,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,1,0,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,1,0,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,1,0,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,1,0,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,1,0,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,1,0,37e3d914-643e-4963-b4a0-7bc6727c0c9b,37e3d914-643e-4963-b4a0-7bc6727c0c9b,1,0,b6902500-3e03-4e83-a077-00500abc00b6,b6902500-3e03-4e83-a077-00500abc00b6,1,0,d253aa54-a447-44aa-bb13-82fd1ce22af4,d253aa54-a447-44aa-bb13-82fd1ce22af4,1,0,8936f114-7a0e-4a4c-8752-ccacab410778,8936f114-7a0e-4a4c-8752-ccacab410778,1,0,55649242-42fd-468f-a1e4-f6cd8871f7a4,55649242-42fd-468f-a1e4-f6cd8871f7a4,1,0,980e0883-cd8f-48c8-896f-ef185650f5c2,980e0883-cd8f-48c8-896f-ef185650f5c2,1,0,06ca1680-e641-499c-94ad-2d5ce5561747,06ca1680-e641-499c-94ad-2d5ce5561747,1,0,35bbf75b-99d0-447b-acb0-a3d2c98bea56,35bbf75b-99d0-447b-acb0-a3d2c98bea56,1,0,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,1,0,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,1,0,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,1,0,d3b09b09-df2d-40e5-86ce-84dab4898231,d3b09b09-df2d-40e5-86ce-84dab4898231,1,0,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,1,0,cd869887-0b0e-43db-8b51-04fe4a1341d5,cd869887-0b0e-43db-8b51-04fe4a1341d5,1,0,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,1,0,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,1,0,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,1,0,cd8fd85f-f02e-4f11-b4b4-40670febfaca,cd8fd85f-f02e-4f11-b4b4-40670febfaca,1,0,3f023afb-c02a-42ee-9afe-0f47ef3fe721,3f023afb-c02a-42ee-9afe-0f47ef3fe721,1,0,d7fe80d3-7fcf-427e-a991-5384f0c3947e,d7fe80d3-7fcf-427e-a991-5384f0c3947e,1,0,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,1,0,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,1,0,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,1,0,16939af9-e459-43da-8e0d-5d5891af6e0c,16939af9-e459-43da-8e0d-5d5891af6e0c,1,0,1d736a09-6c8f-433a-bf5b-201996bf4c62,1d736a09-6c8f-433a-bf5b-201996bf4c62,1,0,157988ad-d482-41df-b3e3-f2a0383d7130,157988ad-d482-41df-b3e3-f2a0383d7130,1,0,33af87a9-db69-41da-a33a-0435da2155e3,33af87a9-db69-41da-a33a-0435da2155e3,1,0,c95831b4-7d1d-4a9a-b5d0-caa03c4f4eca,c95831b4-7d1d-4a9a-b5d0-caa03c4f4eca,1,0,81b63f1d-2c65-4efb-8599-8a4d97b612ab,81b63f1d-2c65-4efb-8599-8a4d97b612ab,1,0,4b13a2c6-a6ce-47a0-8d9e-1a5dbe8d4b00,4b13a2c6-a6ce-47a0-8d9e-1a5dbe8d4b00,1,0,d1dde981-615a-461f-b0c5-a85f51003a2c,d1dde981-615a-461f-b0c5-a85f51003a2c,1,0,f5970c48-63d7-4064-bdfc-482b72939347,f5970c48-63d7-4064-bdfc-482b72939347,1,0,5c8039c0-34d8-4443-bd8f-dfe3dc2977a8,5c8039c0-34d8-4443-bd8f-dfe3dc2977a8,1,0,210972af-8687-4526-b288-60e7ee76cd61,210972af-8687-4526-b288-60e7ee76cd61,1,0,335f379a-2974-44ce-a668-e7ffe2ce6263,335f379a-2974-44ce-a668-e7ffe2ce6263,1,0,7edd75a2-9d03-4330-9185-28d0f0d4a2e4,7edd75a2-9d03-4330-9185-28d0f0d4a2e4,1,0,f7cc4f9e-cf9a-41f5-865f-d64108b981a5,f7cc4f9e-cf9a-41f5-865f-d64108b981a5,1,0,b58f8947-344c-4902-832c-d8004da55c34,b58f8947-344c-4902-832c-d8004da55c34,1,0,35cccc1d-3d67-4d39-aa79-2c30a5347587,35cccc1d-3d67-4d39-aa79-2c30a5347587,1,0,b6ee01eb-31ab-4f39-b4ff-37a04e3c7f35,b6ee01eb-31ab-4f39-b4ff-37a04e3c7f35,1,0,0776dfb2-67e0-4e11-9f94-abde790ff7e2,0776dfb2-67e0-4e11-9f94-abde790ff7e2,1,0,9c92b833-7406-48e2-9f59-69d575a3898f,9c92b833-7406-48e2-9f59-69d575a3898f,1,0,0cc5334f-8147-455c-8262-540324415812,0cc5334f-8147-455c-8262-540324415812,1,0,f3c4e6db-7c4e-4027-8bfd-f7854d566fc1,f3c4e6db-7c4e-4027-8bfd-f7854d566fc1,1,0,0eeb2f75-7092-4487-891f-cdbc9aa978cb,0eeb2f75-7092-4487-891f-cdbc9aa978cb,1,0,4ac60443-c7cb-492f-98b4-7e48bf9bfaa6,4ac60443-c7cb-492f-98b4-7e48bf9bfaa6,1,0,22979d50-ea57-4fab-9673-1b537838aead,22979d50-ea57-4fab-9673-1b537838aead,1,0,14676ee5-c247-46c6-a37e-c4362de79bb9,14676ee5-c247-46c6-a37e-c4362de79bb9,1,0,9fa36fe3-814e-4472-94ee-5d9d2b230b24,9fa36fe3-814e-4472-94ee-5d9d2b230b24,1,0,4b59dc62-0352-45a8-b33b-c42f4eea75ee,4b59dc62-0352-45a8-b33b-c42f4eea75ee,1,0,ea8a50ce-f09c-49f7-be58-ff2864e4eaa3,ea8a50ce-f09c-49f7-be58-ff2864e4eaa3,1,0,2020d672-bef4-4b30-885e-7f41364e412b,2020d672-bef4-4b30-885e-7f41364e412b,1,0,c292ddbc-9402-4c43-93d8-f8efafa6456e,c292ddbc-9402-4c43-93d8-f8efafa6456e,1,0,0281cbd6-972d-4632-9a6a-f8791e2534ee,0281cbd6-972d-4632-9a6a-f8791e2534ee,1,0,bae01f18-b6f3-44e4-93c3-ffcb3ef01b98,bae01f18-b6f3-44e4-93c3-ffcb3ef01b98,1,0,98d66bf0-617a-40aa-97bd-896d37a966ab,98d66bf0-617a-40aa-97bd-896d37a966ab,1,0,1847bb2f-8309-4c49-b752-ef7ec16d4230,1847bb2f-8309-4c49-b752-ef7ec16d4230,1,0,ca23f432-e2a3-4385-8cc1-7e9c96f9d7a1,ca23f432-e2a3-4385-8cc1-7e9c96f9d7a1,1,0,e1856045-f394-45b8-9f0c-298812f1f514,e1856045-f394-45b8-9f0c-298812f1f514,1,0,eb175c1d-7fcb-4807-82e3-688639468116,eb175c1d-7fcb-4807-82e3-688639468116,1,0,4ed9c099-700f-409b-bd91-e24719046953,4ed9c099-700f-409b-bd91-e24719046953,1,0,85b935b4-5eec-40cf-9d99-02cb3f599492,85b935b4-5eec-40cf-9d99-02cb3f599492,1,0,5764a412-4a20-4b2e-9905-ce74a9cac3ae,5764a412-4a20-4b2e-9905-ce74a9cac3ae,1,0,c4330791-d8f7-400f-b270-dee567e7a695,c4330791-d8f7-400f-b270-dee567e7a695,1,0,aab8ec4d-51de-4c1a-9794-266c119332d1,aab8ec4d-51de-4c1a-9794-266c119332d1,1,0,77cb6e52-37a9-423c-8260-6998161adcb5,77cb6e52-37a9-423c-8260-6998161adcb5,1,0,d903569d-911d-4277-a26f-afe2bf67eb09,d903569d-911d-4277-a26f-afe2bf67eb09,1,0,b5ac7de5-565f-4637-b267-dde3637e336b,b5ac7de5-565f-4637-b267-dde3637e336b,1,0,d4a6ab09-259f-4476-834c-a2b57cdeac05,d4a6ab09-259f-4476-834c-a2b57cdeac05,1,0,a56ff7f4-2259-455f-b707-b98aacd7d0b2,a56ff7f4-2259-455f-b707-b98aacd7d0b2,1,0,8c9636c3-0a84-4575-b4c7-6d8bb588e1b0,8c9636c3-0a84-4575-b4c7-6d8bb588e1b0,1,0,76e03401-7c07-4037-a464-d7377852de1d,76e03401-7c07-4037-a464-d7377852de1d,1,0,dc8239e8-fddf-411e-b51a-4230b63236cd,dc8239e8-fddf-411e-b51a-4230b63236cd,1,0,3b861376-2864-4de8-ba59-2a2835d7eaf6,3b861376-2864-4de8-ba59-2a2835d7eaf6,1,0,02910dcd-9e66-4239-a421-8067faf59577,02910dcd-9e66-4239-a421-8067faf59577,1,0,76d5a67f-bb11-4937-a66d-cdce28165562,76d5a67f-bb11-4937-a66d-cdce28165562,1,0,b99a23a5-bfbf-46ec-8268-ff89afdfc63a,b99a23a5-bfbf-46ec-8268-ff89afdfc63a,1,0,cdb93924-62ce-4268-9915-e6c67c1b9cb8,cdb93924-62ce-4268-9915-e6c67c1b9cb8,1,0,1139b6c7-7b55-45b4-98cf-ccac3bfaaa6c,1139b6c7-7b55-45b4-98cf-ccac3bfaaa6c,1,0,33c39990-f4fc-4629-83ba-b43b05a40ca6,33c39990-f4fc-4629-83ba-b43b05a40ca6,1,0,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,1,0,208c7b8c-3df9-4441-8ebf-34ffa81572a2,208c7b8c-3df9-4441-8ebf-34ffa81572a2,1,0,8c17fd7c-74d7-496a-a843-42022afb0707,8c17fd7c-74d7-496a-a843-42022afb0707,1,0,091ccac1-9a63-4a89-bb0c-333b274b0c70,091ccac1-9a63-4a89-bb0c-333b274b0c70,1,0,849f00c3-2f18-414c-97f6-32a99173fab9,849f00c3-2f18-414c-97f6-32a99173fab9,1,0,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,1,0,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,1,0,6eac5f7b-0952-4c94-9028-529b14ffcd4f,6eac5f7b-0952-4c94-9028-529b14ffcd4f,1,0,a587cade-4c91-4769-9c6a-a4fb4fe94196,a587cade-4c91-4769-9c6a-a4fb4fe94196,1,0,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,1,0,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,1,0,167455d1-6658-409f-834c-f6ccfe7b25de,167455d1-6658-409f-834c-f6ccfe7b25de,1,0,1300c46e-24d4-45cf-a899-3d26b5cf0b50,1300c46e-24d4-45cf-a899-3d26b5cf0b50,1,0,4cde6fdc-85fa-4c00-896c-51a68f5f10a5,4cde6fdc-85fa-4c00-896c-51a68f5f10a5,1,0,f41de07b-cba3-4bb8-9ec0-64ec59753f84,f41de07b-cba3-4bb8-9ec0-64ec59753f84,1,0,f78a5650-4d6c-4c17-95e0-e95cf8d9ad4b,f78a5650-4d6c-4c17-95e0-e95cf8d9ad4b,1,0,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,1,0,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,1,0,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,1,0,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,1,0,2a6e1f2b-7378-456b-9657-9e971eaff716,2a6e1f2b-7378-456b-9657-9e971eaff716,1,0,c3cdea20-3055-4b4e-a531-a02d4f3ed294,c3cdea20-3055-4b4e-a531-a02d4f3ed294,1,0,46417026-c44a-4a06-af41-9cf6495a33b4,46417026-c44a-4a06-af41-9cf6495a33b4,1,0,363c15f3-660e-4e19-b3cc-37c5d05e8d22,363c15f3-660e-4e19-b3cc-37c5d05e8d22,1,0,eeb4b6f1-2476-467d-9862-6fe9d3013b2c,eeb4b6f1-2476-467d-9862-6fe9d3013b2c,1,0,59d5cd7d-7f53-4015-89d9-bb8ad89f8c04,59d5cd7d-7f53-4015-89d9-bb8ad89f8c04,1,0,9d7f7dde-fea8-4064-abe2-bb7d04500cb2,9d7f7dde-fea8-4064-abe2-bb7d04500cb2,1,0,3af45dae-f563-4d23-a87a-11b4d9d5d7a7,3af45dae-f563-4d23-a87a-11b4d9d5d7a7,1,0,fe102b7b-b61f-4572-b2d0-c0af11bfb7d7,fe102b7b-b61f-4572-b2d0-c0af11bfb7d7,1,0,2cfa0db8-f0e6-4513-ab19-52dccff302bc,2cfa0db8-f0e6-4513-ab19-52dccff302bc,1,0,b9fece39-6e5d-44c0-af5c-ad13cfb71560,b9fece39-6e5d-44c0-af5c-ad13cfb71560,1,0,a9c30e99-c265-471d-9115-50ac2bb05191,a9c30e99-c265-471d-9115-50ac2bb05191,1,0,d388c9ca-1dbd-45b9-ac33-5ffa8cb11499,d388c9ca-1dbd-45b9-ac33-5ffa8cb11499,1,0,efebb079-b913-4249-b128-e0ffc7ab43dd,efebb079-b913-4249-b128-e0ffc7ab43dd,1,0,52077ee4-fef1-451f-8338-86563ff5cf60,52077ee4-fef1-451f-8338-86563ff5cf60,1,0,8e6780f8-8d0e-47d1-ac26-47bf5d906f61,8e6780f8-8d0e-47d1-ac26-47bf5d906f61,1,0,fd4a26c1-31e0-4216-92e0-1e090ec4f094,fd4a26c1-31e0-4216-92e0-1e090ec4f094,1,0,637148a3-0f54-4d41-91dd-a0aa6e191015,637148a3-0f54-4d41-91dd-a0aa6e191015,1,0,9a86e2fe-a9bc-4f0a-a16e-a97944fe8539,9a86e2fe-a9bc-4f0a-a16e-a97944fe8539,1,0,b6f745d7-1326-494e-b442-e4118955b5db,b6f745d7-1326-494e-b442-e4118955b5db,1,0,86755cbc-efd8-43e7-bba8-975c0a51f38f,86755cbc-efd8-43e7-bba8-975c0a51f38f,1,0,44dba9ff-fb54-4cc9-9da2-b00db76060e4,44dba9ff-fb54-4cc9-9da2-b00db76060e4,1,0,a6a0c38d-52a1-4a36-b29a-fb9cc084465f,a6a0c38d-52a1-4a36-b29a-fb9cc084465f,1,0,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,1,0,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,1,0,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,1,0,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,1,0,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,1,0,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,1,0,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,1,0,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,1,0,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,1,0,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,1,0,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,1,0,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,1,0,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,1,0,9a5b9bf4-71b8-41f2-8e23-8c396357f0a5,9a5b9bf4-71b8-41f2-8e23-8c396357f0a5,1,0,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,1,0,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,1,0,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,1,0,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,1,0,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,1,0,cc8e3172-491d-45d8-a7eb-fc6c400845cb,cc8e3172-491d-45d8-a7eb-fc6c400845cb,1,0,d7cfc87f-ac09-44aa-91d9-6511c408c5cb,d7cfc87f-ac09-44aa-91d9-6511c408c5cb,1,0,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,1,0,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,1,0,51d83895-5692-4479-9612-07c790d19dff,51d83895-5692-4479-9612-07c790d19dff,1,0,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,1,0,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,1,0,d854b528-8456-4453-9c2d-4f96caf10481,d854b528-8456-4453-9c2d-4f96caf10481,1,0,622d6de2-7404-41cc-961b-131d078d7ab4,622d6de2-7404-41cc-961b-131d078d7ab4,1,0,245f870e-a53a-4d86-aa0a-c0c7709b8acb,245f870e-a53a-4d86-aa0a-c0c7709b8acb,1,0,476f6bfa-b10c-4e0f-8499-23c652715b3f,476f6bfa-b10c-4e0f-8499-23c652715b3f,1,0,65c9754b-53f6-4616-a9d4-74826f7b0ced,65c9754b-53f6-4616-a9d4-74826f7b0ced,1,0,eca2b076-d218-4d1c-948b-7894edf9fa49,eca2b076-d218-4d1c-948b-7894edf9fa49,1,0,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,1,0,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,1,0,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,1,0,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,1,0,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,1,0,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1,0,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,1,0,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,1,0,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,1,0,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,1,0,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,1,0,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,1,0,40a59681-f31d-4fb9-9301-67c1430590e0,40a59681-f31d-4fb9-9301-67c1430590e0,1,0,ae3358ad-ea3a-4b73-a305-02a152863978,ae3358ad-ea3a-4b73-a305-02a152863978,1,0,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,1,0,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,1,0,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,1,0,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,1,0,9c3bc502-bcb1-4c90-ae43-53c798958339,9c3bc502-bcb1-4c90-ae43-53c798958339,1,0,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,1,0,cfc0adf6-87b4-4c8a-91e2-46c2616b319b,cfc0adf6-87b4-4c8a-91e2-46c2616b319b,1,0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,1,0,5eb4ca7f-027a-4860-a167-e6b424527e7a,5eb4ca7f-027a-4860-a167-e6b424527e7a,1,0,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,1,0,6871015f-d959-4a77-a091-a23cb4ebd8f9,6871015f-d959-4a77-a091-a23cb4ebd8f9,1,0,e5e1631b-a494-4e73-b356-b4330b84cc88,e5e1631b-a494-4e73-b356-b4330b84cc88,1,0,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,1,0,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,1,0,4dbf114a-5402-40b0-9cab-19601aa8328e,4dbf114a-5402-40b0-9cab-19601aa8328e,1,0,a0856ca2-6a66-4108-b6d4-82443cdccca6,a0856ca2-6a66-4108-b6d4-82443cdccca6,1,0,378b0708-a0a1-4c82-b55a-796acb27e696,378b0708-a0a1-4c82-b55a-796acb27e696,1,0,8e462c0e-c67a-45e9-9871-1f976b01632d,8e462c0e-c67a-45e9-9871-1f976b01632d,1,0,c5335e1f-3e47-46b7-b695-0653f825d855,c5335e1f-3e47-46b7-b695-0653f825d855,1,0,d7faad11-1e35-460c-8943-49370f328c03,d7faad11-1e35-460c-8943-49370f328c03,1,0,e4726010-85c5-4ccc-b574-4b3b55f0d391,e4726010-85c5-4ccc-b574-4b3b55f0d391,1,0,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,1,0,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,1,0,1f4f839a-4e19-45b8-a988-13ee604c269c,1f4f839a-4e19-45b8-a988-13ee604c269c,1,0,b3aa97e1-baef-45f4-9179-052f35527a5e,b3aa97e1-baef-45f4-9179-052f35527a5e,1,0,d613941f-ed4c-4957-b469-ea6b0d2a121d,d613941f-ed4c-4957-b469-ea6b0d2a121d,1,0,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0d8d08e3-194f-416c-a1e0-aa92b40b7911,1,0,af0178fe-eb3a-485b-9acf-35c8702aa330,af0178fe-eb3a-485b-9acf-35c8702aa330,1,0,201d323b-4c0c-4c93-ae43-43a378ec0d9e,201d323b-4c0c-4c93-ae43-43a378ec0d9e,1,0,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,1,0,c513ceb0-0855-43ce-a311-c9bea88e2563,c513ceb0-0855-43ce-a311-c9bea88e2563,1,0,974bfc13-85c2-454a-b562-e72384eb4c31,974bfc13-85c2-454a-b562-e72384eb4c31,1,0,69cd6adc-b129-4fbc-804d-8d5aaef77280,69cd6adc-b129-4fbc-804d-8d5aaef77280,1,0,3431a3de-cb9d-46dc-b597-3203831796a9,3431a3de-cb9d-46dc-b597-3203831796a9,1,0,f3866271-04ed-4963-852e-cf41e9e18e1d,f3866271-04ed-4963-852e-cf41e9e18e1d,1,0,b77e5ec2-35cd-43ae-957f-af35214fa621,b77e5ec2-35cd-43ae-957f-af35214fa621,1,0,4a04d83d-cadd-4f36-9ec8-f926259c18ba,4a04d83d-cadd-4f36-9ec8-f926259c18ba,1,0,85e670c0-1616-4611-984c-3d40e890b2e9,85e670c0-1616-4611-984c-3d40e890b2e9,1,0,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,1,0,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1,0,f1693207-2637-412a-972f-2bc79b9c7fc8,f1693207-2637-412a-972f-2bc79b9c7fc8,1,0,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,1,0,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,1,0,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,1,0,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,1,0,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,1,0,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,1,0,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,1,0,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,1,0,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,1,0,55bce105-51c0-452e-9eec-b960fe740db2,55bce105-51c0-452e-9eec-b960fe740db2,1,0,776c171d-5dd5-4965-94dc-c2fe6792d5f2,776c171d-5dd5-4965-94dc-c2fe6792d5f2,1,0,86bb1105-702a-47be-906a-1821a69b1b6c,86bb1105-702a-47be-906a-1821a69b1b6c,1,0,40653767-9542-44e9-a84b-ffee75584638,40653767-9542-44e9-a84b-ffee75584638,1,0,49bd152e-479a-46fe-b3af-26ed9181dc34,49bd152e-479a-46fe-b3af-26ed9181dc34,1,0,0a742dd2-1ff4-42de-b303-f2bb01b36fe2,0a742dd2-1ff4-42de-b303-f2bb01b36fe2,1,0,69e13959-51ad-4ac2-9cfc-17ac28b78c78,69e13959-51ad-4ac2-9cfc-17ac28b78c78,1,0,f890ca1b-f2c2-4630-9002-301b759ca6d9,f890ca1b-f2c2-4630-9002-301b759ca6d9,1,0,08c8a9bf-7b89-4d0e-a496-4c7efeca0577,08c8a9bf-7b89-4d0e-a496-4c7efeca0577,1,0,f6c2b015-9cfc-40d2-a93f-b0e88db4a23f,f6c2b015-9cfc-40d2-a93f-b0e88db4a23f,1,0,103f3d8f-e47a-4772-bdd7-dd5f8508d22b,103f3d8f-e47a-4772-bdd7-dd5f8508d22b,1,0,ba8ea271-8716-49ef-8b10-f4b5798c1f62,ba8ea271-8716-49ef-8b10-f4b5798c1f62,1,0,3633c30c-9479-4801-89cc-a5734a41e465,3633c30c-9479-4801-89cc-a5734a41e465,1,0,f295c68d-7e29-48b8-a95a-56e96d9843c1,f295c68d-7e29-48b8-a95a-56e96d9843c1,1,0,7ebe16ee-8e5d-4b05-89b5-9539f73be90c,7ebe16ee-8e5d-4b05-89b5-9539f73be90c,1,0,ea5d0221-fb1e-4626-862a-9c1209365d8f,ea5d0221-fb1e-4626-862a-9c1209365d8f,1,0,12bce69b-933c-4ce4-9d29-a47f3db0226e,12bce69b-933c-4ce4-9d29-a47f3db0226e,1,0,82dcd6a3-c35b-421c-a8f9-77855ad2abca,82dcd6a3-c35b-421c-a8f9-77855ad2abca,1,0,ad0b1720-282e-49d4-af80-324a887963c3,ad0b1720-282e-49d4-af80-324a887963c3,1,0,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,1,0,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,1,0,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,1,0,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,1,0,fcb97a46-d5fd-4bb5-b899-17723a9fe346,fcb97a46-d5fd-4bb5-b899-17723a9fe346,1,0,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,1,0,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,1,0,a1a44832-6026-47ae-affd-5b6d52e84307,a1a44832-6026-47ae-affd-5b6d52e84307,1,0,d2fd8650-d13a-411d-8206-61b16016bd82,d2fd8650-d13a-411d-8206-61b16016bd82,1,0,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,1,0,fbaa5b0a-56dc-4bf1-b1b2-e48073f63d13,fbaa5b0a-56dc-4bf1-b1b2-e48073f63d13,1,0,a92acf0e-9132-4456-9a82-1543d98ca453,a92acf0e-9132-4456-9a82-1543d98ca453,1,0,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,1,0,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,1,0,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,1,0,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,1,0,b67a509d-bb0f-427e-b447-4d4617078d6a,b67a509d-bb0f-427e-b447-4d4617078d6a,1,0,968ecfca-cf06-4952-83c1-a151e46c78a9,968ecfca-cf06-4952-83c1-a151e46c78a9,1,0,4945c734-a47d-44e9-8a7f-94b31911c1ce,4945c734-a47d-44e9-8a7f-94b31911c1ce,1,0,20a194e9-06cf-4013-bfa4-bc15554a54d0,20a194e9-06cf-4013-bfa4-bc15554a54d0,1,0,ab4f3d3d-bb5a-4dbc-b699-808458036b00,ab4f3d3d-bb5a-4dbc-b699-808458036b00,1,0,09761456-2273-437f-9316-0391cfaa81b3,09761456-2273-437f-9316-0391cfaa81b3,1,0,93922abc-98b9-4b3d-a5c8-7294378a69e1,93922abc-98b9-4b3d-a5c8-7294378a69e1,1,0,3c0a9c45-8e57-43fa-8ae3-26b15571f2cd,3c0a9c45-8e57-43fa-8ae3-26b15571f2cd,1,0,85223d37-2503-4783-94dc-fe6265e718d5,85223d37-2503-4783-94dc-fe6265e718d5,1,0,0918cd76-56e5-4314-8a1c-c21d023ba6f8,0918cd76-56e5-4314-8a1c-c21d023ba6f8,1,0,9db21c2e-79fa-44e4-902e-416abfccb54a,9db21c2e-79fa-44e4-902e-416abfccb54a,1,0,fb082db3-197b-4d1e-b9ea-362624d547ee,fb082db3-197b-4d1e-b9ea-362624d547ee,1,0,c09dcf00-a45a-4487-99c5-d3a37956ec88,c09dcf00-a45a-4487-99c5-d3a37956ec88,1,0,531a5a0c-6ac9-4e93-8caa-42d9aad0bc82,531a5a0c-6ac9-4e93-8caa-42d9aad0bc82,1,0,2714e1b6-6b02-43a1-bc94-2934b429ed35,2714e1b6-6b02-43a1-bc94-2934b429ed35,1,0,e33c73b2-ef0b-49b7-a65f-ab2c814ad256,e33c73b2-ef0b-49b7-a65f-ab2c814ad256,1,0,4c7016da-9991-4917-8eaa-e760cc9e29d1,4c7016da-9991-4917-8eaa-e760cc9e29d1,1,0,febb3770-5c11-4ada-9e49-a27950bdaddf,febb3770-5c11-4ada-9e49-a27950bdaddf,1,0,d7b57669-e538-4e54-ab1b-8428f0586466,d7b57669-e538-4e54-ab1b-8428f0586466,1,0,9c484a15-039e-416d-af97-4c2bd90fd873,9c484a15-039e-416d-af97-4c2bd90fd873,1,0,534855e3-4cf2-471c-b982-7138917050c9,534855e3-4cf2-471c-b982-7138917050c9,1,0,4c72b944-d000-4920-aec8-54029f88ddf4,4c72b944-d000-4920-aec8-54029f88ddf4,1,0,b4033d05-05c2-4617-80d9-abfa389c47f4,b4033d05-05c2-4617-80d9-abfa389c47f4,1,0,0f46b124-1575-4984-9bc1-b5e4696efc74,0f46b124-1575-4984-9bc1-b5e4696efc74,1,0,a0183a0b-1459-4b32-924c-6ea156f02125,a0183a0b-1459-4b32-924c-6ea156f02125,1,0,fc2dc619-41e0-4cce-a080-d5c8de5029a8,fc2dc619-41e0-4cce-a080-d5c8de5029a8,1,0,9609e5fb-fd11-463c-8679-9b10fc0993ed,9609e5fb-fd11-463c-8679-9b10fc0993ed,1,0,f438b941-2aae-4c67-81dc-340f6acc25b1,f438b941-2aae-4c67-81dc-340f6acc25b1,1,0,48075630-2041-48c3-9eb0-d2107cfcb249,48075630-2041-48c3-9eb0-d2107cfcb249,1,0,7d7e7e13-eb42-420d-9bfc-14fab901c3c1,7d7e7e13-eb42-420d-9bfc-14fab901c3c1,1,0,aa29e1be-4e99-4136-8dc1-0124908979ad,aa29e1be-4e99-4136-8dc1-0124908979ad,1,0,0d76799d-7fc7-446b-88fb-dca839de00a5,0d76799d-7fc7-446b-88fb-dca839de00a5,1,0,cb5674c3-0d91-4948-bafd-d9ef44a2a69d,cb5674c3-0d91-4948-bafd-d9ef44a2a69d,1,0,ea4a869c-861c-412c-a3be-de1c57d1a251,ea4a869c-861c-412c-a3be-de1c57d1a251,1,0,eeafcc8c-fbe2-4bb4-8b8a-cf663208258d,eeafcc8c-fbe2-4bb4-8b8a-cf663208258d,1,0,6a3bd39a-59cb-4763-b49f-7ab67167a8b7,6a3bd39a-59cb-4763-b49f-7ab67167a8b7,1,0,6c1d8f6c-db33-46dc-8824-aceacb4bf9c1,6c1d8f6c-db33-46dc-8824-aceacb4bf9c1,1,0,50ac390d-324f-40bd-b3df-0468a63b94b6,50ac390d-324f-40bd-b3df-0468a63b94b6,1,0,80337710-2c60-45c4-ae1f-bb42731fb611,80337710-2c60-45c4-ae1f-bb42731fb611,1,0,9dcf467e-7701-4c7b-b747-95f4d9b9295c,9dcf467e-7701-4c7b-b747-95f4d9b9295c,1,0,dd07b255-25af-466e-a224-c561a8ca567b,dd07b255-25af-466e-a224-c561a8ca567b,1,0,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,1,0,1e9e115a-e65b-4346-b0d3-47cf1dbe75f2,1e9e115a-e65b-4346-b0d3-47cf1dbe75f2,1,0,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,1,0,67993b79-6aca-4641-b2e2-0a15f44e47d5,67993b79-6aca-4641-b2e2-0a15f44e47d5,1,0,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,1,0,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,1,0,cd59707e-b9e4-4038-8203-ae22a8060e8d,cd59707e-b9e4-4038-8203-ae22a8060e8d,1,0,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,1,0,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,1,0,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,1,0,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,1,0,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,1,0,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,1,0,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,1,0,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,1,0,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,1,0,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,1,0,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,1,0,65f3ad72-ed03-482b-a2f1-05053eef408a,65f3ad72-ed03-482b-a2f1-05053eef408a,1,0,e177e258-7d0c-4fe1-80e5-3b89de9e23d9,e177e258-7d0c-4fe1-80e5-3b89de9e23d9,1,0,3f25ac9f-c6b4-4ccc-bec4-a90c99403823,3f25ac9f-c6b4-4ccc-bec4-a90c99403823,1,0,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,1,0,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,1,0,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,1,0,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,1,0,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,1,0,0d89036c-af6e-4709-847c-0dab74a33d72,0d89036c-af6e-4709-847c-0dab74a33d72,1,0,7d223aab-d4f6-41d5-a701-6fe03517cf50,7d223aab-d4f6-41d5-a701-6fe03517cf50,1,0,631cdd15-eb1f-4903-9073-4de3911ba2e6,631cdd15-eb1f-4903-9073-4de3911ba2e6,1,0,6b10ab0a-8d4e-4847-9ce7-663fb4770c35,6b10ab0a-8d4e-4847-9ce7-663fb4770c35,1,0,42630eee-ce93-40a8-b96e-3eb759f48976,42630eee-ce93-40a8-b96e-3eb759f48976,1,0,174e0187-cf34-4949-8dc2-a1f9aece78dc,174e0187-cf34-4949-8dc2-a1f9aece78dc,1,0,5d9f2db6-704d-45cb-96c3-e59e47ad4fea,5d9f2db6-704d-45cb-96c3-e59e47ad4fea,1,0,e4dbeb50-292f-452f-a0da-a55e5ea936e4,e4dbeb50-292f-452f-a0da-a55e5ea936e4,1,0,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,1,0,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,1,0,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,1,0,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,1,0,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,1,0,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,1,0,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,1,0,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,1,0,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,1,0,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,1,0,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,1,0,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,1,0,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,1,0,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,1,0,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,1,0,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,1,0,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,1,0,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,1,0,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,1,0,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,1,0,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,1,0,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,1,0,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,1,0,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,1,0,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,1,0,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,1,0,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,1,0,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,1,0,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,1,0,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,1,0,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,1,0,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,1,0,5b379a72-8605-4e88-84cb-14272a3b8f5f,5b379a72-8605-4e88-84cb-14272a3b8f5f,1,0,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,1,0,ec44f92a-06bf-4a53-a7ba-fbe9846a68a6,ec44f92a-06bf-4a53-a7ba-fbe9846a68a6,1,0,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,1,0,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,1,0,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,1,0,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,1,0,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,1,0,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,1,0,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,1,0,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,1,0,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,1,0,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,1,0,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,1,0,612f3b95-d7db-4b33-92b5-4873205b424b,612f3b95-d7db-4b33-92b5-4873205b424b,1,0,d7afa1a6-0ac9-4527-8f1c-5317ce259b52,d7afa1a6-0ac9-4527-8f1c-5317ce259b52,1,0,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,1,0,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,1,0,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,1,0,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,1,0,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,1,0,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,1,0,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,1,0,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,1,0,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,1,0,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,1,0,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,1,0,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,1,0,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,1,0,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,1,0,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,1,0,58cdbd20-a7f4-4c4c-8a4e-638714cc2699,58cdbd20-a7f4-4c4c-8a4e-638714cc2699,1,0,616cd2cc-eaf4-4586-bca1-c044429b491a,616cd2cc-eaf4-4586-bca1-c044429b491a,1,0,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,1,0,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,1,0,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,1,0,81d900be-ddc1-417f-ae2c-1aacf040de9a,81d900be-ddc1-417f-ae2c-1aacf040de9a,1,0,c65f69ce-be78-4e8d-b91d-293c4108ce77,c65f69ce-be78-4e8d-b91d-293c4108ce77,1,0,521a5717-0b38-401d-bd72-30cee219bd14,521a5717-0b38-401d-bd72-30cee219bd14,1,0,977c30dc-6f27-4931-9fd5-d12ed147e3ec,977c30dc-6f27-4931-9fd5-d12ed147e3ec,1,0,eea4f72e-dd1b-46c7-b270-876a482236b3,eea4f72e-dd1b-46c7-b270-876a482236b3,1,0,25e8d286-dfbb-4fdf-974b-fe3f6f76eac0,25e8d286-dfbb-4fdf-974b-fe3f6f76eac0,1,0,2d249dad-8b4f-462b-ab13-892639a6e071,2d249dad-8b4f-462b-ab13-892639a6e071,1,0,f6249bf4-d2e7-48f3-808f-d776915d14cb,f6249bf4-d2e7-48f3-808f-d776915d14cb,1,0,75f11ecd-c87a-4a14-a7ca-c755f63d7cf8,75f11ecd-c87a-4a14-a7ca-c755f63d7cf8,1,0,883cdeb0-e747-4157-bbe7-0ebc423a82af,883cdeb0-e747-4157-bbe7-0ebc423a82af,1,0,ba62ac73-91da-4dad-abc7-3cf8acf7e315,ba62ac73-91da-4dad-abc7-3cf8acf7e315,1,0,6a71416d-dba1-4883-9264-597ecf9d6270,6a71416d-dba1-4883-9264-597ecf9d6270,1,0,ce3fc202-7893-4d1b-9c8f-1b3349a5c147,ce3fc202-7893-4d1b-9c8f-1b3349a5c147,1,0,6593baab-fce0-49ed-867e-be242bfc08d7,6593baab-fce0-49ed-867e-be242bfc08d7,1,0,403390cf-d3f8-4dfa-b83d-e2fca4ee0dff,403390cf-d3f8-4dfa-b83d-e2fca4ee0dff,1,0,57aed64d-da61-4c18-af21-dab3afdc5c03,57aed64d-da61-4c18-af21-dab3afdc5c03,1,0,452822b4-a590-44db-ab77-d8c01f7300e7,452822b4-a590-44db-ab77-d8c01f7300e7,1,0,62a71ba7-3226-4d10-8cc9-ac9908a00ae7,62a71ba7-3226-4d10-8cc9-ac9908a00ae7,1,0,6ce1d71d-7548-4ee7-be78-21ae23d5a08d,6ce1d71d-7548-4ee7-be78-21ae23d5a08d,1,0,f5ad6743-b19b-44c4-b3d1-2e39d74a4abd,f5ad6743-b19b-44c4-b3d1-2e39d74a4abd,1,0,4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d,4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d,1,0,19b29d30-e395-42f2-b700-7474bb2cdcb7,19b29d30-e395-42f2-b700-7474bb2cdcb7,1,0,0c38782c-6559-4f1c-88af-aa022285ffbd,0c38782c-6559-4f1c-88af-aa022285ffbd,1,0,eed23203-924d-4092-a1a8-a7cdd72489e5,eed23203-924d-4092-a1a8-a7cdd72489e5,1,0,b0deb957-624b-4bcb-824c-76aedf1affe9,b0deb957-624b-4bcb-824c-76aedf1affe9,1,0,9934e608-593d-45d0-9df3-539f0c8fc385,9934e608-593d-45d0-9df3-539f0c8fc385,1,0,80da4126-4319-425f-8427-7d60652cf754,80da4126-4319-425f-8427-7d60652cf754,1,0,05236ace-bcdd-4eb8-a1fb-5843ee311d10,05236ace-bcdd-4eb8-a1fb-5843ee311d10,1,0,0f1b284c-6c9e-4799-bc47-3326c4b7bec2,0f1b284c-6c9e-4799-bc47-3326c4b7bec2,1,0,449060fd-4711-4b9e-93e0-11b35c314fb3,449060fd-4711-4b9e-93e0-11b35c314fb3,1,0,e7efa9d5-ea93-4070-87bb-a4d95116d1b4,e7efa9d5-ea93-4070-87bb-a4d95116d1b4,1,0,0614d340-6524-4715-978d-87ab21377e72,0614d340-6524-4715-978d-87ab21377e72,1,0,d47daac5-ec3b-4d4e-8b01-045a37f7074d,d47daac5-ec3b-4d4e-8b01-045a37f7074d,1,0,9d6ed3b9-35cd-47c0-9dfc-732e5066a071,9d6ed3b9-35cd-47c0-9dfc-732e5066a071,1,0,912cbd30-1ed5-4888-a4b6-98e9215b28e9,912cbd30-1ed5-4888-a4b6-98e9215b28e9,1,0,abf093ce-be63-487d-8be4-be282aa475be,abf093ce-be63-487d-8be4-be282aa475be,1,0,7a910ad6-b922-4716-8140-1540d76296b2,7a910ad6-b922-4716-8140-1540d76296b2,1,0,3fa9aa34-382c-49fa-87d8-34bedcde5836,3fa9aa34-382c-49fa-87d8-34bedcde5836,1,0,5189beb9-b939-4f97-aca0-c2f3492ac8b9,5189beb9-b939-4f97-aca0-c2f3492ac8b9,1,0,0b139d7a-b583-4082-b9f2-8f3fb444bd51,0b139d7a-b583-4082-b9f2-8f3fb444bd51,1,0,b8931f98-c1d7-4e9b-be43-065064e7ba95,b8931f98-c1d7-4e9b-be43-065064e7ba95,1,0,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,1,0,60848308-931c-4da3-aa4b-37f6fb4b194f,60848308-931c-4da3-aa4b-37f6fb4b194f,1,0,0761c32c-1de6-4c40-9178-64aeb46b6622,0761c32c-1de6-4c40-9178-64aeb46b6622,1,0,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,1,0,54b14504-503b-45f6-9b5d-785b49829425,54b14504-503b-45f6-9b5d-785b49829425,1,0,80d3ee33-1cdc-4af6-85c2-787094526592,80d3ee33-1cdc-4af6-85c2-787094526592,1,0,c8b28660-6cb0-4ef5-85c2-a75da863ba96,c8b28660-6cb0-4ef5-85c2-a75da863ba96,1,0,1cd607b4-49fc-460e-a014-6afe50083b47,1cd607b4-49fc-460e-a014-6afe50083b47,1,0,a215e767-36e9-4408-9d18-7b4be757022a,a215e767-36e9-4408-9d18-7b4be757022a,1,0,a3e262bc-9f0d-480d-a1d1-c2326105d22d,a3e262bc-9f0d-480d-a1d1-c2326105d22d,1,0,8eae0c79-288b-4773-90bb-49299ad45628,8eae0c79-288b-4773-90bb-49299ad45628,1,0,2faa5594-f1b4-4312-b674-82fdf9623105,2faa5594-f1b4-4312-b674-82fdf9623105,1,0,185c1ad3-b5db-49b6-9342-d08e1bf64903,185c1ad3-b5db-49b6-9342-d08e1bf64903,1,0,3c69a4ad-001d-4421-88f6-412e15d710d6,3c69a4ad-001d-4421-88f6-412e15d710d6,1,0,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,1,0,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,1,0,6a68a08a-ea37-4573-ab9f-ec822f6d250b,6a68a08a-ea37-4573-ab9f-ec822f6d250b,1,0,00e87d04-8104-420b-b2c6-7304889a75b2,00e87d04-8104-420b-b2c6-7304889a75b2,1,0,bde86820-f7bb-463b-97d0-bfa5f8323af0,bde86820-f7bb-463b-97d0-bfa5f8323af0,1,0,b9b24093-810c-4158-846d-e2c7aea54d36,b9b24093-810c-4158-846d-e2c7aea54d36,1,0,289a6aac-dc4e-4fae-8815-853e78d450bb,289a6aac-dc4e-4fae-8815-853e78d450bb,1,0,557e7d89-83ed-45d0-86cc-6e355f14025d,557e7d89-83ed-45d0-86cc-6e355f14025d,1,0,d681b26b-dd8d-46d7-986e-10f05c37a1e4,d681b26b-dd8d-46d7-986e-10f05c37a1e4,1,0,4d3c216e-c04f-4884-8681-1c861c50ce7d,4d3c216e-c04f-4884-8681-1c861c50ce7d,1,0,4a41eee0-c973-4824-a07c-9fcf731f055e,4a41eee0-c973-4824-a07c-9fcf731f055e,1,0,ee756c33-f408-4449-a6bb-3186a0421362,ee756c33-f408-4449-a6bb-3186a0421362,1,0,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,1,0,6ff66622-4d20-4696-9fe9-4b4faeb21d96,6ff66622-4d20-4696-9fe9-4b4faeb21d96,1,0,46237eec-c206-4d21-883c-27599b9ed38c,46237eec-c206-4d21-883c-27599b9ed38c,1,0,92cbfe14-35c5-440b-9a13-ef8c8ab0630a,92cbfe14-35c5-440b-9a13-ef8c8ab0630a,1,0,8ce759ff-f579-461c-bb1e-9ac2b01e88df,8ce759ff-f579-461c-bb1e-9ac2b01e88df,1,0,8b451909-2c15-48f2-b869-65e7031cc542,8b451909-2c15-48f2-b869-65e7031cc542,1,0,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,1,0,7b377fca-4466-476f-9eb2-0b00141103d6,7b377fca-4466-476f-9eb2-0b00141103d6,1,0,9ce5eceb-f366-4035-956e-62721358b154,9ce5eceb-f366-4035-956e-62721358b154,1,0,8b5358e9-5810-45a7-a49e-fe7fe63c73f3,8b5358e9-5810-45a7-a49e-fe7fe63c73f3,1,0,23afa5f6-9c3f-4f79-885b-b20785fc5e45,23afa5f6-9c3f-4f79-885b-b20785fc5e45,1,0,379a8bf7-b760-43d6-b5c4-6393b00e294f,379a8bf7-b760-43d6-b5c4-6393b00e294f,1,0,e44b737f-9076-4070-94ba-ed0b00e60393,e44b737f-9076-4070-94ba-ed0b00e60393,1,0,5582e533-b908-40c9-8c81-876906f0d47e,5582e533-b908-40c9-8c81-876906f0d47e,1,0,71656b8b-2d9b-4ac9-884d-72f47b9c69b7,71656b8b-2d9b-4ac9-884d-72f47b9c69b7,1,0,e0797541-88c2-4ad9-9ff4-d56899e6a6ee,e0797541-88c2-4ad9-9ff4-d56899e6a6ee,1,0,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,1,0,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,1,0,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1,0,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,1,0,28080e64-cd09-410d-9e3e-3ffdb43d3ace,28080e64-cd09-410d-9e3e-3ffdb43d3ace,1,0,9cfd3d38-4e0e-40f4-ae77-7a997646e4b2,9cfd3d38-4e0e-40f4-ae77-7a997646e4b2,1,0,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,1,0,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,1,0,149e72b8-cc03-4b4f-8ca4-07987600c34d,149e72b8-cc03-4b4f-8ca4-07987600c34d,1,0,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,1,0,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,1,0,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,1,0,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,1,0,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,1,0,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,1,0,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,1,0,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,1,0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,1,0,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,1,0,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,1,0,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,1,0,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,1,0,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,1,0,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,1,0,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,1,0,d3443b92-32f5-4ac0-8356-062647efe3d8,d3443b92-32f5-4ac0-8356-062647efe3d8,1,0,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,1,0,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,1,0,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,1,0,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,1,0,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,1,0,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,1,0,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,1,0,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,1,0,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,1,0,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,1,0,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,1,0,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,1,0,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,1,0,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,1,0,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,1,0,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,1,0,b7295e8e-0aa4-4a49-81ea-0594a358e9ca,b7295e8e-0aa4-4a49-81ea-0594a358e9ca,1,0,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,1,0,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,1,0,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,1,0,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,1,0,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,1,0,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,1,0,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,1,0,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,1,0,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,1,0,aa63c001-c3da-4179-8fd8-fe2ff510511e,aa63c001-c3da-4179-8fd8-fe2ff510511e,1,0,b2e894b0-6443-4a52-95b6-6b564f809680,b2e894b0-6443-4a52-95b6-6b564f809680,1,0,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,1,0,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,1,0,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,1,0,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,1,0,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,1,0,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,1,0,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,1,0,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,1,0,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,1,0,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,1,0,ec966ef2-b291-4937-a164-5c2b461871f8,ec966ef2-b291-4937-a164-5c2b461871f8,1,0,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,1,0,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,1,0,df81cc63-26f2-4e66-bf0b-fd083a6a7d7b,df81cc63-26f2-4e66-bf0b-fd083a6a7d7b,1,0,8a8848b8-345a-452d-bf95-28f9c91c7e95,8a8848b8-345a-452d-bf95-28f9c91c7e95,1,0,440ecfe8-72fd-447b-8680-c4a8c43f2c72,440ecfe8-72fd-447b-8680-c4a8c43f2c72,1,0,5afe3a0f-1bbc-4f04-87b3-f98d54b65a42,5afe3a0f-1bbc-4f04-87b3-f98d54b65a42,1,0,ee9e8f50-4d4f-43aa-99eb-cda2308c903e,ee9e8f50-4d4f-43aa-99eb-cda2308c903e,1,0,4ff043c1-6c0b-4889-a684-23da5a35b9c2,4ff043c1-6c0b-4889-a684-23da5a35b9c2,1,0,6fe56ecb-c969-4c03-8e6b-65395c29e817,6fe56ecb-c969-4c03-8e6b-65395c29e817,1,0,48627a8d-b108-43b8-a58e-fd98e4220639,48627a8d-b108-43b8-a58e-fd98e4220639,1,0,2a8eb62d-2795-48ab-ae02-68527996f411,2a8eb62d-2795-48ab-ae02-68527996f411,1,0,d3bf09be-0f21-4dc3-a525-1c4dc75928ea,d3bf09be-0f21-4dc3-a525-1c4dc75928ea,1,0,5ca880c5-7c34-4c31-a2b8-46265ddea7d4,5ca880c5-7c34-4c31-a2b8-46265ddea7d4,1,0,a9441693-87ca-4157-98e1-63375852755c,a9441693-87ca-4157-98e1-63375852755c,1,0,6303ea55-e8ed-4acc-9717-941eefafc2a9,6303ea55-e8ed-4acc-9717-941eefafc2a9,1,0,5b4e1b83-fc10-4acc-bef7-81c73dbbc453,5b4e1b83-fc10-4acc-bef7-81c73dbbc453,1,0,d0b17206-3949-4513-a47f-02e1a8ba369a,d0b17206-3949-4513-a47f-02e1a8ba369a,1,0,cb4f20d4-13e6-4c27-b491-da7931f4bf05,cb4f20d4-13e6-4c27-b491-da7931f4bf05,1,0,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,1,0,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,1,0,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,1,0,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,1,0,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,1,0,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,1,0,2abbd53a-0ead-42af-8df6-fde663aea300,2abbd53a-0ead-42af-8df6-fde663aea300,1,0,24611bf9-5492-443a-935c-a0058e86493f,24611bf9-5492-443a-935c-a0058e86493f,1,0,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,1,0,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,1,0,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,1,0,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,1,0,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,1,0,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,1,0,f7e73257-fae1-465a-ae74-faaa0273a416,f7e73257-fae1-465a-ae74-faaa0273a416,1,0,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,1,0,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,1,0,13beb01d-dd08-4a6d-863b-651e70bbf51f,13beb01d-dd08-4a6d-863b-651e70bbf51f,1,0,94bc76ae-72a0-418f-98c4-ae0a0326a2da,94bc76ae-72a0-418f-98c4-ae0a0326a2da,1,0,784475ff-eec5-462a-a511-ba31f8374c2e,784475ff-eec5-462a-a511-ba31f8374c2e,1,0,b5b56a64-5550-4da9-8872-d42ab871d21c,b5b56a64-5550-4da9-8872-d42ab871d21c,1,0,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,1,0,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,1,0,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,1,0,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,1,0,27e0b5d9-1a4c-45b8-8969-d1d1c39129c1,27e0b5d9-1a4c-45b8-8969-d1d1c39129c1,1,0,626cbb27-6af2-4a9a-959e-15af4417e489,626cbb27-6af2-4a9a-959e-15af4417e489,1,0,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,1,0,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,1,0,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,1,0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,1,0,356a8091-4c0b-41d0-b8d2-963b3a807469,356a8091-4c0b-41d0-b8d2-963b3a807469,1,0,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,1,0,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,1,0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,1,0,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,1,0,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,1,0,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,1,0,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,1,0,f00e93bf-6e3b-4819-a4e1-33471a6d0fff,f00e93bf-6e3b-4819-a4e1-33471a6d0fff,1,0,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,1,0,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,1,0,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,1,0,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1,0,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,1,0,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,1,0,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,1,0,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,1,0,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,1,0,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,1,0,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,1,0,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,1,0,ee008096-1ae8-4a64-9d3d-14cb15c8be70,ee008096-1ae8-4a64-9d3d-14cb15c8be70,1,0,a0a85b22-63ee-4a05-8b0d-1feb9ee07b0a,a0a85b22-63ee-4a05-8b0d-1feb9ee07b0a,1,0,a4754a7b-971f-4517-963e-b7cb9d57f86d,a4754a7b-971f-4517-963e-b7cb9d57f86d,1,0,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,1,0,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,1,0,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,1,0,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,1,0,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,1,0,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,1,0,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,1,0,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,1,0,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,1,0,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,1,0,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,1,0,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,1,0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,1,0,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,1,0,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,1,0,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,1,0,2bc2ca58-6cc0-4d4b-8672-f9328c86c2c1,2bc2ca58-6cc0-4d4b-8672-f9328c86c2c1,1,0,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,1,0,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,1,0,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,1,0,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,1,0,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,1,0,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,1,0,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,1,0,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,1,0,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,1,0,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,1,0,733d4494-01e2-46f5-a49b-f289267a90c9,733d4494-01e2-46f5-a49b-f289267a90c9,1,0,1e14d062-1d5a-4939-8ce6-4d9514990376,1e14d062-1d5a-4939-8ce6-4d9514990376,1,0,f86f24d2-9a83-47ae-9d95-b49a0a295770,f86f24d2-9a83-47ae-9d95-b49a0a295770,1,0,8368e1fa-da0c-4a9b-9d50-a122933c7899,8368e1fa-da0c-4a9b-9d50-a122933c7899,1,0,37986729-a275-4e86-8613-faee9a4f2525,37986729-a275-4e86-8613-faee9a4f2525,1,0,5814cb3a-8f7c-45b4-a590-b69d4912120f,5814cb3a-8f7c-45b4-a590-b69d4912120f,1,0,f06c8396-65ec-4ece-aed0-d45b2d8969b5,f06c8396-65ec-4ece-aed0-d45b2d8969b5,1,0,1faeab7f-7bd7-496d-8882-4aab6c425854,1faeab7f-7bd7-496d-8882-4aab6c425854,1,0,af922fb8-a99c-4154-89fe-d30a4d13024a,af922fb8-a99c-4154-89fe-d30a4d13024a,1,0,24c2f463-2bbb-471f-a409-507afad52caf,24c2f463-2bbb-471f-a409-507afad52caf,1,0,cbb07013-9ae1-43ec-8142-a724d788cb67,cbb07013-9ae1-43ec-8142-a724d788cb67,1,0,2403ac84-b513-4aa0-9a68-8d1ad705ce24,2403ac84-b513-4aa0-9a68-8d1ad705ce24,1,0,952b49e0-e1a1-4130-8fb2-083e3988255c,952b49e0-e1a1-4130-8fb2-083e3988255c,1,0,367b227f-f66e-4cec-9fc3-850bca8bc6c8,367b227f-f66e-4cec-9fc3-850bca8bc6c8,1,0,1a3a8a3a-dc34-4491-883d-57c3fb69840a,1a3a8a3a-dc34-4491-883d-57c3fb69840a,1,0,7fcb9d79-1144-4099-8d7f-309d3bf045a5,7fcb9d79-1144-4099-8d7f-309d3bf045a5,1,0,db418313-8583-48a9-9fec-e2c5de4fdf76,db418313-8583-48a9-9fec-e2c5de4fdf76,1,0,6277a3b5-b158-4b58-a92b-5efdf2dabac0,6277a3b5-b158-4b58-a92b-5efdf2dabac0,1,0,2f26970e-b964-43e2-8d6d-999bbc577689,2f26970e-b964-43e2-8d6d-999bbc577689,1,0,65a50026-88e7-45dd-bb0c-f212218ca093,65a50026-88e7-45dd-bb0c-f212218ca093,1,0,ed9e5fbe-1db8-4fb9-a9fa-bb1927cae196,ed9e5fbe-1db8-4fb9-a9fa-bb1927cae196,1,0,1dd2b2c4-00aa-4029-ba32-fe82aa5c6cbe,1dd2b2c4-00aa-4029-ba32-fe82aa5c6cbe,1,0,5c17a594-eb0b-4cdf-af35-0eaba968e065,5c17a594-eb0b-4cdf-af35-0eaba968e065,1,0,2f4ea53a-c84d-4d5f-ae7a-817a20ccd96a,2f4ea53a-c84d-4d5f-ae7a-817a20ccd96a,1,0,b2a39c8a-d884-4dfe-a593-e6788dabbd6b,b2a39c8a-d884-4dfe-a593-e6788dabbd6b,1,0,3d0afdb2-ab8f-43c0-920a-88ed85545b2f,3d0afdb2-ab8f-43c0-920a-88ed85545b2f,1,0,17477f72-0622-445c-9cb7-2c5a5a65bbe0,17477f72-0622-445c-9cb7-2c5a5a65bbe0,1,0,01a1fd57-6c09-4a5b-9f75-da4366159423,01a1fd57-6c09-4a5b-9f75-da4366159423,1,0,71d79b25-3682-4f2c-b6b2-a307e3e72844,71d79b25-3682-4f2c-b6b2-a307e3e72844,1,0,45c1ed0d-202e-4289-820f-e1de0f544386,45c1ed0d-202e-4289-820f-e1de0f544386,1,0,e889e80f-97c9-43c6-8268-d652764fcafb,e889e80f-97c9-43c6-8268-d652764fcafb,1,0,4eb48d3a-e2d5-4db5-b08b-4b6ccc701f77,4eb48d3a-e2d5-4db5-b08b-4b6ccc701f77,1,0,95ccaaf2-f6ca-4540-8a39-3c90121c4236,95ccaaf2-f6ca-4540-8a39-3c90121c4236,1,0,7c920b8b-1dbf-4f7e-99af-1ca784a59a64,7c920b8b-1dbf-4f7e-99af-1ca784a59a64,1,0,f47a9bec-2a9f-4955-a432-acb63a5b0e46,f47a9bec-2a9f-4955-a432-acb63a5b0e46,1,0,1ba73b6b-cb72-4370-a268-279dcd7a54b9,1ba73b6b-cb72-4370-a268-279dcd7a54b9,1,0,49de6b63-a845-4b5a-9818-18a3e0bb6fe8,49de6b63-a845-4b5a-9818-18a3e0bb6fe8,1,0,b787818e-5572-4ef2-ba54-1e9b69569824,b787818e-5572-4ef2-ba54-1e9b69569824,1,0,1e13bd37-61b5-4901-a607-e00e5d1900a8,1e13bd37-61b5-4901-a607-e00e5d1900a8,1,0,395b43e4-c18b-4f68-b99c-aed8d4b8cac9,395b43e4-c18b-4f68-b99c-aed8d4b8cac9,1,0,231d7b21-c00c-4782-b610-d56593be436f,231d7b21-c00c-4782-b610-d56593be436f,1,0,79250d1a-77ff-4015-a5b5-83460b1611e2,79250d1a-77ff-4015-a5b5-83460b1611e2,1,0,60018ee0-71ec-4975-a95d-f6f188748ff2,60018ee0-71ec-4975-a95d-f6f188748ff2,1,0,68d35468-279a-43ef-9d71-fed44a792177,68d35468-279a-43ef-9d71-fed44a792177,1,0,77bec3d8-582a-4156-861b-4902008f014c,77bec3d8-582a-4156-861b-4902008f014c,1,0,2ad1caba-7a89-4389-934f-419970260961,2ad1caba-7a89-4389-934f-419970260961,1,0,bfc1a708-662d-4dc1-82b4-7b09bb1b0751,bfc1a708-662d-4dc1-82b4-7b09bb1b0751,1,0,f88c4a72-368c-4f45-bb2c-d18f214a5079,f88c4a72-368c-4f45-bb2c-d18f214a5079,1,0,611876ba-7e6e-40c3-89a9-bb9b19cd1bfb,611876ba-7e6e-40c3-89a9-bb9b19cd1bfb,1,0,9dc2e313-c086-4fd9-83e8-911859ef480d,9dc2e313-c086-4fd9-83e8-911859ef480d,1,0,8a14ced0-9e45-4b3a-a135-11413c3a33c2,8a14ced0-9e45-4b3a-a135-11413c3a33c2,1,0,af7377db-0b27-42f7-a639-e2feb4015412,af7377db-0b27-42f7-a639-e2feb4015412,1,0,e1a200e2-64f3-434c-ae0d-5f24b9d65c9b,e1a200e2-64f3-434c-ae0d-5f24b9d65c9b,1,0,ab7db146-f26a-418a-8c45-e2513bf84e08,ab7db146-f26a-418a-8c45-e2513bf84e08,1,0,ece3bd8d-6616-44d5-9c14-6b3557738872,ece3bd8d-6616-44d5-9c14-6b3557738872,1,0,663a80ba-b97e-4265-a627-4a7d273f9472,663a80ba-b97e-4265-a627-4a7d273f9472,1,0,bf3304c0-5078-478f-bbf8-6178264c5f26,bf3304c0-5078-478f-bbf8-6178264c5f26,1,0,fbf754c3-ab89-4704-b01a-67f8bcea0c7c,fbf754c3-ab89-4704-b01a-67f8bcea0c7c,1,0,3b0afd55-f08d-4d59-b6df-d7c4d1c52446,3b0afd55-f08d-4d59-b6df-d7c4d1c52446,1,0,4893ad50-df19-4d86-9469-40491ba733c9,4893ad50-df19-4d86-9469-40491ba733c9,1,0,25a65c1e-8e67-4135-843d-1e0da72dfd64,25a65c1e-8e67-4135-843d-1e0da72dfd64,1,0,5724fbd5-4d91-4e6d-ae24-8925a4d83c83,5724fbd5-4d91-4e6d-ae24-8925a4d83c83,1,0,29a6416e-b0f5-4111-8f86-1ba80244e73a,29a6416e-b0f5-4111-8f86-1ba80244e73a,1,0,0f49085a-9b83-4256-be60-f341b2ef132e,0f49085a-9b83-4256-be60-f341b2ef132e,1,0,f44c66d6-cfe2-482f-a921-de3db3cd09ea,f44c66d6-cfe2-482f-a921-de3db3cd09ea,1,0,5ec1b7af-f4bc-4ec1-8f43-85c4f9d146a0,5ec1b7af-f4bc-4ec1-8f43-85c4f9d146a0,1,0,c521bd61-386e-41c8-bcc3-29d54b63cc32,c521bd61-386e-41c8-bcc3-29d54b63cc32,1,0,d46e3424-6d30-4229-9a56-ab256517534a,d46e3424-6d30-4229-9a56-ab256517534a,1,0,09d3633d-8e8c-47f3-8f34-d70eb94577e1,09d3633d-8e8c-47f3-8f34-d70eb94577e1,1,0,fe868143-363b-4da1-889b-98d4dd10a1fd,fe868143-363b-4da1-889b-98d4dd10a1fd,1,0,b791a549-ae94-46f2-8f04-771fdeb4cc54,b791a549-ae94-46f2-8f04-771fdeb4cc54,1,0,4681cb63-c581-4c08-b18c-016d9b478ef2,4681cb63-c581-4c08-b18c-016d9b478ef2,1,0,041c364f-0498-494f-9e41-82cb416c0862,041c364f-0498-494f-9e41-82cb416c0862,1,0,913830c8-da01-4b7e-9d83-d406c2fefd49,913830c8-da01-4b7e-9d83-d406c2fefd49,1,0,ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171,ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171,1,0,9f1c8979-2b3d-4a96-af6c-4577541696a3,9f1c8979-2b3d-4a96-af6c-4577541696a3,1,0,5adaafcf-3d67-418d-b47d-d0d8c65f1f46,5adaafcf-3d67-418d-b47d-d0d8c65f1f46,1,0,8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5,8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5,1,0,f68ec923-89c8-4c83-80a2-2d5e096dbbd8,f68ec923-89c8-4c83-80a2-2d5e096dbbd8,1,0,f278bdf8-543a-4427-b2f1-3670c61502ae,f278bdf8-543a-4427-b2f1-3670c61502ae,1,0,00ce0cd2-9840-49a0-b9df-dc64becd3e65,00ce0cd2-9840-49a0-b9df-dc64becd3e65,1,0,db6f11c0-8530-43c1-811a-48797be89ec1,db6f11c0-8530-43c1-811a-48797be89ec1,1,0,c2782a2b-f910-4d4d-ba1b-49ef7854bae0,c2782a2b-f910-4d4d-ba1b-49ef7854bae0,1,0,293cda8c-1cc8-42c0-a68f-d22163aed4f1,293cda8c-1cc8-42c0-a68f-d22163aed4f1,1,0,5e48841c-0a65-457f-8952-fa97aae3207d,5e48841c-0a65-457f-8952-fa97aae3207d,1,0,ee0275e4-a497-4623-9d2f-6308ea2e70ca,ee0275e4-a497-4623-9d2f-6308ea2e70ca,1,0,ec37d236-db36-44ef-afc2-267af1f40c1f,ec37d236-db36-44ef-afc2-267af1f40c1f,1,0,d835f08d-79c6-4e79-a7c1-f00dc05778b9,d835f08d-79c6-4e79-a7c1-f00dc05778b9,1,0,32371dfd-c890-4bed-bd68-45db299c9caf,32371dfd-c890-4bed-bd68-45db299c9caf,1,0,eeb298cf-8df3-41fe-bb48-9c83a24a8206,eeb298cf-8df3-41fe-bb48-9c83a24a8206,1,0,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,1,0,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,1,0,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,1,0,1d429511-9446-4102-95f4-df676125e14c,1d429511-9446-4102-95f4-df676125e14c,1,0,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,1,0,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,1,0,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,1,0,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,1,0,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,1,0,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,1,0,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,1,0,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,1,0,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,1,0,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,1,0,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,1,0,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,1,0,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,1,0,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,1,0,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,1,0,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,1,0,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,1,0,aa0e290d-21ab-4197-b8f3-cf1f97ab1b98,aa0e290d-21ab-4197-b8f3-cf1f97ab1b98,1,0,eefa9859-4168-4a10-923f-e4a713c99a3b,eefa9859-4168-4a10-923f-e4a713c99a3b,1,0,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,1,0,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,1,0,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,1,0,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,1,0,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,1,0,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,1,0,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,1,0,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,1,0,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,1,0,39bddcde-697c-4e77-adfd-e4a77529ea97,39bddcde-697c-4e77-adfd-e4a77529ea97,1,0,a3b15381-bf9b-4b26-96eb-392fa2cc8223,a3b15381-bf9b-4b26-96eb-392fa2cc8223,1,0,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,1,0,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,1,0,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,1,0,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,1,0,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,1,0,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,1,0,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,1,0,8e9eb604-5f15-4ef5-8906-5bcd57b3d099,8e9eb604-5f15-4ef5-8906-5bcd57b3d099,1,0,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,1,0,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,1,0,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,1,0,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,1,0,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,1,0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,1,0,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,1,0,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,1,0,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,1,0,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,1,0,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,1,0,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,1,0,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,1,0,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,1,0,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,1,0,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,1,0,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,1,0,42f4ad3c-3724-4032-82f0-10c8dbe6cc9f,42f4ad3c-3724-4032-82f0-10c8dbe6cc9f,1,0,bbd8b83d-413a-4ffc-8351-e0ec4f4ae619,bbd8b83d-413a-4ffc-8351-e0ec4f4ae619,1,0,c49cef0d-3b71-4e66-9e35-72b94920dae5,c49cef0d-3b71-4e66-9e35-72b94920dae5,1,0,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,1,0,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,1,0,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,1,0,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,1,0,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,1,0,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,1,0,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,1,0,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,1,0,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,1,0,b6206c73-cf17-4e74-a14d-f2a2ef2b2cc1,b6206c73-cf17-4e74-a14d-f2a2ef2b2cc1,1,0,b363f72f-3629-453c-9f7d-9828ef6de733,b363f72f-3629-453c-9f7d-9828ef6de733,1,0,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,1,0,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,1,0,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,1,0,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,1,0,c6c26c3c-de7a-4ed4-944d-ada62cf1ab8f,c6c26c3c-de7a-4ed4-944d-ada62cf1ab8f,1,0,a54872fc-4e7e-4829-8564-1b2e7f0ee134,a54872fc-4e7e-4829-8564-1b2e7f0ee134,1,0,fe10d76e-3f80-4529-83a8-74c452a781f6,fe10d76e-3f80-4529-83a8-74c452a781f6,1,0,e3d1a7f5-ba86-414e-b2d2-89cc9db51667,e3d1a7f5-ba86-414e-b2d2-89cc9db51667,1,0,13333d66-ff04-49ec-973a-1229da8c9f50,13333d66-ff04-49ec-973a-1229da8c9f50,1,0,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,1,0,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,1,0,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,1,0,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,1,0,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,1,0,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,1,0,77c8a065-a8aa-4f39-93b6-c88f4c38ec66,77c8a065-a8aa-4f39-93b6-c88f4c38ec66,1,0,366fa6da-d3bf-4bb0-9a55-a307f9edee6a,366fa6da-d3bf-4bb0-9a55-a307f9edee6a,1,0,dd0610c8-cd87-4fe2-8a1f-70157132785b,dd0610c8-cd87-4fe2-8a1f-70157132785b,1,0,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,1,0,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,1,0,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,1,0,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,1,0,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,1,0,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,1,0,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,1,0,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,1,0,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,1,0,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,1,0,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,1,0,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,1,0,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,1,0,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,1,0,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,1,0,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,1,0,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,1,0,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,1,0,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,1,0,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,1,0,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,1,0,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,1,0,02abb5e3-9d4e-4c45-af19-71796966ed19,02abb5e3-9d4e-4c45-af19-71796966ed19,1,0,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,1,0,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,1,0,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,1,0,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,1,0,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,1,0,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,1,0,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,1,0,50515bbc-43ee-4b00-bfc5-105b7981bd8f,50515bbc-43ee-4b00-bfc5-105b7981bd8f,1,0,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,1,0,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,1,0,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,1,0,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,1,0,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,1,0,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,1,0,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,1,0,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,1,0,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,1,0,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,1,0,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,1,0,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,1,0,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,1,0,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,1,0,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,1,0,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,1,0,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,1,0,d71ca3bc-e41a-44d9-afe4-c68f1211b3a1,d71ca3bc-e41a-44d9-afe4-c68f1211b3a1,1,0,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,1,0,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,1,0,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,1,0,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,1,0,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,1,0,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,1,0,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,1,0,6564ce89-134f-4726-8693-fd93aad46180,6564ce89-134f-4726-8693-fd93aad46180,1,0,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,1,0,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,1,0,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,1,0,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,1,0,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,1,0,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,1,0,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,1,0,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,1,0,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,1,0,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,1,0,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,1,0,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,1,0,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,1,0,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,1,0,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,1,0,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,1,0,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,1,0,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,1,0,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,1,0,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,1,0,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,1,0,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,1,0,7d5b2b73-27e6-4a61-9558-eb2410eb9f2f,7d5b2b73-27e6-4a61-9558-eb2410eb9f2f,1,0,d754ed75-2a32-4b86-a153-7b50c39f9836,d754ed75-2a32-4b86-a153-7b50c39f9836,1,0,b81f3ee1-66f7-4626-a35b-ef85388c678e,b81f3ee1-66f7-4626-a35b-ef85388c678e,1,0,2ad04793-c162-4915-a260-ca4da535cdac,2ad04793-c162-4915-a260-ca4da535cdac,1,0,78942e92-a31c-4824-a614-a6e07ae26171,78942e92-a31c-4824-a614-a6e07ae26171,1,0,6568d853-dfe5-4064-aa73-c1f546e951b4,6568d853-dfe5-4064-aa73-c1f546e951b4,1,0,7cee27a7-9827-47f8-96f3-d4f1f3dcabe9,7cee27a7-9827-47f8-96f3-d4f1f3dcabe9,1,0,9bfba5cd-551a-4685-99dd-ebfd9f7fd7d1,9bfba5cd-551a-4685-99dd-ebfd9f7fd7d1,1,0,bbe718b2-6b4c-4d78-a408-5369d356a1e6,bbe718b2-6b4c-4d78-a408-5369d356a1e6,1,0,4ecd85c4-5be7-4e6b-8c53-7dd32bd4d707,4ecd85c4-5be7-4e6b-8c53-7dd32bd4d707,1,0,eb7623df-b4e3-4272-9f92-42a9214f9f17,eb7623df-b4e3-4272-9f92-42a9214f9f17,1,0,a5f5bc90-e670-4ee7-95fe-067fe1b129f7,a5f5bc90-e670-4ee7-95fe-067fe1b129f7,1,0,f790f620-2247-4a04-b0ad-8aa591655948,f790f620-2247-4a04-b0ad-8aa591655948,1,0,6d9d9087-91ad-4368-9087-0af8f83fdc9e,6d9d9087-91ad-4368-9087-0af8f83fdc9e,1,0,61fdb27e-b449-40a7-8ecd-7e3e8ae3aa23,61fdb27e-b449-40a7-8ecd-7e3e8ae3aa23,1,0,c7e4e97f-fb85-4e95-bfdf-7706e867d89b,c7e4e97f-fb85-4e95-bfdf-7706e867d89b,1,0,b08fd921-c3d6-44eb-9401-fec5acab5d22,b08fd921-c3d6-44eb-9401-fec5acab5d22,1,0,f4f185af-5507-427c-b82b-515ea71f3fc1,f4f185af-5507-427c-b82b-515ea71f3fc1,1,0,1611855a-abf4-4269-aed3-3f78dce7bea5,1611855a-abf4-4269-aed3-3f78dce7bea5,1,0,c5bd277c-b258-43af-9c80-3e328b1581f5,c5bd277c-b258-43af-9c80-3e328b1581f5,1,0,96dac7e8-5113-4217-ac0a-fffea4acc410,96dac7e8-5113-4217-ac0a-fffea4acc410,1,0,d6fa2b86-1c3b-4c14-8a66-b6dbd40bca19,d6fa2b86-1c3b-4c14-8a66-b6dbd40bca19,1,0,f9cefef4-2182-42ca-93ef-b6a51d6555cc,f9cefef4-2182-42ca-93ef-b6a51d6555cc,1,0,71e1c7de-7367-424c-ae07-6ec04b408b83,71e1c7de-7367-424c-ae07-6ec04b408b83,1,0,b3956392-199c-4934-80d1-8cdab453d879,b3956392-199c-4934-80d1-8cdab453d879,1,0,5e26aeb7-617c-4983-b40d-5a61c77aa6a4,5e26aeb7-617c-4983-b40d-5a61c77aa6a4,1,0,d1bd7448-aa5f-43fc-9735-224f36960c3e,d1bd7448-aa5f-43fc-9735-224f36960c3e,1,0,94dbfc4c-d530-4fbd-b7cf-a58a56289b97,94dbfc4c-d530-4fbd-b7cf-a58a56289b97,1,0,6fa25c57-411d-4f9c-9c3e-c7ea1b1f7195,6fa25c57-411d-4f9c-9c3e-c7ea1b1f7195,1,0,1bfa15cf-222e-4e5b-beb7-7a50f8131799,1bfa15cf-222e-4e5b-beb7-7a50f8131799,1,0,8227471b-8ffb-4ba7-b4da-b21570582876,8227471b-8ffb-4ba7-b4da-b21570582876,1,0,ea7ab9fa-5119-4773-b17d-fc74c7479d3d,ea7ab9fa-5119-4773-b17d-fc74c7479d3d,1,0,3e0fe508-87fa-47af-a47f-c0630a186900,3e0fe508-87fa-47af-a47f-c0630a186900,1,0,09740271-b8a8-4949-a116-b64449d80036,09740271-b8a8-4949-a116-b64449d80036,1,0,c8fedc0b-33d6-46a5-b4fc-a3cd728f5fd7,c8fedc0b-33d6-46a5-b4fc-a3cd728f5fd7,1,0,25864028-1a53-4a8d-b6e4-189fa62c62f5,25864028-1a53-4a8d-b6e4-189fa62c62f5,1,0,e923beae-0bd8-4119-a802-fd6bfb729f10,e923beae-0bd8-4119-a802-fd6bfb729f10,1,0,67c1269a-79e6-44d9-9254-671c50fb3974,67c1269a-79e6-44d9-9254-671c50fb3974,1,0,5d455d2a-910d-48c7-bc74-ba5ad7855110,5d455d2a-910d-48c7-bc74-ba5ad7855110,1,0,7cf3feea-75e2-42cc-9c89-4a9182034910,7cf3feea-75e2-42cc-9c89-4a9182034910,1,0,930a0156-feb3-4e14-96a5-cd183a4891f4,930a0156-feb3-4e14-96a5-cd183a4891f4,1,0,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,1,0,e268a337-f576-4ec2-8a22-0500b79b2441,e268a337-f576-4ec2-8a22-0500b79b2441,1,0,eb33a8fa-75a6-4926-a025-05bc0abe4374,eb33a8fa-75a6-4926-a025-05bc0abe4374,1,0,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,1,0,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,1,0,bf480259-6e72-4ad1-ac41-0b0d41a75387,bf480259-6e72-4ad1-ac41-0b0d41a75387,1,0,a41f060a-f0f6-4940-960b-5056082b2c45,a41f060a-f0f6-4940-960b-5056082b2c45,1,0,5d45a926-513f-4bbc-a002-54a2db94b297,5d45a926-513f-4bbc-a002-54a2db94b297,1,0,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,1,0,073e14d4-5d43-428b-a9a7-985d173e94c7,073e14d4-5d43-428b-a9a7-985d173e94c7,1,0,61dc318a-c17d-402e-bf64-a0c0a63a1c93,61dc318a-c17d-402e-bf64-a0c0a63a1c93,1,0,c4b0c101-8cd9-441c-b94c-9dfa1ad58d45,c4b0c101-8cd9-441c-b94c-9dfa1ad58d45,1,0,2394775b-8910-4667-9c74-e1606e0b13bc,2394775b-8910-4667-9c74-e1606e0b13bc,1,0,43c88ffd-a036-4563-890b-bdc60180e841,43c88ffd-a036-4563-890b-bdc60180e841,1,0,af6e5e8e-6482-4820-a810-9e275ae039bf,af6e5e8e-6482-4820-a810-9e275ae039bf,1,0,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,1,0,7690620b-21d9-463a-8c22-60844927b4a0,7690620b-21d9-463a-8c22-60844927b4a0,1,0,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,1,0,b1db3255-38da-4684-b44e-4e2e9ee1dc35,b1db3255-38da-4684-b44e-4e2e9ee1dc35,1,0,4761f89b-7894-4dca-83b0-3be2d0828781,4761f89b-7894-4dca-83b0-3be2d0828781,1,0,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,1,0,7236d52f-9068-45ad-8b92-a7319e737e08,7236d52f-9068-45ad-8b92-a7319e737e08,1,0,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,1,0,9db23e96-d13a-4847-941a-462f64d0619d,9db23e96-d13a-4847-941a-462f64d0619d,1,0,7575fd54-c91b-4220-a2ef-2cf533f60426,7575fd54-c91b-4220-a2ef-2cf533f60426,1,0,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1,0,26e2c83b-8873-4ad3-9c50-e94421473a43,26e2c83b-8873-4ad3-9c50-e94421473a43,1,0,f0b2ec05-8e01-4ccf-b927-671329a9013b,f0b2ec05-8e01-4ccf-b927-671329a9013b,1,0,ab442b11-2482-4f80-ac82-01966e0657ec,ab442b11-2482-4f80-ac82-01966e0657ec,1,0,14fe4d39-81a1-470e-9724-6642ce34ad89,14fe4d39-81a1-470e-9724-6642ce34ad89,1,0,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,1,0,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,1,0,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,1,0,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,1,0,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,1,0,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,1,0,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,1,0,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,1,0,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,1,0,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,1,0,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,1,0,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,1,0,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,1,0,5a4abb96-8a18-4249-9fbb-7270fe2ba25b,5a4abb96-8a18-4249-9fbb-7270fe2ba25b,1,0,6852c584-d989-418d-8d18-255492891ef0,6852c584-d989-418d-8d18-255492891ef0,1,0,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,1,0,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,1,0,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,1,0,ff830967-faa9-415f-aa6e-8d27779f91f8,ff830967-faa9-415f-aa6e-8d27779f91f8,1,0,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,1,0,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,1,0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,1,0,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,1,0,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,1,0,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,1,0,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,1,0,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,1,0,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,1,0,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,1,0,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,1,0,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,1,0,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,1,0,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,1,0,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,1,0,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,1,0,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,1,0,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,1,0,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,1,0,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,1,0,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,1,0,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1,0,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,1,0,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,1,0,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,1,0,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,1,0,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1,0,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,1,0,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,1,0,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,1,0,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,1,0,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,1,0,efd4e0a3-2f98-40ef-8089-c853cd588fa6,efd4e0a3-2f98-40ef-8089-c853cd588fa6,1,0,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,1,0,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,1,0,bf30b754-84fb-4104-b52b-a4f7df6fba12,bf30b754-84fb-4104-b52b-a4f7df6fba12,1,0,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,1,0,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,1,0,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,1,0,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,1,0,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,1,0,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,1,0,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,1,0,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,1,0,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,1,0,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,1,0,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,1,0,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,1,0,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,1,0,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,1,0,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,1,0,abf8a23d-45c3-4feb-8df2-279b709d7722,abf8a23d-45c3-4feb-8df2-279b709d7722,1,0,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,1,0,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,1,0,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,1,0,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,1,0,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,1,0,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,1,0,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,1,0,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,1,0,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,1,0,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,1,0,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,1,0,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,1,0,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,1,0,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,1,0,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,1,0,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,1,0,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,1,0,8525d945-08aa-4928-8dca-4e172ea94328,8525d945-08aa-4928-8dca-4e172ea94328,1,0,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,1,0,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,1,0,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,1,0,82be906c-bb06-40ea-b908-54574b0b4848,82be906c-bb06-40ea-b908-54574b0b4848,1,0,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,1,0,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,1,0,1f8cb390-2cbb-4a88-96ee-b31695b73d78,1f8cb390-2cbb-4a88-96ee-b31695b73d78,1,0,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,1,0,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,1,0,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,1,0,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,1,0,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,1,0,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,1,0,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,1,0,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,1,0,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,1,0,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,1,0,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,1,0,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,1,0,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,1,0,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,1,0,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,1,0,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,1,0,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,1,0,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,1,0,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,1,0,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,1,0,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,1,0,b885dbb2-6e18-46a6-929c-3d6d392343ad,b885dbb2-6e18-46a6-929c-3d6d392343ad,1,0,d31e24cf-7493-45dc-ba81-3a00618e53bc,d31e24cf-7493-45dc-ba81-3a00618e53bc,1,0,03f32b08-1b71-47cb-ba1d-965037df4d64,03f32b08-1b71-47cb-ba1d-965037df4d64,1,0,4ec26e3d-6c38-4c90-9f91-c2235f8b4154,4ec26e3d-6c38-4c90-9f91-c2235f8b4154,1,0,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,1,0,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,1,0,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,1,0,19a0b881-302e-4d0e-ace0-29a9d8379a48,19a0b881-302e-4d0e-ace0-29a9d8379a48,1,0,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,1,0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,1,0,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,1,0,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,1,0,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,1,0,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,1,0,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,1,0,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,1,0,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,1,0,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,1,0,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,1,0,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,1,0,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,1,0,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,1,0,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,1,0,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,1,0,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,1,0,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,1,0,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,1,0,e9ab9d00-6e42-439b-8efc-fcacf727016d,e9ab9d00-6e42-439b-8efc-fcacf727016d,1,0,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,1,0,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,1,0,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,1,0,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,1,0,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,1,0,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,1,0,f9229c3e-4a47-49a4-8b14-908218012ff7,f9229c3e-4a47-49a4-8b14-908218012ff7,1,0,7c8b9203-2808-4a78-a2b1-b7a71b4f13f6,7c8b9203-2808-4a78-a2b1-b7a71b4f13f6,1,0,b9743978-ba6d-4892-bb32-f24d4a47dd50,b9743978-ba6d-4892-bb32-f24d4a47dd50,1,0,c43accb9-f33d-437f-b305-0595f8fe3032,c43accb9-f33d-437f-b305-0595f8fe3032,1,0,084a398b-836e-424c-af93-22aa39d5a15a,084a398b-836e-424c-af93-22aa39d5a15a,1,0,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,1,0,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,1,0,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,1,0,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,1,0,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,1,0,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,1,0,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,1,0,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,1,0,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,1,0,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,1,0,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,1,0,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,1,0,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,1,0,2b2bf0f7-0946-4492-bba0-27f007a70e64,2b2bf0f7-0946-4492-bba0-27f007a70e64,1,0,22c9a703-5ed3-4156-8fa6-476b1c1452f1,22c9a703-5ed3-4156-8fa6-476b1c1452f1,1,0,8be10d88-8c37-4444-9c89-6cbbe9913bda,8be10d88-8c37-4444-9c89-6cbbe9913bda,1,0,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,1,0,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,1,0,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,1,0,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,1,0,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,1,0,cb1d4a41-20a9-4d76-8798-d47d8858bff1,cb1d4a41-20a9-4d76-8798-d47d8858bff1,1,0,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,1,0,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,1,0,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,1,0,b4c026eb-4271-4366-b529-1cdfe2874563,b4c026eb-4271-4366-b529-1cdfe2874563,1,0,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,1,0,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,1,0,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,1,0,5198c6db-2100-4902-82c8-85c8ea555e78,5198c6db-2100-4902-82c8-85c8ea555e78,1,0,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,1,0,f0b1e9f4-2e07-44e6-88d2-c11457135781,f0b1e9f4-2e07-44e6-88d2-c11457135781,1,0,e010c0f9-f770-4fdc-8607-50838c0262ef,e010c0f9-f770-4fdc-8607-50838c0262ef,1,0,f935399f-3554-4c08-b0a6-eba13074e1b7,f935399f-3554-4c08-b0a6-eba13074e1b7,1,0,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,1,0,765f9584-fefa-4695-b130-dd54c3b0d79d,765f9584-fefa-4695-b130-dd54c3b0d79d,1,0,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,1,0,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,1,0,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,1,0,2c1c9284-ba8b-4282-a89c-429f02ea41f6,2c1c9284-ba8b-4282-a89c-429f02ea41f6,1,0,8c241467-76f7-4161-a8a1-5da4a6576b75,8c241467-76f7-4161-a8a1-5da4a6576b75,1,0,1d3b9eff-5d0b-437b-932f-0ec466e092b2,1d3b9eff-5d0b-437b-932f-0ec466e092b2,1,0,fd7e5257-024c-46de-9ff3-edd302fadba5,fd7e5257-024c-46de-9ff3-edd302fadba5,1,0,a4168057-d99f-4b55-b762-214f95ae3a30,a4168057-d99f-4b55-b762-214f95ae3a30,1,0,ab4fe549-1c07-42d9-b412-8b89ed115591,ab4fe549-1c07-42d9-b412-8b89ed115591,1,0,0335804e-efe5-4fb9-9ae9-2ddca73d77f3,0335804e-efe5-4fb9-9ae9-2ddca73d77f3,1,0,b49c589d-b45d-4aff-8899-72cfe433e9a6,b49c589d-b45d-4aff-8899-72cfe433e9a6,1,0,f71a8d47-6a6c-4b7e-90b3-5b7a3be3ccd3,f71a8d47-6a6c-4b7e-90b3-5b7a3be3ccd3,1,0,273ad3f7-c645-434d-93b0-e832134f3043,273ad3f7-c645-434d-93b0-e832134f3043,1,0,d320803b-1de4-4e66-b455-0afe39be5c41,d320803b-1de4-4e66-b455-0afe39be5c41,1,0,67e85b9a-a138-49ea-b474-04475f0f8c90,67e85b9a-a138-49ea-b474-04475f0f8c90,1,0,5d990585-02dd-4a13-8dfa-920df7d1dbb0,5d990585-02dd-4a13-8dfa-920df7d1dbb0,1,0,788a98e0-194f-466c-b4fa-bafd527aae26,788a98e0-194f-466c-b4fa-bafd527aae26,1,0,07820e9e-9d6b-4c37-909e-90dbd33e30c0,07820e9e-9d6b-4c37-909e-90dbd33e30c0,1,0,364218e0-87ba-4008-a3e3-e2351a5e04b8,364218e0-87ba-4008-a3e3-e2351a5e04b8,1,0,143f6db9-a4dc-4039-90d0-6161394a3e2f,143f6db9-a4dc-4039-90d0-6161394a3e2f,1,0,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,1,0,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,1,0,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,1,0,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,1,0,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,1,0,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,1,0,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,1,0,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,1,0,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,1,0,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,1,0,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,1,0,86249619-8981-4fc4-85fc-ce30e4b9d542,86249619-8981-4fc4-85fc-ce30e4b9d542,1,0,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,1,0,98aa8a80-29fa-4a54-8d0e-90d413d63da1,98aa8a80-29fa-4a54-8d0e-90d413d63da1,1,0,60af0c11-852e-4b45-afb7-251d75a87150,60af0c11-852e-4b45-afb7-251d75a87150,1,0,37e81463-a558-4b03-b0e4-82ac0e99c80c,37e81463-a558-4b03-b0e4-82ac0e99c80c,1,0,8be35c43-32e6-418d-b3d6-e53ef56babb7,8be35c43-32e6-418d-b3d6-e53ef56babb7,1,0,3e4f5fd0-af15-41ae-896e-458ce9fb7e4d,3e4f5fd0-af15-41ae-896e-458ce9fb7e4d,1,0,935d01e1-232b-480e-a6bf-c21c617c6348,935d01e1-232b-480e-a6bf-c21c617c6348,1,0,9bc7cc99-1237-4f9c-8a4e-f3ab459186ef,9bc7cc99-1237-4f9c-8a4e-f3ab459186ef,1,0,05c702a1-2c74-45d5-b2ee-fdd795b0945a,05c702a1-2c74-45d5-b2ee-fdd795b0945a,1,0,5ede72fd-2510-4c06-b625-be740bb04e29,5ede72fd-2510-4c06-b625-be740bb04e29,1,0,17f37228-b0cd-420d-bc82-b18dc04c03c9,17f37228-b0cd-420d-bc82-b18dc04c03c9,1,0,3f9b66ea-7db2-434d-8e3b-00df8eb11dbd,3f9b66ea-7db2-434d-8e3b-00df8eb11dbd,1,0,d43fb14b-2051-4ba5-8379-af6996e603b3,d43fb14b-2051-4ba5-8379-af6996e603b3,1,0,cfb01fef-b70d-41ac-82b9-d6d2e9644388,cfb01fef-b70d-41ac-82b9-d6d2e9644388,1,0,91dee0d3-14b5-4aa1-9058-8f949e7df923,91dee0d3-14b5-4aa1-9058-8f949e7df923,1,0,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,1,0,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,1,0,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,1,0,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,1,0,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,1,0,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,1,0,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,1,0,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,1,0,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,1,0,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,1,0,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,1,0,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,1,0,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,1,0,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,1,0,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,1,0,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,1,0,2f9c347d-ee82-49f2-a5eb-97f55374856f,2f9c347d-ee82-49f2-a5eb-97f55374856f,1,0,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,1,0,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,1,0,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,1,0,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,1,0,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,1,0,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,1,0,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,1,0,a89ee622-6942-411a-8566-f03d139c9e5b,a89ee622-6942-411a-8566-f03d139c9e5b,1,0,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,1,0,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,1,0,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,1,0,198ea989-5001-47ac-86b8-aa2585a5f7d7,198ea989-5001-47ac-86b8-aa2585a5f7d7,1,0,4abe448b-a225-4ac2-8cc9-c3c6c0e9b1ac,4abe448b-a225-4ac2-8cc9-c3c6c0e9b1ac,1,0,fb84c5f7-11da-4b17-979e-41e27a74e789,fb84c5f7-11da-4b17-979e-41e27a74e789,1,0,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,1,0,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,1,0,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,1,0,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,1,0,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,1,0,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,1,0,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,1,0,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,1,0,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,1,0,6de34ed8-5d6c-4bb6-af94-328e692b862e,6de34ed8-5d6c-4bb6-af94-328e692b862e,1,0,e705bde3-45c3-4ffd-a767-0320c6cc8b91,e705bde3-45c3-4ffd-a767-0320c6cc8b91,1,0,504280a1-a451-4547-ae71-e217f8fdf8f6,504280a1-a451-4547-ae71-e217f8fdf8f6,1,0,b071a9fe-0e9f-4ded-8dab-b1388fd12897,b071a9fe-0e9f-4ded-8dab-b1388fd12897,1,0,a2accd5e-e6f5-4d5f-8243-51aadfa88b00,a2accd5e-e6f5-4d5f-8243-51aadfa88b00,1,0,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,1,0,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,1,0,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,1,0,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,1,0,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,1,0,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,1,0,fad26b16-8638-496b-bd12-381fc6f5b71f,fad26b16-8638-496b-bd12-381fc6f5b71f,1,0,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,1,0,324a56c9-02d9-4177-af84-a817b8c41169,324a56c9-02d9-4177-af84-a817b8c41169,1,0,64ed8c1a-6446-4f0d-a2ef-c599e84c4909,64ed8c1a-6446-4f0d-a2ef-c599e84c4909,1,0,52fc85fb-309b-4739-bbd3-c3966657e973,52fc85fb-309b-4739-bbd3-c3966657e973,1,0,87081ab5-bdd5-4daa-88ef-8a2cba8c7d53,87081ab5-bdd5-4daa-88ef-8a2cba8c7d53,1,0,be3cfba8-e6f6-4202-ab0f-96c00fbf7462,be3cfba8-e6f6-4202-ab0f-96c00fbf7462,1,0,64ef1b5c-ec04-45eb-9998-bc573f4038d7,64ef1b5c-ec04-45eb-9998-bc573f4038d7,1,0,4fde5159-8f21-4151-8dbd-b2cd376d9392,4fde5159-8f21-4151-8dbd-b2cd376d9392,1,0,3ea799a6-6642-4388-b0a3-c2962e71ff51,3ea799a6-6642-4388-b0a3-c2962e71ff51,1,0,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,1,0,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,1,0,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,1,0,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,1,0,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,1,0,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,1,0,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,1,0,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,1,0,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,1,0,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,1,0,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,1,0,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,1,0,3ab0649b-239f-4466-b897-73c0ab628927,3ab0649b-239f-4466-b897-73c0ab628927,1,0,4c697110-8941-4d6d-ba03-f2b9e96ff82e,4c697110-8941-4d6d-ba03-f2b9e96ff82e,1,0,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,1,0,b172631b-da0d-42f4-ae6b-ae122a46cced,b172631b-da0d-42f4-ae6b-ae122a46cced,1,0,1a25e744-37ae-46ca-a328-ff8eced21a82,1a25e744-37ae-46ca-a328-ff8eced21a82,1,0,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,1,0,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,1,0,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,1,0,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,1,0,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,1,0,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,1,0,a0861dd3-ced5-485e-8719-0ad0bc3adc0d,a0861dd3-ced5-485e-8719-0ad0bc3adc0d,1,0,5a94a307-3f54-4753-8ef5-ce9f88417827,5a94a307-3f54-4753-8ef5-ce9f88417827,1,0,0f09b6b8-72ac-4461-96c4-683be403e2ff,0f09b6b8-72ac-4461-96c4-683be403e2ff,1,0,b73d0f07-9c6e-41b1-9acc-8e83dacd7528,b73d0f07-9c6e-41b1-9acc-8e83dacd7528,1,0,19d1d74a-de5f-475a-896c-a32b7d28f918,19d1d74a-de5f-475a-896c-a32b7d28f918,1,0,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,1,0,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,1,0,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,1,0,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,1,0,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,1,0,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,1,0,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,1,0,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,1,0,c343495b-5947-4fe7-a94b-d1f2b2455b4f,c343495b-5947-4fe7-a94b-d1f2b2455b4f,1,0,fbce7316-bb9a-40c1-af3c-352f4b559ab6,fbce7316-bb9a-40c1-af3c-352f4b559ab6,1,0,a3721457-b33b-4742-b6e1-531af10969d1,a3721457-b33b-4742-b6e1-531af10969d1,1,0,9619a603-e578-4f30-bcc6-adfddfa915c0,9619a603-e578-4f30-bcc6-adfddfa915c0,1,0,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,1,0,4a55351b-77e2-4c7c-a7d7-aac213d3c2a7,4a55351b-77e2-4c7c-a7d7-aac213d3c2a7,1,0,f79ac41b-6ab2-4afc-aa98-b70b72d78bb4,f79ac41b-6ab2-4afc-aa98-b70b72d78bb4,1,0,2c5a56d3-386e-45df-adc2-4471f52f9bdc,2c5a56d3-386e-45df-adc2-4471f52f9bdc,1,0,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,1,0,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,1,0,22474ca3-565b-4b67-a5b4-b0b959306d10,22474ca3-565b-4b67-a5b4-b0b959306d10,1,0,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1,0,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,1,0,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,1,0,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,1,0,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,1,0,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,1,0,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,1,0,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,1,0,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,1,0,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,1,0,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,1,0,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,1,0,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,1,0,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,1,0,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,1,0,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,1,0,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,1,0,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,1,0,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,1,0,3e44d463-f253-4a64-8d68-631fcb66935c,3e44d463-f253-4a64-8d68-631fcb66935c,1,0,653d6483-029b-4453-a7d0-3a3c6d9d0b05,653d6483-029b-4453-a7d0-3a3c6d9d0b05,1,0,ac507771-50bd-4f8b-b72f-5954562c9131,ac507771-50bd-4f8b-b72f-5954562c9131,1,0,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,1,0,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,1,0,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,1,0,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,1,0,950b3ee3-070f-4946-8b9b-0aa2058de986,950b3ee3-070f-4946-8b9b-0aa2058de986,1,0,bd04a870-0943-4bdb-9e30-50a69daa8a13,bd04a870-0943-4bdb-9e30-50a69daa8a13,1,0,573c2153-7069-4589-8a2a-4517edca877d,573c2153-7069-4589-8a2a-4517edca877d,1,0,0a2f03c1-87d7-4589-9c47-8dd67faa1759,0a2f03c1-87d7-4589-9c47-8dd67faa1759,1,0,d1475ede-879c-4085-9980-2edaaf0eb0e9,d1475ede-879c-4085-9980-2edaaf0eb0e9,1,0,54eac28f-da81-4939-b2f9-924d3c215de5,54eac28f-da81-4939-b2f9-924d3c215de5,1,0,20d34659-1bde-4af0-be2c-da922e4ace6e,20d34659-1bde-4af0-be2c-da922e4ace6e,1,0,dec45aee-a4a8-473c-904e-15d5ff31efc3,dec45aee-a4a8-473c-904e-15d5ff31efc3,1,0,8b9318e5-c6ce-4253-9759-8ddd42468775,8b9318e5-c6ce-4253-9759-8ddd42468775,1,0,be75d0b2-c9db-4dab-9e32-dbe26d667508,be75d0b2-c9db-4dab-9e32-dbe26d667508,1,0,299c014f-996a-4a99-a5be-a7cfd5ee45e4,299c014f-996a-4a99-a5be-a7cfd5ee45e4,1,0,2569b69d-006f-478e-83b7-9163048b34bb,2569b69d-006f-478e-83b7-9163048b34bb,1,0,1ee47933-8117-4d47-9245-476c0ed3a373,1ee47933-8117-4d47-9245-476c0ed3a373,1,0,31cac1e9-eb16-489c-9322-30d1e27a80b3,31cac1e9-eb16-489c-9322-30d1e27a80b3,1,0,0d100e33-7941-41c1-962d-7672c874e9c5,0d100e33-7941-41c1-962d-7672c874e9c5,1,0,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,1,0,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,1,0,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,1,0,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,1,0,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,1,0,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,1,0,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1,0,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,1,0,05507f2b-eed8-4da4-8efc-77d9d8e2daca,05507f2b-eed8-4da4-8efc-77d9d8e2daca,1,0,0440ed06-3f42-48a8-9431-fd608920b577,0440ed06-3f42-48a8-9431-fd608920b577,1,0,37be75c9-bf1a-437a-ab05-f9e3aac6f440,37be75c9-bf1a-437a-ab05-f9e3aac6f440,1,0,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,1,0,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,1,0,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,1,0,e3adb576-6b33-475b-976b-7a6783de3184,e3adb576-6b33-475b-976b-7a6783de3184,1,0,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,1,0,78f5a205-dffb-4009-897a-e8f36372f33c,78f5a205-dffb-4009-897a-e8f36372f33c,1,0,f7597041-f182-42fb-803a-2521c70d627d,f7597041-f182-42fb-803a-2521c70d627d,1,0,ce988b8a-d0c1-400a-9466-aa757501bb58,ce988b8a-d0c1-400a-9466-aa757501bb58,1,0,ab98d665-8da8-406e-9e0e-3e130ab393ef,ab98d665-8da8-406e-9e0e-3e130ab393ef,1,0,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,1,0,ea8beea1-7d80-4613-b2f9-79ee612e977a,ea8beea1-7d80-4613-b2f9-79ee612e977a,1,0,afd62a32-fdbb-429a-9a64-89c61a07e018,afd62a32-fdbb-429a-9a64-89c61a07e018,1,0,027cef43-99bd-48d3-a1a3-2102ac003742,027cef43-99bd-48d3-a1a3-2102ac003742,1,0,00197ea9-de76-4e2a-97bc-93e44053e35e,00197ea9-de76-4e2a-97bc-93e44053e35e,1,0,540a47b8-f6d4-4531-ac87-3f7cfbef4c8c,540a47b8-f6d4-4531-ac87-3f7cfbef4c8c,1,0,a51f7c6f-2631-4d23-becc-c0e8b711fddd,a51f7c6f-2631-4d23-becc-c0e8b711fddd,1,0,37806357-d92c-4bea-a5ef-77f138578fda,37806357-d92c-4bea-a5ef-77f138578fda,1,0,91b100e6-fbbe-4bb0-8d51-d12595a2a3e8,91b100e6-fbbe-4bb0-8d51-d12595a2a3e8,1,0,0a880538-f97f-448e-a4a9-82b0194dbe28,0a880538-f97f-448e-a4a9-82b0194dbe28,1,0,179868b7-d342-4df0-9386-c114d75faf3a,179868b7-d342-4df0-9386-c114d75faf3a,1,0,bbc4cc8c-31c2-4fcf-b86c-9ec65b2772b0,bbc4cc8c-31c2-4fcf-b86c-9ec65b2772b0,1,0,929e9199-dfd5-497d-ad77-6638d20c7336,929e9199-dfd5-497d-ad77-6638d20c7336,1,0,4d1546ee-30ff-4cf7-afd3-60b565e3cb53,4d1546ee-30ff-4cf7-afd3-60b565e3cb53,1,0,aaf51715-f468-4856-b9ae-fd66bc143633,aaf51715-f468-4856-b9ae-fd66bc143633,1,0,e9650eea-d35a-4abc-977c-fb9b2abba0e5,e9650eea-d35a-4abc-977c-fb9b2abba0e5,1,0,b00626a3-5438-40c4-8ca9-5609e9dfe476,b00626a3-5438-40c4-8ca9-5609e9dfe476,1,0,b537f309-f957-4804-9f0f-03a71aedf694,b537f309-f957-4804-9f0f-03a71aedf694,1,0,4d72bd30-8d60-4f84-9ad8-83489d9cb3fb,4d72bd30-8d60-4f84-9ad8-83489d9cb3fb,1,0,7e4afed8-5c56-4765-bcd0-a40e6121ba22,7e4afed8-5c56-4765-bcd0-a40e6121ba22,1,0,155660a1-8a63-4562-a715-d75a8af7176b,155660a1-8a63-4562-a715-d75a8af7176b,1,0,878fe826-fa99-44ad-9891-5eada9744017,878fe826-fa99-44ad-9891-5eada9744017,1,0,0d61712a-dfaf-46f1-b728-62993dd94fbe,0d61712a-dfaf-46f1-b728-62993dd94fbe,1,0,3a6cf496-09b9-4947-9df5-06d23b474558,3a6cf496-09b9-4947-9df5-06d23b474558,1,0,625b498a-33d1-4162-9525-fb7790cbb6a8,625b498a-33d1-4162-9525-fb7790cbb6a8,1,0,28223f7b-d15a-4f12-b57c-1f6d08a902f9,28223f7b-d15a-4f12-b57c-1f6d08a902f9,1,0,dd9eb5b7-5aed-4e51-9939-9ff14492d240,dd9eb5b7-5aed-4e51-9939-9ff14492d240,1,0,b2a14899-d589-4990-b85e-7bffb427e8af,b2a14899-d589-4990-b85e-7bffb427e8af,1,0,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0981d114-05bd-4ee1-a8fd-398fa6620d0b,1,0,3210ba40-382e-4917-ad0f-9bd88d23dc25,3210ba40-382e-4917-ad0f-9bd88d23dc25,1,0,835e3ead-d01f-410b-937a-902dd5e66aec,835e3ead-d01f-410b-937a-902dd5e66aec,1,0,40141982-d1d6-416f-844e-19143a407ff9,40141982-d1d6-416f-844e-19143a407ff9,1,0,f5c4d4ad-dda6-4dc3-b112-61f776006f3c,f5c4d4ad-dda6-4dc3-b112-61f776006f3c,1,0,466d9fd7-188e-4f3b-a673-35db9075d537,466d9fd7-188e-4f3b-a673-35db9075d537,1,0,1c2e2c7d-c9d2-46a6-81f9-30078ca511c7,1c2e2c7d-c9d2-46a6-81f9-30078ca511c7,1,0,09d3717a-d6f9-42fd-ae9e-df5658fa3981,09d3717a-d6f9-42fd-ae9e-df5658fa3981,1,0,9b26aa5f-1e77-4261-adf6-6f2f24f5af33,9b26aa5f-1e77-4261-adf6-6f2f24f5af33,1,0,b6b5e6c1-3967-4c2f-b8bc-0acc96afe240,b6b5e6c1-3967-4c2f-b8bc-0acc96afe240,1,0,de355360-f87a-4b0d-a37c-d0a091e7e984,de355360-f87a-4b0d-a37c-d0a091e7e984,1,0,8819399f-4803-413c-ad5e-7fa2c8878e5f,8819399f-4803-413c-ad5e-7fa2c8878e5f,1,0,99ff834a-f030-4af3-9b7d-f92a03f7c6f4,99ff834a-f030-4af3-9b7d-f92a03f7c6f4,1,0,afea5f32-22ff-4940-8156-3ec8b9c7bbb9,afea5f32-22ff-4940-8156-3ec8b9c7bbb9,1,0,fa01c28c-44d1-4fa9-b167-73d6cecb7730,fa01c28c-44d1-4fa9-b167-73d6cecb7730,1,0,d82c675e-7d38-417c-9cfc-6af0e86addfd,d82c675e-7d38-417c-9cfc-6af0e86addfd,1,0,319c4428-9463-4aa4-a87a-2749c49f4069,319c4428-9463-4aa4-a87a-2749c49f4069,1,0,497deeb7-0630-4f72-bcdb-ebacf8963d79,497deeb7-0630-4f72-bcdb-ebacf8963d79,1,0,ef471953-7c99-40f9-a31d-f50ed8ba3fc5,ef471953-7c99-40f9-a31d-f50ed8ba3fc5,1,0,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,1,0,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,1,0,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,1,0,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,1,0,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,1,0,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,1,0,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,1,0,fc65918a-2ad1-47b1-980d-5afe63579964,fc65918a-2ad1-47b1-980d-5afe63579964,1,0,7ece6efe-16a1-4294-8c28-3fa6427ba9f0,7ece6efe-16a1-4294-8c28-3fa6427ba9f0,1,0,61094d92-b1e6-45b9-9258-38a7bb1d6469,61094d92-b1e6-45b9-9258-38a7bb1d6469,1,0,4791b5d4-3568-4420-8c25-89ecce7c6353,4791b5d4-3568-4420-8c25-89ecce7c6353,1,0,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,1,0,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,1,0,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,1,0,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,1,0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,1,0,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1,0,00605607-03ab-43fc-ba08-9fc32f582d0a,00605607-03ab-43fc-ba08-9fc32f582d0a,1,0,5ab0a910-74ab-4af0-b5a3-40845a789fde,5ab0a910-74ab-4af0-b5a3-40845a789fde,1,0,bb659006-c11e-4427-8d86-229ba43ef679,bb659006-c11e-4427-8d86-229ba43ef679,1,0,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,1,0,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,1,0,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,1,0,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,1,0,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,1,0,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,1,0,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,1,0,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,1,0,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,1,0,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,1,0,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,1,0,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1,0,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,1,0,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,1,0,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,1,0,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,1,0,ec11342f-594f-416f-a10f-bd1bfa695c08,ec11342f-594f-416f-a10f-bd1bfa695c08,1,0,31c3ac44-204e-43fd-bca3-fd18fa091c58,31c3ac44-204e-43fd-bca3-fd18fa091c58,1,0,74f03c35-5da0-406e-a938-e8e5d49975ef,74f03c35-5da0-406e-a938-e8e5d49975ef,1,0,c9ab3890-6d16-431f-ab2b-b5058e6202a4,c9ab3890-6d16-431f-ab2b-b5058e6202a4,1,0,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,1,0,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,1,0,4090c6f7-1d25-4b17-9baa-18daa0640b0f,4090c6f7-1d25-4b17-9baa-18daa0640b0f,1,0,26125e58-dfc8-4bbb-a3a4-80616471746e,26125e58-dfc8-4bbb-a3a4-80616471746e,1,0,b1c699cd-efdc-461c-ad37-10bfd4bc9674,b1c699cd-efdc-461c-ad37-10bfd4bc9674,1,0,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,1,0,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,1,0,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,1,0,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,1,0,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,1,0,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,1,0,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,1,0,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,1,0,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,1,0,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,1,0,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,1,0,36b15776-5211-4afa-9b6c-c042121218c0,36b15776-5211-4afa-9b6c-c042121218c0,1,0,422a0e10-361f-46ba-b92e-3088d81e12a4,422a0e10-361f-46ba-b92e-3088d81e12a4,1,0,f37b7b25-abd2-4e19-9712-78aafceb4f43,f37b7b25-abd2-4e19-9712-78aafceb4f43,1,0,7cd4c6ea-5795-4bea-a159-1e66650c42fe,7cd4c6ea-5795-4bea-a159-1e66650c42fe,1,0,091fcffa-da7e-4375-bf0b-11cc4950b5ad,091fcffa-da7e-4375-bf0b-11cc4950b5ad,1,0,57e91491-73b6-43f7-b7f8-26efec56ce9e,57e91491-73b6-43f7-b7f8-26efec56ce9e,1,0,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,1,0,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,1,0,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,1,0,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,1,0,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,1,0,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,1,0,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,1,0,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,1,0,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,1,0,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,1,0,00696255-ea14-4fee-8633-0962f3c441d1,00696255-ea14-4fee-8633-0962f3c441d1,1,0,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,1,0,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,1,0,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,1,0,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,1,0,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,1,0,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,1,0,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,1,0,fef27478-ddfd-4ad9-8161-148761f29698,fef27478-ddfd-4ad9-8161-148761f29698,1,0,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,1,0,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,1,0,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,1,0,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,1,0,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,1,0,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,1,0,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,1,0,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,1,0,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1,0,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,1,0,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,1,0,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,1,0,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,1,0,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,1,0,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,1,0,dd6fdc0d-49bb-4fa1-aa17-bd9dc38a0992,dd6fdc0d-49bb-4fa1-aa17-bd9dc38a0992,1,0,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,1,0,5e86a443-bd0f-411d-b1b9-41bfa0cf1a2f,5e86a443-bd0f-411d-b1b9-41bfa0cf1a2f,1,0,fcaecd43-b938-4680-93be-963db5218f35,fcaecd43-b938-4680-93be-963db5218f35,1,0,63415525-46a2-4d70-bdab-665945a9185c,63415525-46a2-4d70-bdab-665945a9185c,1,0,27e37fde-daf0-47fa-865c-3cd86151f5be,27e37fde-daf0-47fa-865c-3cd86151f5be,1,0,b3b63074-984a-48d2-ba5b-d69dd0b8067e,b3b63074-984a-48d2-ba5b-d69dd0b8067e,1,0,fc4a9f03-c81f-4201-814c-c6d5a5029168,fc4a9f03-c81f-4201-814c-c6d5a5029168,1,0,abba612c-137a-4dff-89f3-445945c30859,abba612c-137a-4dff-89f3-445945c30859,1,0,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,1,0,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,1,0,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,1,0,d1ade16c-bd56-46e5-874f-3117c5653192,d1ade16c-bd56-46e5-874f-3117c5653192,1,0,339398c0-6407-483c-82f7-266ef08b8657,339398c0-6407-483c-82f7-266ef08b8657,1,0,4f0a8f8c-68cb-4afe-b487-64e7ceeef9ab,4f0a8f8c-68cb-4afe-b487-64e7ceeef9ab,1,0,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,1,0,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,1,0,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,1,0,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,1,0,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,1,0,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,1,0,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,1,0,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,1,0,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,1,0,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,1,0,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,1,0,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,1,0,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,1,0,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,1,0,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,1,0,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,1,0,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,1,0,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,1,0,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,1,0,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,1,0,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,1,0,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,1,0,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,1,0,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,1,0,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,1,0,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,1,0,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,1,0,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,1,0,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,1,0,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,1,0,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,1,0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,1,0,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,1,0,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,1,0,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,1,0,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,1,0,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,1,0,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,1,0,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,1,0,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,1,0,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,1,0,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,1,0,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,1,0,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,1,0,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,1,0,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,1,0,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,1,0,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,1,0,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,1,0,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,1,0,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,1,0,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,1,0,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,1,0,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,1,0,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,1,0,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,1,0,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,1,0,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,1,0,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,1,0,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,1,0,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,1,0,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,1,0,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,1,0,b3f7f763-bea9-4f59-9450-df95e5c3d89d,b3f7f763-bea9-4f59-9450-df95e5c3d89d,1,0,9111e28e-c1c7-414b-9288-61bd06a04d04,9111e28e-c1c7-414b-9288-61bd06a04d04,1,0,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,1,0,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,1,0,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,1,0,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,1,0,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,1,0,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1,0,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,1,0,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,1,0,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,1,0,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,1,0,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,1,0,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1,0,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,1,0,8fbf9432-77e8-4951-87a1-4368e3a5e117,8fbf9432-77e8-4951-87a1-4368e3a5e117,1,0,fbd5d6d8-05cd-43a3-85da-8dcbeee08333,fbd5d6d8-05cd-43a3-85da-8dcbeee08333,1,0,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,1,0,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,1,0,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,1,0,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,1,0,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,1,0,3afe11f6-7424-4b41-a42f-91db33756fa3,3afe11f6-7424-4b41-a42f-91db33756fa3,1,0,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,1,0,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,1,0,134bbd7c-cadd-4395-b7a4-0249dfe7d0b1,134bbd7c-cadd-4395-b7a4-0249dfe7d0b1,1,0,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,1,0,f908b81e-f5ba-46ca-b7c0-8cb43ab23901,f908b81e-f5ba-46ca-b7c0-8cb43ab23901,1,0,3c305f89-e453-46c7-987b-f01dc964efdb,3c305f89-e453-46c7-987b-f01dc964efdb,1,0,1809ff43-2af2-44d1-ac7b-91d5bbe4f0ce,1809ff43-2af2-44d1-ac7b-91d5bbe4f0ce,1,0,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,1,0,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,1,0,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,1,0,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,1,0,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,1,0,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,1,0,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,1,0,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,1,0,c7bafd34-5b15-42ec-b329-0be3002775ad,c7bafd34-5b15-42ec-b329-0be3002775ad,1,0,6feb2278-9149-47f8-a0ec-eb4bd9f44716,6feb2278-9149-47f8-a0ec-eb4bd9f44716,1,0,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,1,0,cd6770d5-cd3c-47af-bc46-c865993adf63,cd6770d5-cd3c-47af-bc46-c865993adf63,1,0,97ec899d-a2a0-4691-83ff-25b78dd49ef6,97ec899d-a2a0-4691-83ff-25b78dd49ef6,1,0,411db885-f761-44e5-bdd1-9fdf9e741ac1,411db885-f761-44e5-bdd1-9fdf9e741ac1,1,0,269ada84-71a9-4b4b-9604-caa40c5b7067,269ada84-71a9-4b4b-9604-caa40c5b7067,1,0,ea13607a-3e05-4468-9932-41b6d51cfedf,ea13607a-3e05-4468-9932-41b6d51cfedf,1,0,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,1,0,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,1,0,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,1,0,43e37533-ed38-4000-a387-5749f8d9aaf3,43e37533-ed38-4000-a387-5749f8d9aaf3,1,0,e93bdb44-64b3-43d8-b15a-c561dbb91974,e93bdb44-64b3-43d8-b15a-c561dbb91974,1,0,928e0e05-b946-48c8-9619-2d93eb94b036,928e0e05-b946-48c8-9619-2d93eb94b036,1,0,99e701f7-9206-4b20-bb32-e60c9a1d570e,99e701f7-9206-4b20-bb32-e60c9a1d570e,1,0,a7c7c835-5402-4bdd-a0e3-d21746174d5a,a7c7c835-5402-4bdd-a0e3-d21746174d5a,1,0,07e81872-afac-4720-86b4-91e7bf4a2881,07e81872-afac-4720-86b4-91e7bf4a2881,1,0,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,1,0,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,1,0,532dfa48-39b0-4d0f-9f8c-b51ca27e47a9,532dfa48-39b0-4d0f-9f8c-b51ca27e47a9,1,0,17bc0f34-c35b-4beb-be5f-8e8d8f06c053,17bc0f34-c35b-4beb-be5f-8e8d8f06c053,1,0,f91813e6-b75c-43fb-8da3-a0d958dc6fa0,f91813e6-b75c-43fb-8da3-a0d958dc6fa0,1,0,ad066c0d-4f4c-48af-9cc8-bb835372150a,ad066c0d-4f4c-48af-9cc8-bb835372150a,1,0,a2145e81-239e-4267-8a43-ea3f7babe878,a2145e81-239e-4267-8a43-ea3f7babe878,1,0,39598414-9c1d-46ec-a534-8bd43e622e45,39598414-9c1d-46ec-a534-8bd43e622e45,1,0,b552c510-4fd4-4c16-9022-dc5babcafc52,b552c510-4fd4-4c16-9022-dc5babcafc52,1,0,3892c06d-28f1-4238-a929-201316cac1ed,3892c06d-28f1-4238-a929-201316cac1ed,1,0,c13dea2e-17fa-4a5f-a70f-96e623db8a6b,c13dea2e-17fa-4a5f-a70f-96e623db8a6b,1,0,ecc0ac05-9813-482d-bc39-0be1490d3f8b,ecc0ac05-9813-482d-bc39-0be1490d3f8b,1,0,866f53c8-4f1e-484a-a809-6130f7eef872,866f53c8-4f1e-484a-a809-6130f7eef872,1,0,339e8cba-a92e-42f6-8d00-3b8b56ce3b0f,339e8cba-a92e-42f6-8d00-3b8b56ce3b0f,1,0,567c68fd-74c7-4b6e-9119-56ac8d78073c,567c68fd-74c7-4b6e-9119-56ac8d78073c,1,0,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,1,0,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,1,0,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,1,0,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,1,0,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,1,0,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,1,0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,1,0,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,1,0,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,1,0,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,1,0,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,1,0,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,1,0,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,1,0,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,1,0,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,1,0,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,1,0,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,1,0,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,1,0,d5a73869-381e-4878-8db7-596643937202,d5a73869-381e-4878-8db7-596643937202,1,0,c91de10a-d370-4495-9d9e-98581e566385,c91de10a-d370-4495-9d9e-98581e566385,1,0,3a93f1d2-3e9c-41a9-9d53-314538a96bb2,3a93f1d2-3e9c-41a9-9d53-314538a96bb2,1,0,8bc4bece-027f-460c-ade0-d7c7d3d9a6b7,8bc4bece-027f-460c-ade0-d7c7d3d9a6b7,1,0,dd73a8d8-a6db-4d3c-a808-d82bad8876b9,dd73a8d8-a6db-4d3c-a808-d82bad8876b9,1,0,11a93e3a-3c5b-4242-913c-02474a383344,11a93e3a-3c5b-4242-913c-02474a383344,1,0,ddd2861c-592b-4879-b9de-4b05a22c0b43,ddd2861c-592b-4879-b9de-4b05a22c0b43,1,0,5b383021-a800-4f0b-b8a3-d344389bff6c,5b383021-a800-4f0b-b8a3-d344389bff6c,1,0,8fe71bce-a61a-4a2e-bd18-81c7a7bb4456,8fe71bce-a61a-4a2e-bd18-81c7a7bb4456,1,0,11e708d8-82f4-4d45-a77d-7b9d23c0ef54,11e708d8-82f4-4d45-a77d-7b9d23c0ef54,1,0,8a57d427-a34e-4121-84e6-1a86a9f9092d,8a57d427-a34e-4121-84e6-1a86a9f9092d,1,0,dbc1bf11-e92a-4f4e-90d4-6a3ccdaec7e5,dbc1bf11-e92a-4f4e-90d4-6a3ccdaec7e5,1,0,29ec9423-25ef-4cf2-ad6a-58f854c3e22b,29ec9423-25ef-4cf2-ad6a-58f854c3e22b,1,0,2607e4d1-4fc0-4270-ad45-2c95d4aa04da,2607e4d1-4fc0-4270-ad45-2c95d4aa04da,1,0,b4b4bd5d-a860-4994-90b7-0c60ab680c4e,b4b4bd5d-a860-4994-90b7-0c60ab680c4e,1,0,68447105-a784-4803-8eb8-3701b0fc819d,68447105-a784-4803-8eb8-3701b0fc819d,1,0,ec892726-dee3-4edb-ad71-020404b09477,ec892726-dee3-4edb-ad71-020404b09477,1,0,5fb5320c-cd7c-4f28-ad6a-8670a60a9e11,5fb5320c-cd7c-4f28-ad6a-8670a60a9e11,1,0,59dee70d-aeca-470a-b3c4-e43bb16c5753,59dee70d-aeca-470a-b3c4-e43bb16c5753,1,0,82777e92-0681-44bf-b51e-4d98fcd5d5bd,82777e92-0681-44bf-b51e-4d98fcd5d5bd,1,0,2e0b331d-92d4-4250-94c6-9ced8cdcb1e4,2e0b331d-92d4-4250-94c6-9ced8cdcb1e4,1,0,cee126de-d567-44d3-b14c-35da6e501324,cee126de-d567-44d3-b14c-35da6e501324,1,0,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,1,0,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,1,0,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,1,0,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,1,0,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,1,0,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,1,0,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,1,0,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,1,0,325bacdd-793f-47d8-b987-57e9d5f2782b,325bacdd-793f-47d8-b987-57e9d5f2782b,1,0,80395d47-70d7-4d8d-9b18-93283fba80c2,80395d47-70d7-4d8d-9b18-93283fba80c2,1,0,8b621ec9-24c9-4166-90ce-29c5ad30f78b,8b621ec9-24c9-4166-90ce-29c5ad30f78b,1,0,cc98670a-7b18-4973-b211-90261c5c8c10,cc98670a-7b18-4973-b211-90261c5c8c10,1,0,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,1,0,fb36c775-1124-4ba6-8af8-133bf66fcb54,fb36c775-1124-4ba6-8af8-133bf66fcb54,1,0,51f9aff4-71da-4b1b-b48b-04122a17d855,51f9aff4-71da-4b1b-b48b-04122a17d855,1,0,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,1,0,62957889-503f-4923-a372-29776dc3b5e5,62957889-503f-4923-a372-29776dc3b5e5,1,0,90385850-d37b-4b2e-ac87-95c17f32197c,90385850-d37b-4b2e-ac87-95c17f32197c,1,0,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,1,0,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,1,0,6b28a716-2fb1-47f7-a7d6-f2fe7edb32c3,6b28a716-2fb1-47f7-a7d6-f2fe7edb32c3,1,0,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,1,0,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,1,0,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,1,0,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,1,0,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,1,0,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,1,0,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,1,0,73afaad8-dfa9-43e3-bdaf-543c3545d788,73afaad8-dfa9-43e3-bdaf-543c3545d788,1,0,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,1,0,4f0bda80-2246-43be-95f8-ae8480682cd5,4f0bda80-2246-43be-95f8-ae8480682cd5,1,0,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,1,0,6f683f46-9eef-4e78-bc2f-7174238bf53c,6f683f46-9eef-4e78-bc2f-7174238bf53c,1,0,7d1ed38b-98cf-4a0e-a605-680bb580d904,7d1ed38b-98cf-4a0e-a605-680bb580d904,1,0,b769eda0-11de-401c-a68b-4fce4555d4fc,b769eda0-11de-401c-a68b-4fce4555d4fc,1,0,fd7a668f-3099-4e15-956a-92c6295dd4d5,fd7a668f-3099-4e15-956a-92c6295dd4d5,1,0,afcbd830-ec5f-4865-a176-ea3014dff908,afcbd830-ec5f-4865-a176-ea3014dff908,1,0,dc5fc801-14e4-42e8-b396-76eb30b69eea,dc5fc801-14e4-42e8-b396-76eb30b69eea,1,0,485b9f00-475a-49e5-ade2-b2e05d94ecf0,485b9f00-475a-49e5-ade2-b2e05d94ecf0,1,0,310aef5a-84d9-4a68-af78-d623beff8a88,310aef5a-84d9-4a68-af78-d623beff8a88,1,0,398bf9d1-c353-461e-a1be-683047dcbe41,398bf9d1-c353-461e-a1be-683047dcbe41,1,0,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,1,0,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,1,0,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,1,0,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,1,0,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,1,0,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,1,0,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,1,0,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,1,0,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,1,0,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,1,0,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,1,0,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,1,0,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,1,0,569047c2-0879-4fba-a814-44812d21043b,569047c2-0879-4fba-a814-44812d21043b,1,0,0c3c4494-c037-431e-9eeb-9b6cfd7372c3,0c3c4494-c037-431e-9eeb-9b6cfd7372c3,1,0,80512d95-5458-4934-98ae-a7b58099196b,80512d95-5458-4934-98ae-a7b58099196b,1,0,6f2354cd-4a34-4921-96bb-b786486f85cf,6f2354cd-4a34-4921-96bb-b786486f85cf,1,0,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,1,0,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,1,0,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,1,0,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,1,0,91562fe8-e630-4bcb-a14e-c0e1e129141a,91562fe8-e630-4bcb-a14e-c0e1e129141a,1,0,c261abfd-3828-47b5-aa32-dfdd3a1636ad,c261abfd-3828-47b5-aa32-dfdd3a1636ad,1,0,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,1,0,1db1cb24-f364-4b91-bc96-c216764207a0,1db1cb24-f364-4b91-bc96-c216764207a0,1,0,64d7c8a7-1c15-4afb-ad97-abf8729c604e,64d7c8a7-1c15-4afb-ad97-abf8729c604e,1,0,a3cbbc8a-4afd-48c5-91d4-4849d18905c1,a3cbbc8a-4afd-48c5-91d4-4849d18905c1,1,0,5d6b29dc-38af-4dce-b79c-ce8f23afb3b1,5d6b29dc-38af-4dce-b79c-ce8f23afb3b1,1,0,c04b685a-0d2d-404c-a74a-775ffab298ce,c04b685a-0d2d-404c-a74a-775ffab298ce,1,0,5fe6967d-e333-464b-a89e-8c868c0ce37d,5fe6967d-e333-464b-a89e-8c868c0ce37d,1,0,5aef2892-7a87-4d3b-bb46-8340a7fb97a8,5aef2892-7a87-4d3b-bb46-8340a7fb97a8,1,0,8efa4c12-b5ba-4dfd-bdc9-e824402fc4b1,8efa4c12-b5ba-4dfd-bdc9-e824402fc4b1,1,0,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,1,0,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,1,0,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,1,0,54b5b44c-5f24-4b2a-982c-4489b18db7f0,54b5b44c-5f24-4b2a-982c-4489b18db7f0,1,0,5bc04a9a-6a0a-4607-b8eb-743b87143ae7,5bc04a9a-6a0a-4607-b8eb-743b87143ae7,1,0,e8045f52-7b27-48b0-b009-d488718b3bef,e8045f52-7b27-48b0-b009-d488718b3bef,1,0,1796bcbb-a629-4509-95c9-78562689f809,1796bcbb-a629-4509-95c9-78562689f809,1,0,cd9799c9-f5bf-4537-8885-06fb6e6b8f93,cd9799c9-f5bf-4537-8885-06fb6e6b8f93,1,0,d19e8fcc-62cc-4ce4-81bc-ead33a2714df,d19e8fcc-62cc-4ce4-81bc-ead33a2714df,1,0,0f79d87e-3311-4281-8f46-6154e708b930,0f79d87e-3311-4281-8f46-6154e708b930,1,0,e057e428-99c1-419d-a169-697c1e825e94,e057e428-99c1-419d-a169-697c1e825e94,1,0,784a60bd-4070-476d-9b8b-f607c76dc52b,784a60bd-4070-476d-9b8b-f607c76dc52b,1,0,904d5bd0-3843-4aaa-86a3-f8e12282e5c0,904d5bd0-3843-4aaa-86a3-f8e12282e5c0,1,0,90420fe9-f75a-4bcc-8e1a-9d665a61ecef,90420fe9-f75a-4bcc-8e1a-9d665a61ecef,1,0,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,1,0,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,1,0,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,1,0,a8f32b13-249c-4ce6-a521-f06a87f2e670,a8f32b13-249c-4ce6-a521-f06a87f2e670,1,0,815775e4-cfb7-495b-87c4-d134b90d93d4,815775e4-cfb7-495b-87c4-d134b90d93d4,1,0,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,1,0,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,1,0,7a27b378-89ac-4cad-8c69-a0cd14812d7e,7a27b378-89ac-4cad-8c69-a0cd14812d7e,1,0,d2433a11-8e1d-4e4c-966d-37cde6283f72,d2433a11-8e1d-4e4c-966d-37cde6283f72,1,0,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,1,0,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,1,0,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,1,0,477dfea4-e401-4cf0-b0a8-2df7c3836c58,477dfea4-e401-4cf0-b0a8-2df7c3836c58,1,0,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,1,0,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,1,0,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,1,0,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,1,0,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,1,0,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,1,0,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,1,0,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,1,0,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,1,0,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,1,0,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,1,0,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,1,0,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,1,0,e870a1bd-0c08-4d1e-832a-357922983c19,e870a1bd-0c08-4d1e-832a-357922983c19,1,0,9f71aeac-f889-40dc-91bd-d670da4efd2b,9f71aeac-f889-40dc-91bd-d670da4efd2b,1,0,62f8a9b2-9e56-4d5c-a7e2-a85f5b27a5b7,62f8a9b2-9e56-4d5c-a7e2-a85f5b27a5b7,1,0,614ef0bd-3298-408b-bf71-37df8ee60702,614ef0bd-3298-408b-bf71-37df8ee60702,1,0,26ff1be6-f72a-456a-9dce-302029752603,26ff1be6-f72a-456a-9dce-302029752603,1,0,db850a08-0c99-4a57-9b04-38be64bd38fb,db850a08-0c99-4a57-9b04-38be64bd38fb,1,0,abeca127-5ae9-46af-a5e8-d6438fd68367,abeca127-5ae9-46af-a5e8-d6438fd68367,1,0,bce81631-9f6d-42b3-b4b6-2199afb08f2f,bce81631-9f6d-42b3-b4b6-2199afb08f2f,1,0,67d6878f-3e47-4142-8f98-c5a207f0b8a8,67d6878f-3e47-4142-8f98-c5a207f0b8a8,1,0,7f4b872f-0e50-49dd-984d-f5fc3ac3f2f0,7f4b872f-0e50-49dd-984d-f5fc3ac3f2f0,1,0,68636657-4d46-4c2a-9b2f-11521a55dfb4,68636657-4d46-4c2a-9b2f-11521a55dfb4,1,0,18a83f43-dc84-4f8a-9580-681b19f571c4,18a83f43-dc84-4f8a-9580-681b19f571c4,1,0,01c588b0-d0ce-4978-b04d-084e6a00fcc7,01c588b0-d0ce-4978-b04d-084e6a00fcc7,1,0,a23642d9-8c4f-44a5-8865-bfb286e47c55,a23642d9-8c4f-44a5-8865-bfb286e47c55,1,0,7b37e038-dcef-41e1-b6e7-ed73c6958415,7b37e038-dcef-41e1-b6e7-ed73c6958415,1,0,24df2d14-5ebf-4ded-ba14-5daee7a0c536,24df2d14-5ebf-4ded-ba14-5daee7a0c536,1,0,13d6e2e9-b268-4c1b-8b8b-30c5296cfe4c,13d6e2e9-b268-4c1b-8b8b-30c5296cfe4c,1,0,03bb028a-ee8c-411e-8382-653046f803c6,03bb028a-ee8c-411e-8382-653046f803c6,1,0,c4fa80ca-32d6-4a44-9fe2-7ffd67e1cb30,c4fa80ca-32d6-4a44-9fe2-7ffd67e1cb30,1,0,8aa73dfd-41ac-4f79-bf73-cd2da51b1232,8aa73dfd-41ac-4f79-bf73-cd2da51b1232,1,0,38d5ed93-133b-44fe-827a-69a6cfc0461d,38d5ed93-133b-44fe-827a-69a6cfc0461d,1,0,436a9c94-55f6-4463-becd-573189753ee7,436a9c94-55f6-4463-becd-573189753ee7,1,0,50bf4050-390c-419c-8f55-82a540093ab1,50bf4050-390c-419c-8f55-82a540093ab1,1,0,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,1,0,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,1,0,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,1,0,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,1,0,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1,0,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,1,0,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,1,0,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1,0,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,1,0,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,1,0,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,1,0,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,1,0,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,1,0,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,1,0,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,1,0,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1,0,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,1,0,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,1,0,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,1,0,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,1,0,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,1,0,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,1,0,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,1,0,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,1,0,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,1,0,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,1,0,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,1,0,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1,0,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,1,0,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,1,0,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,1,0,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,1,0,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,1,0,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,1,0,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,1,0,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,1,0,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,1,0,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,1,0,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,1,0,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,1,0,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,1,0,45ca19df-90f3-4143-a659-bc0cb97efee9,45ca19df-90f3-4143-a659-bc0cb97efee9,1,0,6fe997a3-d729-420b-b2b2-558e9a1031ee,6fe997a3-d729-420b-b2b2-558e9a1031ee,1,0,4e1b48b1-c998-4f99-94e7-50af22059bfa,4e1b48b1-c998-4f99-94e7-50af22059bfa,1,0,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,1,0,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,1,0,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,1,0,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,1,0,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,1,0,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,1,0,d57a3300-0f9f-4fe5-b627-01c96b723053,d57a3300-0f9f-4fe5-b627-01c96b723053,1,0,ccfdf89b-f63e-4e46-b942-0d145695fdc6,ccfdf89b-f63e-4e46-b942-0d145695fdc6,1,0,6d40a555-9c20-4643-b689-2f61df772f78,6d40a555-9c20-4643-b689-2f61df772f78,1,0,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,1,0,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,1,0,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,1,0,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,1,0,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,1,0,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,1,0,cf783265-a4cb-436f-963a-1ff8220ae246,cf783265-a4cb-436f-963a-1ff8220ae246,1,0,3560f949-48f9-4fca-9fe2-81efc1ec0eee,3560f949-48f9-4fca-9fe2-81efc1ec0eee,1,0,662078f0-b75d-4c44-896f-7b7f74fd1ed4,662078f0-b75d-4c44-896f-7b7f74fd1ed4,1,0,4fa11304-fbd4-4c90-909d-5024283a6868,4fa11304-fbd4-4c90-909d-5024283a6868,1,0,207290c2-5221-48ad-99aa-bb0f7955df3f,207290c2-5221-48ad-99aa-bb0f7955df3f,1,0,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,1,0,d91a016e-cca9-4976-9c53-2c96fa95cf1a,d91a016e-cca9-4976-9c53-2c96fa95cf1a,1,0,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,1,0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,1,0,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,1,0,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,1,0,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,1,0,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,1,0,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,1,0,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,1,0,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,1,0,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,1,0,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,1,0,69c207c2-7699-4467-b127-286ecd6d0f29,69c207c2-7699-4467-b127-286ecd6d0f29,1,0,70a06a02-8fb8-4a39-9e50-b7c27c41f49f,70a06a02-8fb8-4a39-9e50-b7c27c41f49f,1,0,810755ad-e921-4250-a0d3-af77fe1b6c79,810755ad-e921-4250-a0d3-af77fe1b6c79,1,0,f0f2f6de-b5ca-416c-b2e7-70a2df0993a1,f0f2f6de-b5ca-416c-b2e7-70a2df0993a1,1,0,99a40d71-f47a-4c04-9137-d297eda2fad9,99a40d71-f47a-4c04-9137-d297eda2fad9,1,0,33fa908a-5516-43c8-94d3-28c60eba8d66,33fa908a-5516-43c8-94d3-28c60eba8d66,1,0,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,1,0,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,1,0,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,1,0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,1,0,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,1,0,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,1,0,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,1,0,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,1,0,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,1,0,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,1,0,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,1,0,7904d64a-2c30-4434-8924-b4817b727db9,7904d64a-2c30-4434-8924-b4817b727db9,1,0,c550a43a-1240-4f29-9045-a262f37f703a,c550a43a-1240-4f29-9045-a262f37f703a,1,0,86b1feed-ed65-4672-a49a-c52282b40be3,86b1feed-ed65-4672-a49a-c52282b40be3,1,0,85ac42d7-400a-4469-8fcd-e6a14f258792,85ac42d7-400a-4469-8fcd-e6a14f258792,1,0,ec681c28-661c-43e3-9285-9fc606f2d24c,ec681c28-661c-43e3-9285-9fc606f2d24c,1,0,be0fbbfc-5873-41a6-80ef-35ed1b8adb4c,be0fbbfc-5873-41a6-80ef-35ed1b8adb4c,1,0,413c2d03-f717-4503-9723-c605114b2799,413c2d03-f717-4503-9723-c605114b2799,1,0,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1,0,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,1,0,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,1,0,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,1,0,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,1,0,797f4377-ee0f-4a2d-be90-a74ac10ef682,797f4377-ee0f-4a2d-be90-a74ac10ef682,1,0,f401c5be-2698-452d-8908-08faad120a47,f401c5be-2698-452d-8908-08faad120a47,1,0,98de52ae-dfab-480b-a167-4cf2a3962ed1,98de52ae-dfab-480b-a167-4cf2a3962ed1,1,0,efa5c204-b827-4860-aadd-3737c8fc5f6b,efa5c204-b827-4860-aadd-3737c8fc5f6b,1,0,ef438c21-9d10-4116-8fc7-03927062db59,ef438c21-9d10-4116-8fc7-03927062db59,1,0,7ffa25d5-5199-4e08-af76-969c17709ad4,7ffa25d5-5199-4e08-af76-969c17709ad4,1,0,a93180c6-fcb7-4b28-b954-d2f2831f1832,a93180c6-fcb7-4b28-b954-d2f2831f1832,1,0,b46fff37-cc0e-4ff4-8fde-6bd9d9b895ec,b46fff37-cc0e-4ff4-8fde-6bd9d9b895ec,1,0,eeeede5e-9534-498e-b820-87a5f919c068,eeeede5e-9534-498e-b820-87a5f919c068,1,0,8b1f81e0-1eb0-4aae-9bb6-b25d97a6c9c2,8b1f81e0-1eb0-4aae-9bb6-b25d97a6c9c2,1,0,55ecc3a2-3d94-4201-8a29-06469e0b1a17,55ecc3a2-3d94-4201-8a29-06469e0b1a17,1,0,4123c760-0e30-48d0-8211-1db84f53314b,4123c760-0e30-48d0-8211-1db84f53314b,1,0,a086da23-29d8-4d02-846b-5d171e14d730,a086da23-29d8-4d02-846b-5d171e14d730,1,0,9ec76352-5e4a-485d-bd93-eb739869e406,9ec76352-5e4a-485d-bd93-eb739869e406,1,0,6d3619e3-d125-44b6-9b51-ebf9505b04d2,6d3619e3-d125-44b6-9b51-ebf9505b04d2,1,0,9d2c802c-c946-44e5-b9bc-13ef534968cd,9d2c802c-c946-44e5-b9bc-13ef534968cd,1,0,8046b46e-d855-4a80-8270-72a104e4a941,8046b46e-d855-4a80-8270-72a104e4a941,1,0,4524e15c-4c35-4e1d-910f-5859b5702dff,4524e15c-4c35-4e1d-910f-5859b5702dff,1,0,e200002c-9f3a-49d9-bba1-dca11555511d,e200002c-9f3a-49d9-bba1-dca11555511d,1,0,efa0f74a-7ec0-42f4-a948-7ce3890559d8,efa0f74a-7ec0-42f4-a948-7ce3890559d8,1,0,97e11b91-9590-44b3-afcd-f465ce23e509,97e11b91-9590-44b3-afcd-f465ce23e509,1,0,301c1fc5-ca0a-4fac-ac51-c2e42fb3c2a8,301c1fc5-ca0a-4fac-ac51-c2e42fb3c2a8,1,0,6f2d0c99-3354-4924-959c-59320e1b0063,6f2d0c99-3354-4924-959c-59320e1b0063,1,0,aee8df57-983b-440d-9c02-cace7e632f15,aee8df57-983b-440d-9c02-cace7e632f15,1,0,6e9648dd-388f-4563-88b0-feddc6e9ce8e,6e9648dd-388f-4563-88b0-feddc6e9ce8e,1,0,eb975d96-d230-4454-8f14-6bf5522e06d2,eb975d96-d230-4454-8f14-6bf5522e06d2,1,0,6aa6513c-6f3b-4897-96fd-4a08aeb9eb1e,6aa6513c-6f3b-4897-96fd-4a08aeb9eb1e,1,0,c29d3ae4-9458-46b8-a09b-012e5d435d43,c29d3ae4-9458-46b8-a09b-012e5d435d43,1,0,dad62d28-168c-4659-a800-e484772d9003,dad62d28-168c-4659-a800-e484772d9003,1,0,4cada7d2-f1b1-4914-95fc-c5e1431c13a7,4cada7d2-f1b1-4914-95fc-c5e1431c13a7,1,0,ecbe1ead-4e4b-49db-b7f1-c097c9df2fb9,ecbe1ead-4e4b-49db-b7f1-c097c9df2fb9,1,0,be026f77-285b-4470-8a4e-c68f6e9859e2,be026f77-285b-4470-8a4e-c68f6e9859e2,1,0,a9d54a18-9c35-471b-ad8b-44ba743b7977,a9d54a18-9c35-471b-ad8b-44ba743b7977,1,0,4f75014c-831f-4de5-8b6e-94874ce274ce,4f75014c-831f-4de5-8b6e-94874ce274ce,1,0,c9f74923-95e1-4f5c-8649-3543fae6b116,c9f74923-95e1-4f5c-8649-3543fae6b116,1,0,b00616bb-406d-4e8e-80a0-f0c14cc850c0,b00616bb-406d-4e8e-80a0-f0c14cc850c0,1,0,d60aae4f-7c61-416c-bbc9-e7c95d757848,d60aae4f-7c61-416c-bbc9-e7c95d757848,1,0,c8a0da4e-0b0f-4def-a61e-5f6e04468e01,c8a0da4e-0b0f-4def-a61e-5f6e04468e01,1,0,62f9c12c-1837-4320-99b0-8f7ae44af735,62f9c12c-1837-4320-99b0-8f7ae44af735,1,0,ae352e0c-9f89-4ed9-ab45-f4e9040f7858,ae352e0c-9f89-4ed9-ab45-f4e9040f7858,1,0,853a5fdc-3621-442c-abd3-2fd266fddd84,853a5fdc-3621-442c-abd3-2fd266fddd84,1,0,daaff4d7-bc0b-4ab5-a277-fc02472f76ed,daaff4d7-bc0b-4ab5-a277-fc02472f76ed,1,0,33c9ebee-7b42-4010-a5c9-71ca7479d95c,33c9ebee-7b42-4010-a5c9-71ca7479d95c,1,0,cf202dca-e0ee-45c8-8792-46fc2f126e68,cf202dca-e0ee-45c8-8792-46fc2f126e68,1,0,be150cca-e977-4663-af19-79d8b0f91b3d,be150cca-e977-4663-af19-79d8b0f91b3d,1,0,f12857d7-bcae-4c6c-9169-2a0b1f9e9e6a,f12857d7-bcae-4c6c-9169-2a0b1f9e9e6a,1,0,1c13d12d-5c96-4d96-a07d-ec4a766c86ac,1c13d12d-5c96-4d96-a07d-ec4a766c86ac,1,0,6279f4bc-b77f-4618-9ce3-d50efc798871,6279f4bc-b77f-4618-9ce3-d50efc798871,1,0,fb05b40b-8cf5-4821-afcb-f00a77458a9b,fb05b40b-8cf5-4821-afcb-f00a77458a9b,1,0,37c68cb5-6aaf-4e57-b68c-1a5b5db252b7,37c68cb5-6aaf-4e57-b68c-1a5b5db252b7,1,0,3967bec7-9af5-40bf-9e22-a0f6b13cc795,3967bec7-9af5-40bf-9e22-a0f6b13cc795,1,0,eab9da25-07b6-4c60-9a83-08e8277d0ae7,eab9da25-07b6-4c60-9a83-08e8277d0ae7,1,0,b79ed991-f5d9-42b6-8f0b-0df49e550ced,b79ed991-f5d9-42b6-8f0b-0df49e550ced,1,0,ac50e8d6-fe0b-45a4-b0dd-cc81d7fd7357,ac50e8d6-fe0b-45a4-b0dd-cc81d7fd7357,1,0,f58a3df1-ddf3-45c8-b470-cc026cb0537f,f58a3df1-ddf3-45c8-b470-cc026cb0537f,1,0,c4e9954b-59d8-46e3-ada8-bda66e8aaceb,c4e9954b-59d8-46e3-ada8-bda66e8aaceb,1,0,568c16cf-c3fc-4e16-8f05-e00be8e136c2,568c16cf-c3fc-4e16-8f05-e00be8e136c2,1,0,b36ad726-fb8f-4974-986a-33f997e3fc64,b36ad726-fb8f-4974-986a-33f997e3fc64,1,0,e196c73e-c09b-4aed-b403-2b97a8bf6e47,e196c73e-c09b-4aed-b403-2b97a8bf6e47,1,0,27fdab52-f1ab-48d3-b117-06afcf319eaa,27fdab52-f1ab-48d3-b117-06afcf319eaa,1,0,bf3530c3-3244-4528-a846-ea175af53804,bf3530c3-3244-4528-a846-ea175af53804,1,0,5bdfff5e-f04c-4fe3-ae92-10a99da3a6a8,5bdfff5e-f04c-4fe3-ae92-10a99da3a6a8,1,0,3d0ae989-2d16-42df-a442-7bde817ec1b2,3d0ae989-2d16-42df-a442-7bde817ec1b2,1,0,f3d1adac-197a-4194-89fe-7178f8ccd788,f3d1adac-197a-4194-89fe-7178f8ccd788,1,0,7077b04e-75c0-414d-b295-d28aeda2bdd4,7077b04e-75c0-414d-b295-d28aeda2bdd4,1,0,c8330995-22f4-4be6-beff-64f87c6f09ed,c8330995-22f4-4be6-beff-64f87c6f09ed,1,0,56b6b570-764b-4220-9b5f-70753b0fadbd,56b6b570-764b-4220-9b5f-70753b0fadbd,1,0,588f481e-4486-4649-b584-08f7e3ab8cde,588f481e-4486-4649-b584-08f7e3ab8cde,1,0,5dfe90e2-cb1a-4510-b22c-af94ca06dd7b,5dfe90e2-cb1a-4510-b22c-af94ca06dd7b,1,0,70c217b8-ddf0-4b7c-80b0-f5a76dbbcec7,70c217b8-ddf0-4b7c-80b0-f5a76dbbcec7,1,0,74e3e5c4-7dec-4fde-975b-01e7f4002a87,74e3e5c4-7dec-4fde-975b-01e7f4002a87,1,0,689b382f-308e-4558-817c-819ceb59f61e,689b382f-308e-4558-817c-819ceb59f61e,1,0,ed96d8d2-3164-4a85-8408-06d9a1f0c2ce,ed96d8d2-3164-4a85-8408-06d9a1f0c2ce,1,0,2482e800-50c9-4c7c-909f-18ba2e30ff31,2482e800-50c9-4c7c-909f-18ba2e30ff31,1,0,fdb20bf0-6dc5-4ce6-acdc-4def1cc23a67,fdb20bf0-6dc5-4ce6-acdc-4def1cc23a67,1,0,b528d506-be3f-47f2-880b-af7093c71649,b528d506-be3f-47f2-880b-af7093c71649,1,0,7f3f55d5-b1f5-4b6b-b189-ff5715341489,7f3f55d5-b1f5-4b6b-b189-ff5715341489,1,0,5a32d342-8b80-4069-98c3-cf392f473b06,5a32d342-8b80-4069-98c3-cf392f473b06,1,0,888c5a1f-5329-40da-9102-eac26657a7d9,888c5a1f-5329-40da-9102-eac26657a7d9,1,0,0b2c1689-22ba-4ed6-80f3-10475f11db1a,0b2c1689-22ba-4ed6-80f3-10475f11db1a,1,0,46bbfede-5b4d-44fc-90ec-f6f3598340c4,46bbfede-5b4d-44fc-90ec-f6f3598340c4,1,0,acc6358f-be29-4931-8ed2-b769a48cee08,acc6358f-be29-4931-8ed2-b769a48cee08,1,0,51c58d33-32f7-401a-84d4-5a942129fbd5,51c58d33-32f7-401a-84d4-5a942129fbd5,1,0,07d5174e-8422-471f-a435-bf51d5af1bf0,07d5174e-8422-471f-a435-bf51d5af1bf0,1,0,e58672f5-84c9-462f-b5a6-7f15a6f2f797,e58672f5-84c9-462f-b5a6-7f15a6f2f797,1,0,4fbb189a-ecf0-483f-a904-0c34b1c23433,4fbb189a-ecf0-483f-a904-0c34b1c23433,1,0,2a34c9e8-eb4f-4600-988e-594ac7399abc,2a34c9e8-eb4f-4600-988e-594ac7399abc,1,0,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,1,0,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,1,0,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,1,0,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,1,0,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,1,0,e9a2320b-71a1-4974-8b5a-1990062ec7df,e9a2320b-71a1-4974-8b5a-1990062ec7df,1,0,2e459a7c-c448-4db4-ae21-e59646527030,2e459a7c-c448-4db4-ae21-e59646527030,1,0,891194d9-9f02-4b22-89cd-941181c83ecb,891194d9-9f02-4b22-89cd-941181c83ecb,1,0,a4d3b738-9ae3-46a9-ac21-7ac3d081c727,a4d3b738-9ae3-46a9-ac21-7ac3d081c727,1,0,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,1,0,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,1,0,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,1,0,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,1,0,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,1,0,af6bccbb-a6cb-41ee-bc4e-f2d6a5e0f419,af6bccbb-a6cb-41ee-bc4e-f2d6a5e0f419,1,0,d08679db-f83f-476e-b8c4-f3f52c3cf6fd,d08679db-f83f-476e-b8c4-f3f52c3cf6fd,1,0,fad0898f-5769-46ab-bc5e-301924b851a0,fad0898f-5769-46ab-bc5e-301924b851a0,1,0,e0227e4b-be22-4614-8980-5d573fae705d,e0227e4b-be22-4614-8980-5d573fae705d,1,0,7a7b7882-a4c1-40c8-a807-cb2d71d054cc,7a7b7882-a4c1-40c8-a807-cb2d71d054cc,1,0,6f36007b-04dc-4007-abf7-e20fbd126b97,6f36007b-04dc-4007-abf7-e20fbd126b97,1,0,791dbdee-56f6-4fe3-ada4-965c9111d69e,791dbdee-56f6-4fe3-ada4-965c9111d69e,1,0,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,1,0,aa6444a8-6c17-4207-a623-9b734e08e30e,aa6444a8-6c17-4207-a623-9b734e08e30e,1,0,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,1,0,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,1,0,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,1,0,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,1,0,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,1,0,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,1,0,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,1,0,771a1900-46be-49fe-a02d-584780de8363,771a1900-46be-49fe-a02d-584780de8363,1,0,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,1,0,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,1,0,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,1,0,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,1,0,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,1,0,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,1,0,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,1,0,acd30e63-68dc-4ab2-a6fe-16eb69d09271,acd30e63-68dc-4ab2-a6fe-16eb69d09271,1,0,04013c34-8d59-4f87-b272-732d5a6dd675,04013c34-8d59-4f87-b272-732d5a6dd675,1,0,f9df9b6b-5051-46ef-bb1f-1974f41054a7,f9df9b6b-5051-46ef-bb1f-1974f41054a7,1,0,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,1,0,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,1,0,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,1,0,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,1,0,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,1,0,13b3c973-6be3-4898-89d5-20852cd14e46,13b3c973-6be3-4898-89d5-20852cd14e46,1,0,d978d078-4fd8-40b9-90c2-047cdaf94cba,d978d078-4fd8-40b9-90c2-047cdaf94cba,1,0,8640eacd-e6f9-4b0b-8511-c6ad2336ec6c,8640eacd-e6f9-4b0b-8511-c6ad2336ec6c,1,0,b374e22f-17f3-4186-af1f-fa35d1a7e559,b374e22f-17f3-4186-af1f-fa35d1a7e559,1,0,53555ee4-f99d-4935-a884-89313aa3ca6a,53555ee4-f99d-4935-a884-89313aa3ca6a,1,0,f38bb317-8a59-4786-be76-e1d4e534628d,f38bb317-8a59-4786-be76-e1d4e534628d,1,0,25741b39-1c6b-4851-8584-9711d25ef05a,25741b39-1c6b-4851-8584-9711d25ef05a,1,0,f4554046-493e-4960-94df-0a8b9d02f474,f4554046-493e-4960-94df-0a8b9d02f474,1,0,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,1,0,9222a6c0-b785-4811-bfb6-44ac44a55925,9222a6c0-b785-4811-bfb6-44ac44a55925,1,0,ea84021d-2431-44ad-a446-f1fb979c9e96,ea84021d-2431-44ad-a446-f1fb979c9e96,1,0,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,1,0,8fa21575-177f-4b7c-94b5-dfeefe737cb4,8fa21575-177f-4b7c-94b5-dfeefe737cb4,1,0,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,1,0,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,1,0,491a2337-1bf9-45c1-8ae6-95605ef41992,491a2337-1bf9-45c1-8ae6-95605ef41992,1,0,c3f2a760-610a-40e0-945b-1f9f6369444d,c3f2a760-610a-40e0-945b-1f9f6369444d,1,0,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,1,0,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,1,0,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,1,0,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,1,0,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,1,0,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,1,0,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,1,0,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,1,0,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,1,0,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,1,0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,1,0,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,1,0,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,1,0,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,1,0,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,1,0,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,1,0,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,1,0,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,1,0,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,1,0,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1,0,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,1,0,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,1,0,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,1,0,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,1,0,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,1,0,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,1,0,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,1,0,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,1,0,aef03c0b-2846-43b7-b382-9a51ec783e85,aef03c0b-2846-43b7-b382-9a51ec783e85,1,0,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,1,0,c0804a4a-64d5-457f-a542-8e5badccbdf1,c0804a4a-64d5-457f-a542-8e5badccbdf1,1,0,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,1,0,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,1,0,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,1,0,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,1,0,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,1,0,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,1,0,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,1,0,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,1,0,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,1,0,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,1,0,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,1,0,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1,0,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,1,0,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,1,0,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,1,0,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,1,0,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,1,0,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,1,0,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,1,0,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,1,0,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,1,0,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,1,0,1c2da2ac-e797-11e6-0489-a8667f21fde4,1c2da2ac-e797-11e6-0489-a8667f21fde4,1,0,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,1,0,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,1,0,df7892fe-e796-11e6-0489-a8667f21fde4,df7892fe-e796-11e6-0489-a8667f21fde4,1,0,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,1,0,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,1,0,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,1,0,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,1,0,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,1,0,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,1,0,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,1,0,fae8b26c-e796-11e6-0489-a8667f21fde4,fae8b26c-e796-11e6-0489-a8667f21fde4,1,0,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,1,0,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,1,0,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,1,0,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,1,0,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,1,0,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,1,0,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,1,0,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,1,0,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,1,0,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,1,0,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1,0,0a7d282e-45bb-4a87-b325-1659519867fb,0a7d282e-45bb-4a87-b325-1659519867fb,1,0,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,1,0,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,1,0,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,1,0,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,1,0,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,1,0,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,1,0,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,1,0,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,1,0,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,1,0,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,1,0,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,1,0,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,1,0,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,1,0,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,1,0,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,1,0,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,1,0,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,1,0,db03a88b-2804-45c2-9089-7ddb87ef2f18,db03a88b-2804-45c2-9089-7ddb87ef2f18,1,0,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,1,0,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,1,0,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,1,0,f64a91c4-f5cb-4e8e-8387-9f242ce6de44,f64a91c4-f5cb-4e8e-8387-9f242ce6de44,1,0,dc024d33-1715-40da-9c00-443d25a31ebc,dc024d33-1715-40da-9c00-443d25a31ebc,1,0,d029aa93-fea4-40e4-8cfb-2dc96544829b,d029aa93-fea4-40e4-8cfb-2dc96544829b,1,0,f8f585d1-01a0-4892-8852-c692ffaa1344,f8f585d1-01a0-4892-8852-c692ffaa1344,1,0,35c237a7-71e1-415c-809d-e99babee4e0e,35c237a7-71e1-415c-809d-e99babee4e0e,1,0,2116119f-7637-45a1-8e59-c9149619413b,2116119f-7637-45a1-8e59-c9149619413b,1,0,43882a2c-b625-4cfb-8220-3d12bfee09e4,43882a2c-b625-4cfb-8220-3d12bfee09e4,1,0,90639fdb-144d-495a-a097-76c45107fc97,90639fdb-144d-495a-a097-76c45107fc97,1,0,c076b7fd-7e17-4811-82e7-047e2bf43bb0,c076b7fd-7e17-4811-82e7-047e2bf43bb0,1,0,84b28732-9001-4798-b613-35ea65c26cce,84b28732-9001-4798-b613-35ea65c26cce,1,0,77d8285f-a87b-4a4e-b6ee-85bcd54dee12,77d8285f-a87b-4a4e-b6ee-85bcd54dee12,1,0,f2ec9416-3830-4607-90f3-f77fc53c9c70,f2ec9416-3830-4607-90f3-f77fc53c9c70,1,0,3057de81-eb41-4161-9dc2-5445699906af,3057de81-eb41-4161-9dc2-5445699906af,1,0,984ed6c0-e25b-46ff-9b3c-6bc0370071da,984ed6c0-e25b-46ff-9b3c-6bc0370071da,1,0,f660bf92-7de1-4a22-9cea-777069e4679d,f660bf92-7de1-4a22-9cea-777069e4679d,1,0,54f3fbe7-ac93-44f6-ba6e-37cb99f3569c,54f3fbe7-ac93-44f6-ba6e-37cb99f3569c,1,0,20feb794-eb05-46a6-90e7-ca4e2376d7b2,20feb794-eb05-46a6-90e7-ca4e2376d7b2,1,0,8deb4f57-18fc-4db0-ad0f-82d60af3d80b,8deb4f57-18fc-4db0-ad0f-82d60af3d80b,1,0,2f484aa4-452a-46af-a707-a5a6917bc0db,2f484aa4-452a-46af-a707-a5a6917bc0db,1,0,fd6ff934-6f11-4182-b0cb-6926902d33c0,fd6ff934-6f11-4182-b0cb-6926902d33c0,1,0,315af891-2075-4833-a404-6c0f2004ee53,315af891-2075-4833-a404-6c0f2004ee53,1,0,5725db77-bfbf-4d85-9565-163b309a53ee,5725db77-bfbf-4d85-9565-163b309a53ee,1,0,99a7142c-b3c7-4221-abf8-6831a3cbc16e,99a7142c-b3c7-4221-abf8-6831a3cbc16e,1,0,d367a1a1-5a54-4bf9-96c7-d55667e2fb16,d367a1a1-5a54-4bf9-96c7-d55667e2fb16,1,0,2e09abe1-0934-42ae-970f-5e001c35c31a,2e09abe1-0934-42ae-970f-5e001c35c31a,1,0,587d48a3-5627-4481-b13e-c22740b57d8a,587d48a3-5627-4481-b13e-c22740b57d8a,1,0,1f3e3089-1e04-4147-8ece-aa96a76467dd,1f3e3089-1e04-4147-8ece-aa96a76467dd,1,0,22a213b5-ed72-4181-8ff8-89f860c87aa1,22a213b5-ed72-4181-8ff8-89f860c87aa1,1,0,4c56cbff-653e-4f16-b702-c77190d7eb7f,4c56cbff-653e-4f16-b702-c77190d7eb7f,1,0,172ff335-c7ae-4905-b705-2a1475b95713,172ff335-c7ae-4905-b705-2a1475b95713,1,0,db4c311d-ee62-4d47-ac31-5a20cadb7ed1,db4c311d-ee62-4d47-ac31-5a20cadb7ed1,1,0,1d852dc0-90c9-4568-84f9-b1d822573b6b,1d852dc0-90c9-4568-84f9-b1d822573b6b,1,0,24f85dbd-59be-4b8d-bea8-7ff8ddb7486a,24f85dbd-59be-4b8d-bea8-7ff8ddb7486a,1,0,c997f56c-ef9c-434e-bc4e-7fc5f885aaba,c997f56c-ef9c-434e-bc4e-7fc5f885aaba,1,0,37c8f5e1-3513-47f8-896d-a54d11b83dcd,37c8f5e1-3513-47f8-896d-a54d11b83dcd,1,0,9e07733c-39f0-491b-91e1-bf2782d957dd,9e07733c-39f0-491b-91e1-bf2782d957dd,1,0,cc584a1d-dc91-4693-a5c9-6e8c6607e9d8,cc584a1d-dc91-4693-a5c9-6e8c6607e9d8,1,0,5902d979-1235-4d5a-ace7-93261bdeb725,5902d979-1235-4d5a-ace7-93261bdeb725,1,0,5a090286-7969-44c9-815b-fc58aeb5d8d3,5a090286-7969-44c9-815b-fc58aeb5d8d3,1,0,8e87cf35-af54-4fa2-9428-460b765b282b,8e87cf35-af54-4fa2-9428-460b765b282b,1,0,73380bb1-bee3-4b73-a3df-1dbea99011d2,73380bb1-bee3-4b73-a3df-1dbea99011d2,1,0,8be29533-38de-413d-b420-7dac2e80af6c,8be29533-38de-413d-b420-7dac2e80af6c,1,0,82a77018-8e38-41dd-9d1f-3130bc29a707,82a77018-8e38-41dd-9d1f-3130bc29a707,1,0,4d75aaef-532e-4ed3-8153-083f04f05cc1,4d75aaef-532e-4ed3-8153-083f04f05cc1,1,0,3854a0ba-e156-4ba3-a301-b1a41ac386c4,3854a0ba-e156-4ba3-a301-b1a41ac386c4,1,0,f8136f59-ef0c-4c0f-8207-f7a4000e4f0c,f8136f59-ef0c-4c0f-8207-f7a4000e4f0c,1,0,c2321963-cd86-45ec-b323-3fdb5932da3a,c2321963-cd86-45ec-b323-3fdb5932da3a,1,0,d5af38bf-6261-4177-8f74-998a85f0ef39,d5af38bf-6261-4177-8f74-998a85f0ef39,1,0,42bbd9f7-ef72-440f-9eb1-fcb3bdc1d91e,42bbd9f7-ef72-440f-9eb1-fcb3bdc1d91e,1,0,c6a4d03d-f3b2-449c-8a2b-deb542dd2c99,c6a4d03d-f3b2-449c-8a2b-deb542dd2c99,1,0,4b714d9c-26f4-46e8-ac79-471522b3853b,4b714d9c-26f4-46e8-ac79-471522b3853b,1,0,411489de-f907-4d60-a776-64bb0aa12a0e,411489de-f907-4d60-a776-64bb0aa12a0e,1,0,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,1,0,9c47670e-9eb9-49ec-876c-cd545aaa093c,9c47670e-9eb9-49ec-876c-cd545aaa093c,1,0,f57e74e6-75e8-4136-911e-86793036a077,f57e74e6-75e8-4136-911e-86793036a077,1,0,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,1,0,3ba8c378-ef3d-4646-90b3-6d8078aa623e,3ba8c378-ef3d-4646-90b3-6d8078aa623e,1,0,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,1,0,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,1,0,d61ca454-505b-4fd6-be15-d7ed948a5ff6,d61ca454-505b-4fd6-be15-d7ed948a5ff6,1,0,2dd7eb87-8130-425a-be13-85235508cde6,2dd7eb87-8130-425a-be13-85235508cde6,1,0,8a62c997-4fda-4464-90bd-ab719161949f,8a62c997-4fda-4464-90bd-ab719161949f,1,0,28af52dd-3144-428b-956d-b6f27863ec4a,28af52dd-3144-428b-956d-b6f27863ec4a,1,0,8ac94328-2300-4681-9c35-fd7e2f830310,8ac94328-2300-4681-9c35-fd7e2f830310,1,0,da0ee165-1917-466b-ac5c-16c28e2318bb,da0ee165-1917-466b-ac5c-16c28e2318bb,1,0,4868cb2e-0892-42bc-9de1-73cb8a15a96f,4868cb2e-0892-42bc-9de1-73cb8a15a96f,1,0,e8b80879-33b3-4c45-ad68-1acabcf91faf,e8b80879-33b3-4c45-ad68-1acabcf91faf,1,0,4a87fafc-7ca7-478e-bb31-358c2b85fa92,4a87fafc-7ca7-478e-bb31-358c2b85fa92,1,0,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,1,0,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,1,0,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,1,0,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,1,0,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,1,0,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,1,0,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,1,0,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,1,0,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,1,0,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,1,0,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,1,0,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,1,0,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,1,0,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,1,0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,1,0,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,1,0,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,1,0,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,1,0,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,1,0,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,1,0,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,1,0,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,1,0,d5e1806b-9827-40ab-9cfa-23c22456d137,d5e1806b-9827-40ab-9cfa-23c22456d137,1,0,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,1,0,d24170d7-5477-4ec8-acd2-0de8bd2067d6,d24170d7-5477-4ec8-acd2-0de8bd2067d6,1,0,f047da82-7574-4da4-b54e-480195280a11,f047da82-7574-4da4-b54e-480195280a11,1,0,a469f018-da26-485f-87c3-f580321a34f0,a469f018-da26-485f-87c3-f580321a34f0,1,0,adcb0dca-d810-461e-8f45-1d3cd6ffad4d,adcb0dca-d810-461e-8f45-1d3cd6ffad4d,1,0,388f7571-8f1b-45c5-a8b8-45d648f2f5dd,388f7571-8f1b-45c5-a8b8-45d648f2f5dd,1,0,9e16edb6-d841-48fa-bfe1-f9aabdcf9e46,9e16edb6-d841-48fa-bfe1-f9aabdcf9e46,1,0,628de771-c19c-4474-989f-8fb6cd7756a2,628de771-c19c-4474-989f-8fb6cd7756a2,1,0,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,1,0,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,1,0,6789e57b-1293-442c-97d0-b8007367602e,6789e57b-1293-442c-97d0-b8007367602e,1,0,0f193c89-b664-448e-bed3-2147430367f7,0f193c89-b664-448e-bed3-2147430367f7,1,0,4c9b2506-75a8-47d3-a5d5-d946088ba14a,4c9b2506-75a8-47d3-a5d5-d946088ba14a,1,0,36eacaa1-2efd-49c0-82de-2f8972535bf2,36eacaa1-2efd-49c0-82de-2f8972535bf2,1,0,c35a643d-fe3a-4293-93c0-074fa68a31e3,c35a643d-fe3a-4293-93c0-074fa68a31e3,1,0,9f7b9fd8-4bdd-4492-abf7-09b3f7f23e16,9f7b9fd8-4bdd-4492-abf7-09b3f7f23e16,1,0,72ee9a03-a320-4e60-be04-0ee813ea567f,72ee9a03-a320-4e60-be04-0ee813ea567f,1,0,f6f52cc8-23a3-4402-b1eb-0e41584c802a,f6f52cc8-23a3-4402-b1eb-0e41584c802a,1,0,8398e065-8b4b-4901-b057-2a048776bafe,8398e065-8b4b-4901-b057-2a048776bafe,1,0,073c56ca-bf45-422d-957a-f9c57aeee4d0,073c56ca-bf45-422d-957a-f9c57aeee4d0,1,0,d73e084f-9201-40c8-8ad4-f61b6cbb47c9,d73e084f-9201-40c8-8ad4-f61b6cbb47c9,1,0,52f065fe-556a-47cd-82b1-c56d7894df30,52f065fe-556a-47cd-82b1-c56d7894df30,1,0,186efec4-1343-4234-a9b6-c8d8096faf76,186efec4-1343-4234-a9b6-c8d8096faf76,1,0,68598d98-0c59-4cda-b0b2-6901d3aff88b,68598d98-0c59-4cda-b0b2-6901d3aff88b,1,0,219c1375-f26e-4698-aa82-4b9d735df783,219c1375-f26e-4698-aa82-4b9d735df783,1,0,ff5121c1-7f11-48cd-a9df-3588cf9f6d21,ff5121c1-7f11-48cd-a9df-3588cf9f6d21,1,0,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,1,0,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,1,0,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1,0,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,1,0,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,1,0,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,1,0,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,1,0,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,1,0,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,1,0,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,1,0,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,1,0,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,1,0,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,1,0,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,1,0,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,1,0,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,1,0,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,1,0,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,1,0,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,1,0,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,1,0,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,1,0,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,1,0,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,1,0,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,1,0,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,1,0,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,1,0,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1,0,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,1,0,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,1,0,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,1,0,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,1,0,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,1,0,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,1,0,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,1,0,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,1,0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,1,0,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,1,0,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,1,0,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,1,0,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,1,0,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,1,0,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,1,0,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,1,0,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,1,0,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1,0,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,1,0,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,1,0,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,1,0,04b5ae71-7fa4-4a64-b406-59dc603b80c5,04b5ae71-7fa4-4a64-b406-59dc603b80c5,1,0,f23a2023-f776-40db-8689-1fc3f7ebc482,f23a2023-f776-40db-8689-1fc3f7ebc482,1,0,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1,0,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,1,0,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,1,0,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,1,0,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,1,0,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,1,0,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,1,0,14e20d48-635e-4c52-9099-e743323fc190,14e20d48-635e-4c52-9099-e743323fc190,1,0,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,1,0,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,1,0,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,1,0,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,1,0,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,1,0,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,1,0,64484611-b32c-4155-a063-7df5a3f924dd,64484611-b32c-4155-a063-7df5a3f924dd,1,0,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,1,0,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,1,0,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,1,0,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,1,0,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,1,0,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,1,0,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,1,0,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,1,0,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,1,0,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,1,0,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,1,0,e4ea640f-e3a4-44ad-b17d-51f32136372e,e4ea640f-e3a4-44ad-b17d-51f32136372e,1,0,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,1,0,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,1,0,e62845df-704f-4ad5-b227-e0128877a814,e62845df-704f-4ad5-b227-e0128877a814,1,0,4f1393e4-9db5-43d6-b47e-caa1aad9b35c,4f1393e4-9db5-43d6-b47e-caa1aad9b35c,1,0,e62e60ea-9f0c-4a7e-869f-4639f31f826c,e62e60ea-9f0c-4a7e-869f-4639f31f826c,1,0,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,1,0,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,1,0,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,1,0,9b9e81f9-e23f-4c77-bf6f-edbce8ebabfa,9b9e81f9-e23f-4c77-bf6f-edbce8ebabfa,1,0,fb5e93bb-e1ff-47a6-a362-ea94e6cbac65,fb5e93bb-e1ff-47a6-a362-ea94e6cbac65,1,0,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,1,0,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,1,0,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,1,0,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,1,0,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,1,0,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,1,0,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,1,0,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,1,0,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,1,0,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,1,0,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,1,0,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,1,0,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,1,0,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,1,0,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,1,0,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,1,0,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,1,0,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,1,0,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,1,0,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,1,0,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,1,0,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,1,0,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,1,0,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,1,0,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,1,0,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,1,0,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,1,0,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,1,0,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,1,0,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,1,0,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,1,0,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,1,0,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,1,0,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,1,0,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,1,0,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,1,0,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,1,0,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,1,0,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,1,0,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,1,0,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,1,0,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,1,0,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,1,0,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,1,0,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,1,0,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,1,0,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,1,0,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,1,0,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,1,0,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,1,0,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,1,0,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,1,0,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,1,0,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,1,0,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,1,0,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,1,0,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,1,0,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,1,0,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,1,0,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,1,0,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,1,0,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,1,0,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,1,0,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,1,0,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,1,0,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,1,0,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,1,0,905b787b-c638-4703-af70-416a2ce43b50,905b787b-c638-4703-af70-416a2ce43b50,1,0,d7ea882a-6ef9-407f-b0e9-7bb42cf5ef17,d7ea882a-6ef9-407f-b0e9-7bb42cf5ef17,1,0,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,1,0,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,1,0,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,1,0,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,1,0,f692ab21-a8de-4feb-914f-4beef350543a,f692ab21-a8de-4feb-914f-4beef350543a,1,0,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,1,0,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,1,0,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,1,0,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,1,0,4f06c867-6fec-4a4d-a360-6d8e98e4e7a4,4f06c867-6fec-4a4d-a360-6d8e98e4e7a4,1,0,34ee9617-9935-425f-9637-bdffd5a64042,34ee9617-9935-425f-9637-bdffd5a64042,1,0,3e6160f4-eed6-4dd6-a8fb-96c1a90d39be,3e6160f4-eed6-4dd6-a8fb-96c1a90d39be,1,0,778cd9f9-7afd-4eb7-bd4e-90ff7d9cf4f0,778cd9f9-7afd-4eb7-bd4e-90ff7d9cf4f0,1,0,fb8f3edd-bf12-4312-8ffe-7bbd627fa52b,fb8f3edd-bf12-4312-8ffe-7bbd627fa52b,1,0,6ddad5e2-b2c3-47bc-b339-54ccd7391e33,6ddad5e2-b2c3-47bc-b339-54ccd7391e33,1,0,761ca1c1-c843-47a1-bacc-2f9d1d68634d,761ca1c1-c843-47a1-bacc-2f9d1d68634d,1,0,af4a815b-d9d4-4fe6-9b2b-3932381e7346,af4a815b-d9d4-4fe6-9b2b-3932381e7346,1,0,9dbca72a-fb38-4d86-a3ff-83f7edc0fdb4,9dbca72a-fb38-4d86-a3ff-83f7edc0fdb4,1,0,fab77796-a103-40a6-95bd-238979fc345d,fab77796-a103-40a6-95bd-238979fc345d,1,0,6fad175b-eaf0-4e45-aaa1-c1ebc98e0ed0,6fad175b-eaf0-4e45-aaa1-c1ebc98e0ed0,1,0,0ef5e38c-6f7c-46e7-9c14-4fde6814f93f,0ef5e38c-6f7c-46e7-9c14-4fde6814f93f,1,0,f306dafa-350e-4ff9-bfe2-211be647afe8,f306dafa-350e-4ff9-bfe2-211be647afe8,1,0,6d447b01-21ae-4cc1-9262-4ec4ed5e04f5,6d447b01-21ae-4cc1-9262-4ec4ed5e04f5,1,0,dcd64d40-e57f-4cb5-9ccd-67b27ac546d4,dcd64d40-e57f-4cb5-9ccd-67b27ac546d4,1,0,8d0ad48c-6e27-44c2-87f6-62eef78b6427,8d0ad48c-6e27-44c2-87f6-62eef78b6427,1,0,e4fb3b42-60f6-4413-bba8-6e507b13d5d3,e4fb3b42-60f6-4413-bba8-6e507b13d5d3,1,0,a5e3b305-392c-40a2-9b66-7fdc72c041a3,a5e3b305-392c-40a2-9b66-7fdc72c041a3,1,0,266d41c0-92a1-4d42-bf5b-60a1bddb8912,266d41c0-92a1-4d42-bf5b-60a1bddb8912,1,0,1aad9f99-422a-40e8-83da-6e29b8a4e85a,1aad9f99-422a-40e8-83da-6e29b8a4e85a,1,0,d9010dc7-b0de-4079-944d-fbec7ba5997f,d9010dc7-b0de-4079-944d-fbec7ba5997f,1,0,5defd7f7-cc7d-4e7b-83e3-755f8a2514ea,5defd7f7-cc7d-4e7b-83e3-755f8a2514ea,1,0,744ca01b-41b6-4c30-a280-85e44ad456ba,744ca01b-41b6-4c30-a280-85e44ad456ba,1,0,779856af-2c4a-4643-9bea-a04aa24ee488,779856af-2c4a-4643-9bea-a04aa24ee488,1,0,5c6f12f3-7cb6-4b10-9859-7b72bae3fc76,5c6f12f3-7cb6-4b10-9859-7b72bae3fc76,1,0,d00313c8-ee4a-4463-8d5b-7e87e4e14986,d00313c8-ee4a-4463-8d5b-7e87e4e14986,1,0,6db400f2-873a-44a2-9274-2cd7883bfd87,6db400f2-873a-44a2-9274-2cd7883bfd87,1,0,3b925fd2-adb8-451a-8675-7b081fc7c570,3b925fd2-adb8-451a-8675-7b081fc7c570,1,0,70e9e13d-8f87-4a5b-9c80-49d2cff1a290,70e9e13d-8f87-4a5b-9c80-49d2cff1a290,1,0,04b7e8b2-6bc1-49dc-9476-7eadf94b9188,04b7e8b2-6bc1-49dc-9476-7eadf94b9188,1,0,135c86fc-2979-4833-9107-38d749a9f82f,135c86fc-2979-4833-9107-38d749a9f82f,1,0,78288ff9-d838-4970-84bd-9a6b229e6ef0,78288ff9-d838-4970-84bd-9a6b229e6ef0,1,0,8310f927-1123-4b4b-a65e-0ff29be73329,8310f927-1123-4b4b-a65e-0ff29be73329,1,0,80a9df2d-593d-483d-8d69-28b1c08ec648,80a9df2d-593d-483d-8d69-28b1c08ec648,1,0,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,1,0,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,1,0,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,1,0,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,1,0,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,1,0,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,1,0,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,1,0,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,1,0,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,1,0,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,1,0,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,1,0,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,1,0,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,1,0,f9c0862c-34a2-41a3-ae46-b6a8e1ad1b08,f9c0862c-34a2-41a3-ae46-b6a8e1ad1b08,1,0,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,1,0,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,1,0,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,1,0,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,1,0,bd0f9ec3-156a-4a6f-a52b-1213ec825bc0,bd0f9ec3-156a-4a6f-a52b-1213ec825bc0,1,0,71e52f63-04db-4336-ace6-b143d0a7d250,71e52f63-04db-4336-ace6-b143d0a7d250,1,0,afe79ef0-7830-43ce-85f3-c4c97831aa67,afe79ef0-7830-43ce-85f3-c4c97831aa67,1,0,0d7c3192-b15b-4d40-83f9-b76c6f8e654f,0d7c3192-b15b-4d40-83f9-b76c6f8e654f,1,0,fe07f268-bcfd-40c6-adf3-79df859ff731,fe07f268-bcfd-40c6-adf3-79df859ff731,1,0,1a1c88ff-b0c4-42c3-bf10-ebdf4de935b7,1a1c88ff-b0c4-42c3-bf10-ebdf4de935b7,1,0,15e90374-99d9-48f7-b7d6-ec160cdb378f,15e90374-99d9-48f7-b7d6-ec160cdb378f,1,0,ad5b6b8e-c2b5-45aa-8e07-50ae8877ac8f,ad5b6b8e-c2b5-45aa-8e07-50ae8877ac8f,1,0,6c470f57-c920-435a-a013-ff83a737cf3a,6c470f57-c920-435a-a013-ff83a737cf3a,1,0,a5e13e12-72b7-477d-8d80-06015fa5dece,a5e13e12-72b7-477d-8d80-06015fa5dece,1,0,d9c47acd-b5ee-4ea1-b247-7cc09a13eb82,d9c47acd-b5ee-4ea1-b247-7cc09a13eb82,1,0,4a81906a-7db7-4e7d-a95e-79b07a43e573,4a81906a-7db7-4e7d-a95e-79b07a43e573,1,0,0bcabdf4-3348-405d-ba75-7bcc106f9e7f,0bcabdf4-3348-405d-ba75-7bcc106f9e7f,1,0,5f2980ca-3f1c-4680-a6e9-477825442782,5f2980ca-3f1c-4680-a6e9-477825442782,1,0,40fd6b4a-2180-4403-b7e6-48b42d8285b7,40fd6b4a-2180-4403-b7e6-48b42d8285b7,1,0,ef098c52-fcfa-4f0f-85b0-aba0d5aa46b2,ef098c52-fcfa-4f0f-85b0-aba0d5aa46b2,1,0,a671cb1e-b27a-44bb-a8ca-1388f099de2e,a671cb1e-b27a-44bb-a8ca-1388f099de2e,1,0,6cff6b09-91b5-4f2b-89aa-23d2f83f9d89,6cff6b09-91b5-4f2b-89aa-23d2f83f9d89,1,0,a4b6920e-3e25-4798-809a-27d7bfae4ee7,a4b6920e-3e25-4798-809a-27d7bfae4ee7,1,0,981f6e35-64b8-4d63-b383-32ea71fcd025,981f6e35-64b8-4d63-b383-32ea71fcd025,1,0,9a7b964d-1c06-44af-8d25-f84493c70a42,9a7b964d-1c06-44af-8d25-f84493c70a42,1,0,f9f021ca-8b3e-4d10-9538-1bce7e851fdd,f9f021ca-8b3e-4d10-9538-1bce7e851fdd,1,0,bb7cf0f8-56b0-4c0d-b206-79051ba83f6d,bb7cf0f8-56b0-4c0d-b206-79051ba83f6d,1,0,ab057ce4-ac51-4465-8aad-eadc9088c62d,ab057ce4-ac51-4465-8aad-eadc9088c62d,1,0,8842c0e3-2e20-4f37-ae7c-f5449004994b,8842c0e3-2e20-4f37-ae7c-f5449004994b,1,0,5b2cc44b-69cb-495c-a26b-003a495df40b,5b2cc44b-69cb-495c-a26b-003a495df40b,1,0,30250d93-10ff-45c9-920b-5fed3f9d8093,30250d93-10ff-45c9-920b-5fed3f9d8093,1,0,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,1,0,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,1,0,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,1,0,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,1,0,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,1,0,c869c1b7-3c04-4e5e-a033-d3f2fb0af03c,c869c1b7-3c04-4e5e-a033-d3f2fb0af03c,1,0,23f93492-59f5-491b-8708-45096934c7e6,23f93492-59f5-491b-8708-45096934c7e6,1,0,30f5471a-17fb-4184-9798-4f8e3ef0cccb,30f5471a-17fb-4184-9798-4f8e3ef0cccb,1,0,27abda4c-a43c-49b4-90cd-db780afe0c45,27abda4c-a43c-49b4-90cd-db780afe0c45,1,0,450a36cb-9bc1-4c5b-ae21-0e023f3eb951,450a36cb-9bc1-4c5b-ae21-0e023f3eb951,1,0,1a28db16-d410-4101-bf31-21cefa880dae,1a28db16-d410-4101-bf31-21cefa880dae,1,0,2b85bcf6-85b0-4efb-bada-b65414a8d264,2b85bcf6-85b0-4efb-bada-b65414a8d264,1,0,cf027de4-59c9-4b8f-9695-b1d4d16548fe,cf027de4-59c9-4b8f-9695-b1d4d16548fe,1,0,d33ceaee-a374-40a3-9406-cbcbf82fd8ae,d33ceaee-a374-40a3-9406-cbcbf82fd8ae,1,0,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,1,0,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,1,0,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,1,0,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,1,0,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,1,0,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,1,0,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,1,0,88cefe4a-a6c5-4753-935e-f956d9de9f77,88cefe4a-a6c5-4753-935e-f956d9de9f77,1,0,882e78b7-90bd-4b95-8852-146bdb51ec15,882e78b7-90bd-4b95-8852-146bdb51ec15,1,0,ae4435c3-62c0-4f08-b526-7f9571eed8ae,ae4435c3-62c0-4f08-b526-7f9571eed8ae,1,0,91a1bd81-e6fa-476c-85e6-317a91f6c8bc,91a1bd81-e6fa-476c-85e6-317a91f6c8bc,1,0,f799e1d1-bb78-4a7a-bb1a-d79ba29acd0c,f799e1d1-bb78-4a7a-bb1a-d79ba29acd0c,1,0,c7b46558-d688-4c42-ae52-f98de7923176,c7b46558-d688-4c42-ae52-f98de7923176,1,0,31fdbb46-1df1-4b74-a54e-b922260dcca6,31fdbb46-1df1-4b74-a54e-b922260dcca6,1,0,ee494dc9-549b-4595-97d1-ca73bacff954,ee494dc9-549b-4595-97d1-ca73bacff954,1,0,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,1,0,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,1,0,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,1,0,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,1,0,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,1,0,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,1,0,8317ac49-890d-4921-8c0d-1bfc676f0b40,8317ac49-890d-4921-8c0d-1bfc676f0b40,1,0,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,1,0,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,1,0,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,1,0,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,1,0,0c732569-a50f-4be3-a214-0843c6a3da47,0c732569-a50f-4be3-a214-0843c6a3da47,1,0,f55d74bf-5824-4228-9683-31f7c7fdf74d,f55d74bf-5824-4228-9683-31f7c7fdf74d,1,0,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,1,0,0d142fcd-a596-4cdf-a3f6-c31becdb7b59,0d142fcd-a596-4cdf-a3f6-c31becdb7b59,1,0,c30c6860-befb-497e-b432-3dba0f86c540,c30c6860-befb-497e-b432-3dba0f86c540,1,0,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,1,0,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,1,0,cb3bb725-ed7a-4cde-a0ac-26a0b168c0ea,cb3bb725-ed7a-4cde-a0ac-26a0b168c0ea,1,0,977748b7-13d3-41ef-8206-82595ed8fc0c,977748b7-13d3-41ef-8206-82595ed8fc0c,1,0,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,1,0,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,1,0,b53c545c-3b1c-4315-a213-4f2b2c7128aa,b53c545c-3b1c-4315-a213-4f2b2c7128aa,1,0,02a84df9-2171-43e6-8135-a74edd384826,02a84df9-2171-43e6-8135-a74edd384826,1,0,ff36356d-cb1d-4316-896a-c6ae83b92437,ff36356d-cb1d-4316-896a-c6ae83b92437,1,0,465cce6a-7064-4b0a-932c-40f842042f33,465cce6a-7064-4b0a-932c-40f842042f33,1,0,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,1,0,e67dff00-92e2-4f58-a950-d5bbca9291c5,e67dff00-92e2-4f58-a950-d5bbca9291c5,1,0,e1964724-804a-4ecc-be9e-5b84e58f2b84,e1964724-804a-4ecc-be9e-5b84e58f2b84,1,0,46e961c2-cd45-4d76-a6ad-c1d5c8dc95cc,46e961c2-cd45-4d76-a6ad-c1d5c8dc95cc,1,0,bf3cb513-2856-472b-8713-7bf8ba70cdce,bf3cb513-2856-472b-8713-7bf8ba70cdce,1,0,de4815c8-0853-47e0-862b-b60119c674f6,de4815c8-0853-47e0-862b-b60119c674f6,1,0,dbe02a79-3179-42bb-a8e8-dd9bf3ff705c,dbe02a79-3179-42bb-a8e8-dd9bf3ff705c,1,0,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,1,0,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,1,0,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,1,0,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,1,0,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,1,0,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,1,0,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,1,0,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,1,0,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,1,0,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,1,0,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,1,0,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,1,0,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,1,0,436b558e-6547-4ba6-8cee-954fe36743ea,436b558e-6547-4ba6-8cee-954fe36743ea,1,0,6120bb6e-b177-48bf-b467-02bab0d4cc0d,6120bb6e-b177-48bf-b467-02bab0d4cc0d,1,0,a5af4715-6c4f-484b-9599-5b1b9147713f,a5af4715-6c4f-484b-9599-5b1b9147713f,1,0,307b6e66-6fef-4777-b20a-37898928932f,307b6e66-6fef-4777-b20a-37898928932f,1,0,a69494c0-dcce-4359-aa82-c1cfae8a43eb,a69494c0-dcce-4359-aa82-c1cfae8a43eb,1,0,2b243d49-5500-403a-b177-ac1c70bb889d,2b243d49-5500-403a-b177-ac1c70bb889d,1,0,51c040c6-e7a4-4e0e-b479-039636fdb6ec,51c040c6-e7a4-4e0e-b479-039636fdb6ec,1,0,8ede4c18-ebf0-4c39-9e82-c59df8d62ca7,8ede4c18-ebf0-4c39-9e82-c59df8d62ca7,1,0,b2c200a7-b9cc-4d84-b839-e69f2a14a8f5,b2c200a7-b9cc-4d84-b839-e69f2a14a8f5,1,0,8a50e7f2-97a9-4ed8-a46f-6413f7fcf8cd,8a50e7f2-97a9-4ed8-a46f-6413f7fcf8cd,1,0,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,1,0,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,1,0,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,1,0,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,1,0,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,1,0,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,1,0,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,1,0,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,1,0,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,1,0,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,1,0,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,1,0,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,1,0,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,1,0,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,1,0,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,1,0,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,1,0,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,1,0,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,1,0,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,1,0,b4dde44e-57d5-4c3a-bb9b-643787ce07b0,b4dde44e-57d5-4c3a-bb9b-643787ce07b0,1,0,d2160866-78ca-424a-92b9-d389fb341ee0,d2160866-78ca-424a-92b9-d389fb341ee0,1,0,73b36823-72a4-4286-8ee2-02b2f086d5ea,73b36823-72a4-4286-8ee2-02b2f086d5ea,1,0,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,1,0,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,1,0,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,1,0,c013a650-bd4b-4e14-97cc-05df17dbb0d5,c013a650-bd4b-4e14-97cc-05df17dbb0d5,1,0,00bc2e99-c7c9-4a4b-b0bc-c9babe17deda,00bc2e99-c7c9-4a4b-b0bc-c9babe17deda,1,0,18ba2c0c-d606-47ee-9409-66acb24bd794,18ba2c0c-d606-47ee-9409-66acb24bd794,1,0,9f24891c-3846-455a-bf95-be3b186f4342,9f24891c-3846-455a-bf95-be3b186f4342,1,0,ddc332d9-1d60-40fe-87fd-7f2164db1edf,ddc332d9-1d60-40fe-87fd-7f2164db1edf,1,0,d0e3c3a5-e74c-4c0a-8679-77e6a097eb36,d0e3c3a5-e74c-4c0a-8679-77e6a097eb36,1,0,20c43755-49cc-4f11-bd2f-52a9e53547ef,20c43755-49cc-4f11-bd2f-52a9e53547ef,1,0,7dbed991-4883-444c-8ce2-96c203a905f2,7dbed991-4883-444c-8ce2-96c203a905f2,1,0,bbadd00d-6410-41ec-a7d8-4dbd52986cc2,bbadd00d-6410-41ec-a7d8-4dbd52986cc2,1,0,d5f66278-4ab2-407a-abef-eb7636e9ba95,d5f66278-4ab2-407a-abef-eb7636e9ba95,1,0,61e51391-c412-46a5-8290-d5183ad0db83,61e51391-c412-46a5-8290-d5183ad0db83,1,0,e9dfdaa2-4094-4501-a38a-3811e7e4c708,e9dfdaa2-4094-4501-a38a-3811e7e4c708,1,0,0a62947e-848a-47fa-a239-95aee6b955d4,0a62947e-848a-47fa-a239-95aee6b955d4,1,0,beaef14b-175f-4ebe-b387-9c922a42c99e,beaef14b-175f-4ebe-b387-9c922a42c99e,1,0,13daaad0-2726-4065-8158-47059865452a,13daaad0-2726-4065-8158-47059865452a,1,0,a7829dfb-adb9-4401-a609-ca9a0f2376b3,a7829dfb-adb9-4401-a609-ca9a0f2376b3,1,0,26f1076a-8100-4cf4-9539-29637a5e9137,26f1076a-8100-4cf4-9539-29637a5e9137,1,0,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,1,0,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,1,0,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,1,0,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,1,0,bed8af4e-fa3a-4b25-ba6e-5b7b4a6cd363,bed8af4e-fa3a-4b25-ba6e-5b7b4a6cd363,1,0,951927d4-7bfc-4edb-b97f-dcc29a937400,951927d4-7bfc-4edb-b97f-dcc29a937400,1,0,71309e88-d514-40f3-a329-b2a420e75504,71309e88-d514-40f3-a329-b2a420e75504,1,0,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,1,0,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,1,0,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,1,0,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,1,0,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,1,0,5225b4da-431e-469d-a30c-31fa434b7e86,5225b4da-431e-469d-a30c-31fa434b7e86,1,0,68dcbdd5-c1fd-472f-873c-359d3a237b8c,68dcbdd5-c1fd-472f-873c-359d3a237b8c,1,0,3c6e831c-c934-46bb-8040-edd6de81ba1b,3c6e831c-c934-46bb-8040-edd6de81ba1b,1,0,3c737aff-9581-409a-9a6e-d5e3c133d8df,3c737aff-9581-409a-9a6e-d5e3c133d8df,1,0,916a9ea9-309d-4a7a-9ded-63bda01a39d4,916a9ea9-309d-4a7a-9ded-63bda01a39d4,1,0,0fdbd1ab-716d-46b5-aa75-fb09812ced5b,0fdbd1ab-716d-46b5-aa75-fb09812ced5b,1,0,b26ab92b-9739-4eb4-b855-be6850274432,b26ab92b-9739-4eb4-b855-be6850274432,1,0,17944416-85a5-49e4-9fa8-652c671c3df0,17944416-85a5-49e4-9fa8-652c671c3df0,1,0,b7936cda-654e-4707-af76-385a63243cdf,b7936cda-654e-4707-af76-385a63243cdf,1,0,192844c3-7cb9-4477-a4af-0edb8ce5129d,192844c3-7cb9-4477-a4af-0edb8ce5129d,1,0,33324481-55d1-475f-9f12-7542a05429a2,33324481-55d1-475f-9f12-7542a05429a2,1,0,07b7591f-dcfc-483f-85f6-b5a08d952fe2,07b7591f-dcfc-483f-85f6-b5a08d952fe2,1,0,866c418f-332e-415a-bb8e-794d38f15080,866c418f-332e-415a-bb8e-794d38f15080,1,0,a34b8fdc-e756-4065-b68a-12a07fa7c40e,a34b8fdc-e756-4065-b68a-12a07fa7c40e,1,0,b853debb-d715-4296-9070-45cc5dae571d,b853debb-d715-4296-9070-45cc5dae571d,1,0,fc406b50-f267-44b8-a833-ba7e8880903e,fc406b50-f267-44b8-a833-ba7e8880903e,1,0,6517bf8b-d2fd-4b6b-a4a5-b3086ebad8de,6517bf8b-d2fd-4b6b-a4a5-b3086ebad8de,1,0,391a1891-85a2-45b8-a747-3ecd705fc75b,391a1891-85a2-45b8-a747-3ecd705fc75b,1,0,05681509-254d-4232-af69-62a63ed05716,05681509-254d-4232-af69-62a63ed05716,1,0,cc815221-3d2a-4ea3-b1e6-6cb9fb410bd9,cc815221-3d2a-4ea3-b1e6-6cb9fb410bd9,1,0,b9ef62f6-9b1d-4d13-8016-73ed531d195a,b9ef62f6-9b1d-4d13-8016-73ed531d195a,1,0,742ed6d8-0f8d-4569-b30f-9ff3804cc3b7,742ed6d8-0f8d-4569-b30f-9ff3804cc3b7,1,0,229fe764-87f5-4d19-b042-c31fef5cddd6,229fe764-87f5-4d19-b042-c31fef5cddd6,1,0,74cd7504-d34f-42ff-90ff-7abcd54e8b6c,74cd7504-d34f-42ff-90ff-7abcd54e8b6c,1,0,e932800c-fd81-417d-a601-c774b888d66a,e932800c-fd81-417d-a601-c774b888d66a,1,0,a2335b6f-1dbb-4722-979b-8bed83aa8c94,a2335b6f-1dbb-4722-979b-8bed83aa8c94,1,0,211cf921-d880-4f74-b8ee-5312dea28613,211cf921-d880-4f74-b8ee-5312dea28613,1,0,2fd3a396-b8ae-409e-9373-02a039393a80,2fd3a396-b8ae-409e-9373-02a039393a80,1,0,61ae74be-64b2-4bf2-aa63-8fe3dc7ed47d,61ae74be-64b2-4bf2-aa63-8fe3dc7ed47d,1,0,346ef414-b20b-4095-86fe-18ca21c9887f,346ef414-b20b-4095-86fe-18ca21c9887f,1,0,c01ab97b-4964-4f7d-b749-56c0b94feb93,c01ab97b-4964-4f7d-b749-56c0b94feb93,1,0,0cc63813-cf16-4a99-b3bd-18a773091230,0cc63813-cf16-4a99-b3bd-18a773091230,1,0,4fc00971-c980-468a-9690-5cd520d12eb0,4fc00971-c980-468a-9690-5cd520d12eb0,1,0,85972c27-4f39-4982-9307-7877e87ef87b,85972c27-4f39-4982-9307-7877e87ef87b,1,0,96afdffb-7595-4c49-9e86-8296f50bd2f5,96afdffb-7595-4c49-9e86-8296f50bd2f5,1,0,823d5b5e-e9bf-40f0-9dcd-579bb53847bb,823d5b5e-e9bf-40f0-9dcd-579bb53847bb,1,0,e125d3e0-950f-42ee-8904-bd26091afa55,e125d3e0-950f-42ee-8904-bd26091afa55,1,0,2b4797a5-074a-4a01-b99f-1c5590cfde40,2b4797a5-074a-4a01-b99f-1c5590cfde40,1,0,718e53d2-24ec-40fb-9def-825441ada46c,718e53d2-24ec-40fb-9def-825441ada46c,1,0,4c0a7fd6-8f09-41d6-949f-65ce708c1256,4c0a7fd6-8f09-41d6-949f-65ce708c1256,1,0,792abc06-b52a-4691-ba92-96ed73ca702a,792abc06-b52a-4691-ba92-96ed73ca702a,1,0,148dbe44-86d1-4362-b9db-8ff68cd2b34d,148dbe44-86d1-4362-b9db-8ff68cd2b34d,1,0,1fbc893e-3000-4fac-88f5-c82251835d65,1fbc893e-3000-4fac-88f5-c82251835d65,1,0,05852816-63ec-4179-abca-66372bbfb04c,05852816-63ec-4179-abca-66372bbfb04c,1,0,0165f721-b011-4524-bfd5-81e35092f2be,0165f721-b011-4524-bfd5-81e35092f2be,1,0,e74925d4-1979-4600-8560-0932d26450ad,e74925d4-1979-4600-8560-0932d26450ad,1,0,aa108131-151d-4356-8a24-345e4ec74281,aa108131-151d-4356-8a24-345e4ec74281,1,0,284b77a8-d9f4-44c4-a2dc-91c1f8bd5808,284b77a8-d9f4-44c4-a2dc-91c1f8bd5808,1,0,e3251f1a-3c80-4c86-9960-270920bd512f,e3251f1a-3c80-4c86-9960-270920bd512f,1,0,3c3d5474-977b-4df9-88de-042e997bd10d,3c3d5474-977b-4df9-88de-042e997bd10d,1,0,4b88d172-5a44-4011-bb38-e94bf7a9c879,4b88d172-5a44-4011-bb38-e94bf7a9c879,1,0,3bced2d4-e3d7-4489-a26d-f84620b096f4,3bced2d4-e3d7-4489-a26d-f84620b096f4,1,0,e8c048fc-0f39-4778-aaf3-d6bff5acb06a,e8c048fc-0f39-4778-aaf3-d6bff5acb06a,1,0,c7efb89b-f9e5-4b58-b7a0-502cea8cf1d4,c7efb89b-f9e5-4b58-b7a0-502cea8cf1d4,1,0,cd133f15-aa45-4ec9-93c2-2f0f66baf3f3,cd133f15-aa45-4ec9-93c2-2f0f66baf3f3,1,0,18436045-1008-4114-8032-274fea0f4627,18436045-1008-4114-8032-274fea0f4627,1,0,cad93727-cffb-44a6-aaee-be73a078e802,cad93727-cffb-44a6-aaee-be73a078e802,1,0,c034f410-ff8e-45d7-925f-94448f88a7af,c034f410-ff8e-45d7-925f-94448f88a7af,1,0,0027727b-3917-4010-9953-1649266e8ed7,0027727b-3917-4010-9953-1649266e8ed7,1,0,b088786a-046f-458c-8e7a-5bebf8df8b34,b088786a-046f-458c-8e7a-5bebf8df8b34,1,0,6d015113-1e32-4f5e-aacd-8134d7307125,6d015113-1e32-4f5e-aacd-8134d7307125,1,0,58230238-d2f2-422e-90cb-de355996eb19,58230238-d2f2-422e-90cb-de355996eb19,1,0,3d907678-628d-4fb2-85c2-149839024c08,3d907678-628d-4fb2-85c2-149839024c08,1,0,71384d10-6acf-4139-b766-cb8b5796f1a7,71384d10-6acf-4139-b766-cb8b5796f1a7,1,0,a8f149d7-e9bc-4695-b4f4-88434e31aafb,a8f149d7-e9bc-4695-b4f4-88434e31aafb,1,0,10dcbcc6-7793-4da7-a9a5-e4f124209d3e,10dcbcc6-7793-4da7-a9a5-e4f124209d3e,1,0,11ba510f-cb57-43d0-9897-c49e10b67ccd,11ba510f-cb57-43d0-9897-c49e10b67ccd,1,0,9d92af67-c88d-4429-9e85-0b5bf04c4b79,9d92af67-c88d-4429-9e85-0b5bf04c4b79,1,0,b009bc99-ea12-46db-a7f8-cb3e285b20d0,b009bc99-ea12-46db-a7f8-cb3e285b20d0,1,0,43523bbb-c923-4a20-bcb5-50d30cc826ee,43523bbb-c923-4a20-bcb5-50d30cc826ee,1,0,c89d9aad-3364-45df-88b5-b23ae76edbba,c89d9aad-3364-45df-88b5-b23ae76edbba,1,0,9a2f2cd1-4c9f-460b-b3b7-64706a0164ab,9a2f2cd1-4c9f-460b-b3b7-64706a0164ab,1,0,7e4b9dce-e332-4d35-8b5f-d3f88918989d,7e4b9dce-e332-4d35-8b5f-d3f88918989d,1,0,d7a72321-5f1f-427e-a54d-f308dab1b9c4,d7a72321-5f1f-427e-a54d-f308dab1b9c4,1,0,b183eb38-a96e-4e12-9220-4b4027ae875c,b183eb38-a96e-4e12-9220-4b4027ae875c,1,0,07f7e1b5-07b0-4017-bb91-31759c4ffed1,07f7e1b5-07b0-4017-bb91-31759c4ffed1,1,0,6de76d43-40d5-494f-8d30-2ef80c79bc7e,6de76d43-40d5-494f-8d30-2ef80c79bc7e,1,0,60146806-ee46-44d5-8a7a-2ed48741e1c1,60146806-ee46-44d5-8a7a-2ed48741e1c1,1,0,96fe619a-b819-4f96-9788-e1f4ef57833a,96fe619a-b819-4f96-9788-e1f4ef57833a,1,0,94dff2da-f721-411a-9fc0-5d013b685dcc,94dff2da-f721-411a-9fc0-5d013b685dcc,1,0,9343fc5f-7b08-4be5-8cd5-dbed635b819d,9343fc5f-7b08-4be5-8cd5-dbed635b819d,1,0,99e87e66-1b07-451b-a476-f5213cbd7150,99e87e66-1b07-451b-a476-f5213cbd7150,1,0,c3317f75-f6ad-41f6-97f1-77074c3ff62a,c3317f75-f6ad-41f6-97f1-77074c3ff62a,1,0,8800dec9-84f8-4643-8742-1d76fe575f58,8800dec9-84f8-4643-8742-1d76fe575f58,1,0,62903794-3b41-4d21-b800-1c26dbeda3ce,62903794-3b41-4d21-b800-1c26dbeda3ce,1,0,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,1,0,4ba2e55e-29bc-4fbe-83e8-8bfa36abfdab,4ba2e55e-29bc-4fbe-83e8-8bfa36abfdab,1,0,93de88de-0069-4aa8-96b2-d5709e4def2f,93de88de-0069-4aa8-96b2-d5709e4def2f,1,0,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,1,0,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,1,0,3a8d9010-8785-4d8d-b908-b821d7d681c9,3a8d9010-8785-4d8d-b908-b821d7d681c9,1,0,2568a935-ea49-4b99-aa9c-de27de6a0e81,2568a935-ea49-4b99-aa9c-de27de6a0e81,1,0,de2bdd4f-93f2-4341-86d6-7082fc286a5c,de2bdd4f-93f2-4341-86d6-7082fc286a5c,1,0,ba96ec0e-931e-45be-a782-e68ba4fedddb,ba96ec0e-931e-45be-a782-e68ba4fedddb,1,0,9af5882f-3a42-4fae-83df-6aa8de577112,9af5882f-3a42-4fae-83df-6aa8de577112,1,0,79bc5e39-3017-48bf-8e42-fa34e8b581ef,79bc5e39-3017-48bf-8e42-fa34e8b581ef,1,0,fe6e207f-d306-4470-8441-ffd3f3710d31,fe6e207f-d306-4470-8441-ffd3f3710d31,1,0,7451af80-7387-4e8d-a3da-2ae0540c3fd4,7451af80-7387-4e8d-a3da-2ae0540c3fd4,1,0,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1,0,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,1,0,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,1,0,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,1,0,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,1,0,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,1,0,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,1,0,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,1,0,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,1,0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,1,0,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,1,0,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,1,0,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,1,0,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1,0,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,1,0,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,1,0,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,1,0,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,1,0,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,1,0,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,1,0,bdc51d67-5fc2-4d28-8875-69e33e625be6,bdc51d67-5fc2-4d28-8875-69e33e625be6,1,0,94ca9aa0-f61f-496b-8fef-9e6fb7bd8f87,94ca9aa0-f61f-496b-8fef-9e6fb7bd8f87,1,0,b494ca7b-6548-4fa2-932c-acdf8c62a78a,b494ca7b-6548-4fa2-932c-acdf8c62a78a,1,0,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,1,0,f335aa38-4e9e-4653-9a76-b6d4ae178c93,f335aa38-4e9e-4653-9a76-b6d4ae178c93,1,0,a62894bc-fab4-4ed4-a57d-cbe725527198,a62894bc-fab4-4ed4-a57d-cbe725527198,1,0,d4e567c7-55f1-4564-b066-f5b2355ad82c,d4e567c7-55f1-4564-b066-f5b2355ad82c,1,0,89cf2cd8-dc43-4742-af5a-5975e9546786,89cf2cd8-dc43-4742-af5a-5975e9546786,1,0,089ae618-cd90-482a-b4a2-45a04aaecc0c,089ae618-cd90-482a-b4a2-45a04aaecc0c,1,0,d1beef4e-9c78-49f5-9e52-1568fadf861d,d1beef4e-9c78-49f5-9e52-1568fadf861d,1,0,e6032a40-6195-4889-99f5-f7f4c74d4e8f,e6032a40-6195-4889-99f5-f7f4c74d4e8f,1,0,f9f12c11-04e8-4999-b1ab-ddea896638a2,f9f12c11-04e8-4999-b1ab-ddea896638a2,1,0,47ae26c4-1c47-4d9d-a0b8-a9899d08a4ce,47ae26c4-1c47-4d9d-a0b8-a9899d08a4ce,1,0,83245a76-8502-47a4-98ae-2ffadb78a029,83245a76-8502-47a4-98ae-2ffadb78a029,1,0,c9d5a41d-a2d9-4ec6-9a51-e4d254df1927,c9d5a41d-a2d9-4ec6-9a51-e4d254df1927,1,0,b5bb5376-27a6-43f2-9e91-bf7c913b89fd,b5bb5376-27a6-43f2-9e91-bf7c913b89fd,1,0,24861cd2-2be0-4454-8154-2201e63be266,24861cd2-2be0-4454-8154-2201e63be266,1,0,2e364599-aad9-4d1d-a4df-6cbd3ed768e7,2e364599-aad9-4d1d-a4df-6cbd3ed768e7,1,0,b1dd4569-6ed9-49f4-b05b-359229afb7a5,b1dd4569-6ed9-49f4-b05b-359229afb7a5,1,0,c14cac09-820e-47ae-81bb-eb497950d40c,c14cac09-820e-47ae-81bb-eb497950d40c,1,0,201cd431-6027-466c-abec-09ff65f42244,201cd431-6027-466c-abec-09ff65f42244,1,0,1018c5d8-8aed-49ba-a27c-a44bddd96144,1018c5d8-8aed-49ba-a27c-a44bddd96144,1,0,a81e5d20-9c42-462d-83a3-f86522c473f5,a81e5d20-9c42-462d-83a3-f86522c473f5,1,0,1ce4440e-3709-4cb1-8505-2379d5146be3,1ce4440e-3709-4cb1-8505-2379d5146be3,1,0,81c1f13c-e4ac-46b8-a205-c4f695ddf667,81c1f13c-e4ac-46b8-a205-c4f695ddf667,1,0,a26d8489-88a8-438e-bb58-c7b5a742a243,a26d8489-88a8-438e-bb58-c7b5a742a243,1,0,4b700bfd-5179-4504-b710-fd65036dded7,4b700bfd-5179-4504-b710-fd65036dded7,1,0,b046cb0b-f88b-4fb1-b08d-bb02b20dee74,b046cb0b-f88b-4fb1-b08d-bb02b20dee74,1,0,67dc31fa-cc64-4d29-96aa-65a7fd480790,67dc31fa-cc64-4d29-96aa-65a7fd480790,1,0,17f0e86d-8661-492c-85fa-2ce3cd1a57d5,17f0e86d-8661-492c-85fa-2ce3cd1a57d5,1,0,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,1,0,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,1,0,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,1,0,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,1,0,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,1,0,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,1,0,65ad33ce-edab-4f8b-8f44-1a5634d87191,65ad33ce-edab-4f8b-8f44-1a5634d87191,1,0,bcd727b5-4678-41e9-85d5-98d4157cdd77,bcd727b5-4678-41e9-85d5-98d4157cdd77,1,0,38c6dd83-2a70-4c4a-9f29-3b2b54a15501,38c6dd83-2a70-4c4a-9f29-3b2b54a15501,1,0,f403fcb3-a4f8-479d-9fa1-85d458b9a4b5,f403fcb3-a4f8-479d-9fa1-85d458b9a4b5,1,0,c56d3cfe-6ae1-4fe3-abdc-2d845049ddde,c56d3cfe-6ae1-4fe3-abdc-2d845049ddde,1,0,66f1dc54-f28c-4fb7-a6c9-f839d656e87c,66f1dc54-f28c-4fb7-a6c9-f839d656e87c,1,0,b8e3d08d-d442-4ffa-83d8-f372a7d2d340,b8e3d08d-d442-4ffa-83d8-f372a7d2d340,1,0,ebba727b-8155-4dd8-8ea0-207ca396566b,ebba727b-8155-4dd8-8ea0-207ca396566b,1,0,e4166141-f18f-4d27-beb5-9e30fe30f842,e4166141-f18f-4d27-beb5-9e30fe30f842,1,0,b62434ac-ef9f-4fe7-8279-357e0dd760ac,b62434ac-ef9f-4fe7-8279-357e0dd760ac,1,0,eb1c7d02-f5fc-4b37-9b32-7dd828958d76,eb1c7d02-f5fc-4b37-9b32-7dd828958d76,1,0,db2f20a7-e01f-4c03-9343-a815e1b46b50,db2f20a7-e01f-4c03-9343-a815e1b46b50,1,0,cf122ec9-d781-434c-9742-300e701317d6,cf122ec9-d781-434c-9742-300e701317d6,1,0,2aa2a968-2cac-4883-9bc8-5a3ccbd2e7a9,2aa2a968-2cac-4883-9bc8-5a3ccbd2e7a9,1,0,7d1361af-c5d3-4312-ab5e-ba00bf3418f2,7d1361af-c5d3-4312-ab5e-ba00bf3418f2,1,0,d7fdb3d5-3c18-4d9c-938a-2fbe8a96e877,d7fdb3d5-3c18-4d9c-938a-2fbe8a96e877,1,0,b8658e11-42b6-41bb-b384-5380e2228338,b8658e11-42b6-41bb-b384-5380e2228338,1,0,40c0919f-2c53-4502-af06-745dfa47fd8e,40c0919f-2c53-4502-af06-745dfa47fd8e,1,0,b01e4e7f-1b01-4c19-ab4b-7a8c1f6b0d22,b01e4e7f-1b01-4c19-ab4b-7a8c1f6b0d22,1,0,662a2803-da19-40c7-a906-e20d0843f67f,662a2803-da19-40c7-a906-e20d0843f67f,1,0,327c0731-1496-4463-837f-8f9c3e4c1a49,327c0731-1496-4463-837f-8f9c3e4c1a49,1,0,d74a37c2-7f50-40da-b7f8-29f79ae7230c,d74a37c2-7f50-40da-b7f8-29f79ae7230c,1,0,37a677e7-6661-41b5-ba68-740361168ccf,37a677e7-6661-41b5-ba68-740361168ccf,1,0,2a41d20d-d57a-4ce8-832f-c1b83099e563,2a41d20d-d57a-4ce8-832f-c1b83099e563,1,0,a0701ad3-572a-4806-91c0-6c5fff8dd350,a0701ad3-572a-4806-91c0-6c5fff8dd350,1,0,c9f268d1-6d2a-47d5-9371-f951b95d24a6,c9f268d1-6d2a-47d5-9371-f951b95d24a6,1,0,86b155be-d611-46b4-8275-bb19a2fa20ba,86b155be-d611-46b4-8275-bb19a2fa20ba,1,0,fedb2d36-bb2e-49dd-9d52-afcc41f3636b,fedb2d36-bb2e-49dd-9d52-afcc41f3636b,1,0,5d74d2d1-a2af-4a52-a884-a60e6b07ffac,5d74d2d1-a2af-4a52-a884-a60e6b07ffac,1,0,69e67507-e063-4221-9b84-2ee9d8903c1a,69e67507-e063-4221-9b84-2ee9d8903c1a,1,0,a649cb56-2a53-4508-8bf4-9aa01373ede2,a649cb56-2a53-4508-8bf4-9aa01373ede2,1,0,7e572d75-3a89-43c0-ad68-18498d67f8ca,7e572d75-3a89-43c0-ad68-18498d67f8ca,1,0,3c159a42-d9f9-4de4-a86f-893b1fc65b46,3c159a42-d9f9-4de4-a86f-893b1fc65b46,1,0,545cd0e7-4125-48f1-9123-0bc39e436e5e,545cd0e7-4125-48f1-9123-0bc39e436e5e,1,0,9a17eec6-b517-4133-8d25-bb953d84461f,9a17eec6-b517-4133-8d25-bb953d84461f,1,0,a0a61d7f-879d-4e92-98a3-5291c834c341,a0a61d7f-879d-4e92-98a3-5291c834c341,1,0,7bf60016-2edc-443b-98b4-0864b548c482,7bf60016-2edc-443b-98b4-0864b548c482,1,0,74139209-f345-4fd9-9ade-15cc4d399836,74139209-f345-4fd9-9ade-15cc4d399836,1,0,e39de1c5-b43b-4f71-aa32-c03b8afd6f65,e39de1c5-b43b-4f71-aa32-c03b8afd6f65,1,0,d5b6aad4-b1bd-464b-aca0-f8455d6388b4,d5b6aad4-b1bd-464b-aca0-f8455d6388b4,1,0,033ab408-fa51-4af2-a82c-f3167de00681,033ab408-fa51-4af2-a82c-f3167de00681,1,0,f7267120-f367-4d47-be5e-e2aa7a2ada46,f7267120-f367-4d47-be5e-e2aa7a2ada46,1,0,911b4ba4-1902-4c69-a4c9-963ab93d35b0,911b4ba4-1902-4c69-a4c9-963ab93d35b0,1,0,70cf60eb-a5f8-4573-a28b-6844721459de,70cf60eb-a5f8-4573-a28b-6844721459de,1,0,e2666bd9-bf44-408b-98fa-b9be26bde33f,e2666bd9-bf44-408b-98fa-b9be26bde33f,1,0,9151fa13-6612-4c4c-a264-3fd669205de7,9151fa13-6612-4c4c-a264-3fd669205de7,1,0,fee8fd9d-be7d-4560-9b96-819ffd497c88,fee8fd9d-be7d-4560-9b96-819ffd497c88,1,0,c86135b4-063c-4ca8-99e2-35c61026b43f,c86135b4-063c-4ca8-99e2-35c61026b43f,1,0,186792a9-0a07-4b6d-a9a0-337221f6b009,186792a9-0a07-4b6d-a9a0-337221f6b009,1,0,49163bf6-4a6a-4da9-a0ed-257c22224b47,49163bf6-4a6a-4da9-a0ed-257c22224b47,1,0,74c71abe-90eb-4c05-a4a6-375a93e7b99c,74c71abe-90eb-4c05-a4a6-375a93e7b99c,1,0,d36efd98-34a7-41b4-99b6-34c09e71525a,d36efd98-34a7-41b4-99b6-34c09e71525a,1,0,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,1,0,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,1,0,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,1,0,ee0412d3-58e7-4715-8774-d49778e1ef73,ee0412d3-58e7-4715-8774-d49778e1ef73,1,0,ea31df21-1402-417a-9788-b17a7116e842,ea31df21-1402-417a-9788-b17a7116e842,1,0,7a93efb9-62bb-437a-8095-b26a2c8ce8ed,7a93efb9-62bb-437a-8095-b26a2c8ce8ed,1,0,e964753f-7f4c-4f9f-bd17-cdac317c1d35,e964753f-7f4c-4f9f-bd17-cdac317c1d35,1,0,20c2aba0-e2b2-4e4f-9d48-1515c0ae7b4d,20c2aba0-e2b2-4e4f-9d48-1515c0ae7b4d,1,0,43c22498-3fd6-4038-a291-05f0db9ab66a,43c22498-3fd6-4038-a291-05f0db9ab66a,1,0,4ffc9d16-c450-4ecb-b8f6-9ec6fe37fc75,4ffc9d16-c450-4ecb-b8f6-9ec6fe37fc75,1,0,ee6e5e56-5848-46b6-89bf-b9345a57d94c,ee6e5e56-5848-46b6-89bf-b9345a57d94c,1,0,8817c872-bdee-4577-bcc3-4046edc72803,8817c872-bdee-4577-bcc3-4046edc72803,1,0,5b88c214-4e4e-45c2-b8c5-14eb852e9900,5b88c214-4e4e-45c2-b8c5-14eb852e9900,1,0,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,1,0,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,1,0,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,1,0,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,1,0,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,1,0,a2f19cb2-9f2e-442b-b9f2-e5253c70871c,a2f19cb2-9f2e-442b-b9f2-e5253c70871c,1,0,0c67453e-038b-46f3-8c13-2786e8622ad8,0c67453e-038b-46f3-8c13-2786e8622ad8,1,0,8ff1dc4d-b46c-4519-80fe-19448e620e74,8ff1dc4d-b46c-4519-80fe-19448e620e74,1,0,7cd5ca8c-cc97-4664-964e-152fdcb5bdef,7cd5ca8c-cc97-4664-964e-152fdcb5bdef,1,0,be0a5f9a-ffab-41d8-b55a-a61355f5d269,be0a5f9a-ffab-41d8-b55a-a61355f5d269,1,0,9286105d-9aa9-44f9-ae63-bbbcec64eade,9286105d-9aa9-44f9-ae63-bbbcec64eade,1,0,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,1,0,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,1,0,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,1,0,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1,0,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,1,0,483720db-6c9e-4179-b5c7-56159c9b6073,483720db-6c9e-4179-b5c7-56159c9b6073,1,0,1725c619-9c4a-40ac-9044-00fee71945a4,1725c619-9c4a-40ac-9044-00fee71945a4,1,0,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,1,0,e95b126d-797d-4071-b7b4-b14aaf595f2d,e95b126d-797d-4071-b7b4-b14aaf595f2d,1,0,9241ea3c-633f-4469-9e70-c5a20e464da8,9241ea3c-633f-4469-9e70-c5a20e464da8,1,0,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,1,0,961ae0fb-7f7b-414d-8fbf-32b893b41085,961ae0fb-7f7b-414d-8fbf-32b893b41085,1,0,10adf8c8-6f5f-477f-b244-4452b774b766,10adf8c8-6f5f-477f-b244-4452b774b766,1,0,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,1,0,04ec5e44-8469-4e9c-8021-83d258f2ec54,04ec5e44-8469-4e9c-8021-83d258f2ec54,1,0,cff36ede-0bd1-424b-8c75-b9695133f32e,cff36ede-0bd1-424b-8c75-b9695133f32e,1,0,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,1,0,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,1,0,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,1,0,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,1,0,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,1,0,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,1,0,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,1,0,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,1,0,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,1,0,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,1,0,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,1,0,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,1,0,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,1,0,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,1,0,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,1,0,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,1,0,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,1,0,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,1,0,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,1,0,aa114d56-2faf-4925-8319-f0aa3993e9ee,aa114d56-2faf-4925-8319-f0aa3993e9ee,1,0,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,1,0,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,1,0,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,1,0,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,1,0,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,1,0,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,1,0,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,1,0,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,1,0,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,1,0,2b94076d-39ee-45ad-9ba5-435115cf5d4f,2b94076d-39ee-45ad-9ba5-435115cf5d4f,1,0,72ace16c-e90a-4d05-bc23-4351d4c87683,72ace16c-e90a-4d05-bc23-4351d4c87683,1,0,bd86e378-84bb-486a-be7b-319a3fe3b70b,bd86e378-84bb-486a-be7b-319a3fe3b70b,1,0,ef3bc279-6721-4949-8dc0-f96141f7f05c,ef3bc279-6721-4949-8dc0-f96141f7f05c,1,0,f81c7e21-48ad-4b64-975d-e62d34c7235a,f81c7e21-48ad-4b64-975d-e62d34c7235a,1,0,d0523c14-585e-45d3-9735-891235631004,d0523c14-585e-45d3-9735-891235631004,1,0,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,1,0,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,1,0,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,1,0,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,1,0,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,1,0,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,1,0,45af8f5d-d505-466b-a798-19f2219a180c,45af8f5d-d505-466b-a798-19f2219a180c,1,0,8a8229bc-f70a-4434-bacc-8a81fc58154b,8a8229bc-f70a-4434-bacc-8a81fc58154b,1,0,6324ad14-82ca-467b-b6b7-8d5f6049ca65,6324ad14-82ca-467b-b6b7-8d5f6049ca65,1,0,273446f0-f28b-4ce2-874c-3c6a57299b71,273446f0-f28b-4ce2-874c-3c6a57299b71,1,0,eb2f7449-ee42-43ec-b59c-3e07a6e3c139,eb2f7449-ee42-43ec-b59c-3e07a6e3c139,1,0,f8a7913a-2c64-47e1-8ae9-622fc6e9477e,f8a7913a-2c64-47e1-8ae9-622fc6e9477e,1,0,9b46a2b4-223d-4527-a94e-37ecd4fe72d7,9b46a2b4-223d-4527-a94e-37ecd4fe72d7,1,0,7a4e17bf-3649-4982-a9c6-5982390f1f1d,7a4e17bf-3649-4982-a9c6-5982390f1f1d,1,0,722be6e0-2698-431b-9206-777a36e6742f,722be6e0-2698-431b-9206-777a36e6742f,1,0,75bb0122-26bd-40be-8de8-7a57680c85ae,75bb0122-26bd-40be-8de8-7a57680c85ae,1,0,28dd22df-07cc-4e6d-89b2-b15a13f76615,28dd22df-07cc-4e6d-89b2-b15a13f76615,1,0,0c98b025-5adb-44dc-ab14-4c6517cc230b,0c98b025-5adb-44dc-ab14-4c6517cc230b,1,0,da2f09bd-109f-43aa-a90b-f033d17ed689,da2f09bd-109f-43aa-a90b-f033d17ed689,1,0,c4b3cb31-356e-4868-921c-f6710349def8,c4b3cb31-356e-4868-921c-f6710349def8,1,0,f98a7b6d-f364-4b84-9aeb-8dd822ef582f,f98a7b6d-f364-4b84-9aeb-8dd822ef582f,1,0,44526cb1-561d-4b87-a628-d79cc64ccdec,44526cb1-561d-4b87-a628-d79cc64ccdec,1,0,5e4dbba3-07df-4e30-be14-d9244f5ec21c,5e4dbba3-07df-4e30-be14-d9244f5ec21c,1,0,c8116351-4487-40f3-ae04-1e0741cc5df6,c8116351-4487-40f3-ae04-1e0741cc5df6,1,0,a6be80f7-d6aa-4371-a180-3d355080d849,a6be80f7-d6aa-4371-a180-3d355080d849,1,0,b37722c3-e29f-4a40-b4eb-0317919fc7a5,b37722c3-e29f-4a40-b4eb-0317919fc7a5,1,0,b1b1cd90-094d-428b-a6bc-156521c1c54d,b1b1cd90-094d-428b-a6bc-156521c1c54d,1,0,4f79ef7c-79be-4a69-acc0-bd591c712d03,4f79ef7c-79be-4a69-acc0-bd591c712d03,1,0,a0dd2129-d3a1-4bca-b555-72b065be1c13,a0dd2129-d3a1-4bca-b555-72b065be1c13,1,0,dc5e8229-e301-477c-846e-2e7078e3ee5f,dc5e8229-e301-477c-846e-2e7078e3ee5f,1,0,24836e44-8fdd-44bd-91d8-4ddab2caf485,24836e44-8fdd-44bd-91d8-4ddab2caf485,1,0,3727bcfe-4d75-4270-86e7-4a66ab14866c,3727bcfe-4d75-4270-86e7-4a66ab14866c,1,0,870a4708-0b5a-4fa3-9978-d94b161d289a,870a4708-0b5a-4fa3-9978-d94b161d289a,1,0,30e9f89d-7b94-488e-9963-886c271b1af7,30e9f89d-7b94-488e-9963-886c271b1af7,1,0,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,1,0,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1,0,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,1,0,9693cc78-852e-445b-a7d2-f1689fa9eeec,9693cc78-852e-445b-a7d2-f1689fa9eeec,1,0,eb33e555-db41-462a-a45d-c7e0945cece8,eb33e555-db41-462a-a45d-c7e0945cece8,1,0,9cfd517c-1008-483a-9f65-7d15feb2cefc,9cfd517c-1008-483a-9f65-7d15feb2cefc,1,0,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,1,0,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,1,0,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,1,0,1d76f613-f4f6-4772-8c16-d97b3104a553,1d76f613-f4f6-4772-8c16-d97b3104a553,1,0,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,1,0,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,1,0,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,1,0,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,1,0,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,1,0,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,1,0,2e233e3c-687c-4516-87c6-5d6c5f9f04a2,2e233e3c-687c-4516-87c6-5d6c5f9f04a2,1,0,2afdcde7-46ef-4624-8b84-c6381ff2f3a4,2afdcde7-46ef-4624-8b84-c6381ff2f3a4,1,0,2d279d24-1953-4a2f-8206-77481d2fd718,2d279d24-1953-4a2f-8206-77481d2fd718,1,0,aa6abffe-1b09-48f9-9aee-4f234db6b2a2,aa6abffe-1b09-48f9-9aee-4f234db6b2a2,1,0,0a920200-77d0-42ea-abf6-0d40d63289b0,0a920200-77d0-42ea-abf6-0d40d63289b0,1,0,c850bafc-4073-44ef-b148-194f87c46f0e,c850bafc-4073-44ef-b148-194f87c46f0e,1,0,6d1dd726-815d-476e-b668-95cff4182e54,6d1dd726-815d-476e-b668-95cff4182e54,1,0,12f4a0ed-4798-4467-8834-de3eb385e22d,12f4a0ed-4798-4467-8834-de3eb385e22d,1,0,5710809e-4c41-42ab-952f-f7778fe9be0f,5710809e-4c41-42ab-952f-f7778fe9be0f,1,0,0811f6c2-6bb3-43b8-9944-910adc4c6f23,0811f6c2-6bb3-43b8-9944-910adc4c6f23,1,0,c1646df4-9fce-44f0-9cc3-a5dab0bbef2e,c1646df4-9fce-44f0-9cc3-a5dab0bbef2e,1,0,c86b02ab-3532-4f4c-b993-e237ed0d4d12,c86b02ab-3532-4f4c-b993-e237ed0d4d12,1,0,83c860a2-d0d7-4b7c-a127-78d86b155cfa,83c860a2-d0d7-4b7c-a127-78d86b155cfa,1,0,06e45039-8bc4-44dd-8a93-2cec34ad51ee,06e45039-8bc4-44dd-8a93-2cec34ad51ee,1,0,46e01647-cbdd-4387-affc-29b92ede8644,46e01647-cbdd-4387-affc-29b92ede8644,1,0,faa44953-118b-4027-a913-c485bca7a93f,faa44953-118b-4027-a913-c485bca7a93f,1,0,c9bd0dcd-98ec-4dc9-869a-e735fd269046,c9bd0dcd-98ec-4dc9-869a-e735fd269046,1,0,d039bfa4-39a0-43d4-ab6a-0697f9d2b375,d039bfa4-39a0-43d4-ab6a-0697f9d2b375,1,0,09072c75-75c7-4050-b674-9454558a1f87,09072c75-75c7-4050-b674-9454558a1f87,1,0,f0c8d2d2-d597-4f09-8257-0fa7524f1e44,f0c8d2d2-d597-4f09-8257-0fa7524f1e44,1,0,3e2f75ab-4143-48ca-83db-3006cb2a8584,3e2f75ab-4143-48ca-83db-3006cb2a8584,1,0,91a82492-5e27-46b6-b1a8-48e89a437715,91a82492-5e27-46b6-b1a8-48e89a437715,1,0,53bc7bfd-8786-464f-a615-ceae2971cbc9,53bc7bfd-8786-464f-a615-ceae2971cbc9,1,0,aa77817b-bd2f-4757-99b0-5e67a1b032d3,aa77817b-bd2f-4757-99b0-5e67a1b032d3,1,0,8cc27936-976d-4f31-91c6-644d15b69c55,8cc27936-976d-4f31-91c6-644d15b69c55,1,0,cf9de063-89f4-4632-b7a1-0cfbea6df643,cf9de063-89f4-4632-b7a1-0cfbea6df643,1,0,ee3bab2c-bd6a-4a33-89a2-78b4dd89bb88,ee3bab2c-bd6a-4a33-89a2-78b4dd89bb88,1,0,2478fb43-57a3-4348-b3d4-61f015e4e231,2478fb43-57a3-4348-b3d4-61f015e4e231,1,0,daa99b45-b2d2-47bc-9d7e-2d21b1a3dfd8,daa99b45-b2d2-47bc-9d7e-2d21b1a3dfd8,1,0,0449c160-01e5-4fe4-8759-5b93c484b467,0449c160-01e5-4fe4-8759-5b93c484b467,1,0,0684e4ba-28c7-4032-a43f-a3a4a37ec50b,0684e4ba-28c7-4032-a43f-a3a4a37ec50b,1,0,bcac012d-b4a9-49bb-9c54-722c741d183c,bcac012d-b4a9-49bb-9c54-722c741d183c,1,0,5370d079-975f-4f7c-95c3-7868147ecc76,5370d079-975f-4f7c-95c3-7868147ecc76,1,0,4dd66f76-e4e0-4f84-9fad-bb922cd51503,4dd66f76-e4e0-4f84-9fad-bb922cd51503,1,0,e76a411a-121b-4791-a785-dd54795eaa7f,e76a411a-121b-4791-a785-dd54795eaa7f,1,0,66844ae3-f098-462c-aef8-1fd38c403760,66844ae3-f098-462c-aef8-1fd38c403760,1,0,be96718a-223d-4597-bccf-2fb7d16dbbcc,be96718a-223d-4597-bccf-2fb7d16dbbcc,1,0,eb551461-ae0d-41dd-89fa-2f6e7f3c4840,eb551461-ae0d-41dd-89fa-2f6e7f3c4840,1,0,acec1961-a953-4f7b-b42b-baa1b8b3be14,acec1961-a953-4f7b-b42b-baa1b8b3be14,1,0,eb6394d4-1679-4494-8d23-419f5a714cdc,eb6394d4-1679-4494-8d23-419f5a714cdc,1,0,ffb3c2e4-bb9b-4d12-80bb-79e3c6d5700d,ffb3c2e4-bb9b-4d12-80bb-79e3c6d5700d,1,0,7e9fadd6-d0ad-4856-a195-1058f00bf488,7e9fadd6-d0ad-4856-a195-1058f00bf488,1,0,76d0c5ee-5b85-4670-ba1c-8fdaa7ba872a,76d0c5ee-5b85-4670-ba1c-8fdaa7ba872a,1,0,84f67d35-ca48-4fff-94e4-5f4beb7e3c08,84f67d35-ca48-4fff-94e4-5f4beb7e3c08,1,0,2972c142-0aac-4e36-b34e-4e73f18ba9cb,2972c142-0aac-4e36-b34e-4e73f18ba9cb,1,0,d6915227-4ede-4cd2-9e7c-d23dc409936e,d6915227-4ede-4cd2-9e7c-d23dc409936e,1,0,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,1,0,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,1,0,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,1,0,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,1,0,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,1,0,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,1,0,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1,0,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,1,0,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,1,0,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,1,0,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,1,0,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,1,0,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,1,0,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,1,0,6381b8d2-7722-45c7-8800-19f6574d7d7a,6381b8d2-7722-45c7-8800-19f6574d7d7a,1,0,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,1,0,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,1,0,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,1,0,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,1,0,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,1,0,7086199b-20ec-4a74-a52f-71824134e8c5,7086199b-20ec-4a74-a52f-71824134e8c5,1,0,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,1,0,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,1,0,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,1,0,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,1,0,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,1,0,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,1,0,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,1,0,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,1,0,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,1,0,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,1,0,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,1,0,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,1,0,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,1,0,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,1,0,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,1,0,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,1,0,08eb74b6-1e1c-4004-a0f8-b6f1fdfc68ef,08eb74b6-1e1c-4004-a0f8-b6f1fdfc68ef,1,0,d4eb3e9a-feb5-42d9-841b-ff20288228b6,d4eb3e9a-feb5-42d9-841b-ff20288228b6,1,0,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,1,0,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,1,0,bd0e4aeb-19f9-48fc-b838-38d785004360,bd0e4aeb-19f9-48fc-b838-38d785004360,1,0,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,1,0,0f2ec7ac-6d3f-4fcf-af3d-b0bfaa187a4b,0f2ec7ac-6d3f-4fcf-af3d-b0bfaa187a4b,1,0,6d351276-2c04-4198-a3e4-865881c12f5c,6d351276-2c04-4198-a3e4-865881c12f5c,1,0,73b1d2e2-0eeb-45dc-8ca3-3bda594d6823,73b1d2e2-0eeb-45dc-8ca3-3bda594d6823,1,0,5c4abd61-2f29-499e-a2ca-d133e9eeeaea,5c4abd61-2f29-499e-a2ca-d133e9eeeaea,1,0,8e07a76d-db30-491c-b296-181c8e689382,8e07a76d-db30-491c-b296-181c8e689382,1,0,4f1752ae-42d0-477d-854b-de143c428a85,4f1752ae-42d0-477d-854b-de143c428a85,1,0,29674b66-c542-4a34-8caa-8e57a51bd190,29674b66-c542-4a34-8caa-8e57a51bd190,1,0,1a41acdd-3503-4c69-b93b-eb1cb6749712,1a41acdd-3503-4c69-b93b-eb1cb6749712,1,0,0e45c53e-7571-49bf-b673-cff53d32af89,0e45c53e-7571-49bf-b673-cff53d32af89,1,0,169b0670-8fa7-48d1-b6b1-2cf581b18390,169b0670-8fa7-48d1-b6b1-2cf581b18390,1,0,2e239650-973b-4908-b91e-477062046528,2e239650-973b-4908-b91e-477062046528,1,0,4692eeee-5b73-42f3-ad39-794141af9e2b,4692eeee-5b73-42f3-ad39-794141af9e2b,1,0,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,1,0,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,1,0,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,1,0,47714327-dd28-4e32-a1c9-20ee47d9afd0,47714327-dd28-4e32-a1c9-20ee47d9afd0,1,0,4d76ef7a-f1a6-4147-84f4-6e1717dfd77e,4d76ef7a-f1a6-4147-84f4-6e1717dfd77e,1,0,d1eb0aa7-b485-4f3a-846d-be069ca807c0,d1eb0aa7-b485-4f3a-846d-be069ca807c0,1,0,afde7867-15d3-43fa-b439-6d9e40df580b,afde7867-15d3-43fa-b439-6d9e40df580b,1,0,a676ff94-a0d1-4de9-8690-ec67f2c891d8,a676ff94-a0d1-4de9-8690-ec67f2c891d8,1,0,012bf716-3672-462e-b390-7bb4384ab4b1,012bf716-3672-462e-b390-7bb4384ab4b1,1,0,65342599-ff37-4f99-8e40-f05d87403bcf,65342599-ff37-4f99-8e40-f05d87403bcf,1,0,3a3f505a-7a50-4111-8029-5b9057fed232,3a3f505a-7a50-4111-8029-5b9057fed232,1,0,1d66cd80-fd61-4bf2-a7f9-34b33443e1ea,1d66cd80-fd61-4bf2-a7f9-34b33443e1ea,1,0,7b638691-416d-4484-81f4-e4c796a92818,7b638691-416d-4484-81f4-e4c796a92818,1,0,03ab92e2-81a3-4e38-84a8-85c1d78d51e9,03ab92e2-81a3-4e38-84a8-85c1d78d51e9,1,0,ef09e296-af08-44ff-8303-4833b23a12c3,ef09e296-af08-44ff-8303-4833b23a12c3,1,0,8984f28e-8c83-499a-838c-5f51410d7b0e,8984f28e-8c83-499a-838c-5f51410d7b0e,1,0,73bf8c40-76ee-4c61-b56a-898bcd6da1ca,73bf8c40-76ee-4c61-b56a-898bcd6da1ca,1,0,434a0471-1389-4764-a901-69249e1fdc38,434a0471-1389-4764-a901-69249e1fdc38,1,0,7b6c1d9f-968e-4126-990e-fa2787ad83b2,7b6c1d9f-968e-4126-990e-fa2787ad83b2,1,0,b89108a9-8b4e-4b34-8f72-4eb502963743,b89108a9-8b4e-4b34-8f72-4eb502963743,1,0,398b93b1-620d-4942-ba44-7ea0f9cc14f0,398b93b1-620d-4942-ba44-7ea0f9cc14f0,1,0,7b06537e-d818-41b3-acc5-b6b63b543be8,7b06537e-d818-41b3-acc5-b6b63b543be8,1,0,74226c30-5f9b-4e47-b7cc-35e92139cbfa,74226c30-5f9b-4e47-b7cc-35e92139cbfa,1,0,09f812cb-770c-4f85-87f0-db35952c764e,09f812cb-770c-4f85-87f0-db35952c764e,1,0,8bbbcfd9-b6da-41f6-b543-863b12b9fb59,8bbbcfd9-b6da-41f6-b543-863b12b9fb59,1,0,eb48f8a9-1644-432d-a8a8-e63bc013a2fe,eb48f8a9-1644-432d-a8a8-e63bc013a2fe,1,0,36951804-70a4-45fa-9fad-1c37fd3ce7b7,36951804-70a4-45fa-9fad-1c37fd3ce7b7,1,0,d0031774-fa35-469f-9f8a-3aaa920928a0,d0031774-fa35-469f-9f8a-3aaa920928a0,1,0,6da02618-2454-48fe-b1dc-399d0d40d043,6da02618-2454-48fe-b1dc-399d0d40d043,1,0,5a080203-ecd2-4f40-ac64-c8024eda595e,5a080203-ecd2-4f40-ac64-c8024eda595e,1,0,3eabcb69-398b-43f5-bf53-c20f90bee5c4,3eabcb69-398b-43f5-bf53-c20f90bee5c4,1,0,9c33639e-529a-490f-9365-80778b54c3f7,9c33639e-529a-490f-9365-80778b54c3f7,1,0,561b97a0-9d42-4735-a606-8d5b5862689f,561b97a0-9d42-4735-a606-8d5b5862689f,1,0,10d5c0c2-301f-4477-a88f-254f99a30fa0,10d5c0c2-301f-4477-a88f-254f99a30fa0,1,0,84ba4ba7-2743-438a-8b65-cc14090f8a92,84ba4ba7-2743-438a-8b65-cc14090f8a92,1,0,cdc4312c-b1af-407c-bfc3-28db04915aa6,cdc4312c-b1af-407c-bfc3-28db04915aa6,1,0,97b76ee8-c73f-456b-9008-b453bd376317,97b76ee8-c73f-456b-9008-b453bd376317,1,0,ee305e39-978b-4069-a4e6-05e761a5d6ae,ee305e39-978b-4069-a4e6-05e761a5d6ae,1,0,965650ae-8a6e-469a-869a-0ce821818058,965650ae-8a6e-469a-869a-0ce821818058,1,0,00fde8e2-3eb3-484a-a960-a390cbdaa16a,00fde8e2-3eb3-484a-a960-a390cbdaa16a,1,0,c7a82aa5-043c-46a2-9f5a-cba098ca36bd,c7a82aa5-043c-46a2-9f5a-cba098ca36bd,1,0,94744edd-61d0-4329-95d8-fc19dc7c6af1,94744edd-61d0-4329-95d8-fc19dc7c6af1,1,0,43bbf87f-8f21-49b9-be2f-eceb64c2c650,43bbf87f-8f21-49b9-be2f-eceb64c2c650,1,0,69db1a1c-3e9d-4e3c-b31e-731f2b8635b9,69db1a1c-3e9d-4e3c-b31e-731f2b8635b9,1,0,621b1881-9a7f-4fa4-a373-46467743e29c,621b1881-9a7f-4fa4-a373-46467743e29c,1,0,932ef5a0-4bad-424d-9772-ad8393c12006,932ef5a0-4bad-424d-9772-ad8393c12006,1,0,35dbc542-3ad9-4a72-9863-229a67cda425,35dbc542-3ad9-4a72-9863-229a67cda425,1,0,8e4277e9-983a-4d43-b08e-a4f918df87bf,8e4277e9-983a-4d43-b08e-a4f918df87bf,1,0,110e76d3-26ad-4392-9f82-255d792478a1,110e76d3-26ad-4392-9f82-255d792478a1,1,0,9117730e-1d3f-47b6-84fc-7a02377f86a0,9117730e-1d3f-47b6-84fc-7a02377f86a0,1,0,0a7eec2f-41c6-4d77-98a4-5e0bfc698997,0a7eec2f-41c6-4d77-98a4-5e0bfc698997,1,0,ec06e6a7-7894-4411-9b54-f811837b8a2e,ec06e6a7-7894-4411-9b54-f811837b8a2e,1,0,f43f3a1b-7f71-4a4f-9ec2-5f4d7d77efca,f43f3a1b-7f71-4a4f-9ec2-5f4d7d77efca,1,0,0947bd87-9542-4d2b-8439-9f6ccdb2c9cc,0947bd87-9542-4d2b-8439-9f6ccdb2c9cc,1,0,c0e2673a-1846-4ae5-933a-4e33b73a866b,c0e2673a-1846-4ae5-933a-4e33b73a866b,1,0,3996aff6-b6ce-4f6b-a2f3-1b0bf8b1d0c2,3996aff6-b6ce-4f6b-a2f3-1b0bf8b1d0c2,1,0,f5fadf27-b8ca-421b-8a73-c3f10aef248b,f5fadf27-b8ca-421b-8a73-c3f10aef248b,1,0,006fa20c-ba4b-4003-a743-b47c4b7bd815,006fa20c-ba4b-4003-a743-b47c4b7bd815,1,0,4ecd2da3-4d0c-416b-ae97-66f6f753226b,4ecd2da3-4d0c-416b-ae97-66f6f753226b,1,0,ec680d71-eb28-4b42-a664-c6137c259eaa,ec680d71-eb28-4b42-a664-c6137c259eaa,1,0,efa1d27f-0620-4b3a-b058-12f160008478,efa1d27f-0620-4b3a-b058-12f160008478,1,0,2dd0ec2e-457d-4147-b806-ff3d6fa091fb,2dd0ec2e-457d-4147-b806-ff3d6fa091fb,1,0,005d4afc-7d09-4cef-acaa-50d49e455df0,005d4afc-7d09-4cef-acaa-50d49e455df0,1,0,d773673e-992d-4f22-9fb3-acfb8863217d,d773673e-992d-4f22-9fb3-acfb8863217d,1,0,6cf00002-d685-4340-a873-196126a19664,6cf00002-d685-4340-a873-196126a19664,1,0,e422c08d-f54f-4a49-b0c5-a50bf63973c9,e422c08d-f54f-4a49-b0c5-a50bf63973c9,1,0,8288078e-0d2f-47c5-8e58-c5a17a76cc11,8288078e-0d2f-47c5-8e58-c5a17a76cc11,1,0,82abcc34-c8aa-42a0-b2fe-f66b7cafc2a0,82abcc34-c8aa-42a0-b2fe-f66b7cafc2a0,1,0,304feda3-6d33-466c-9e0d-9cea97d763be,304feda3-6d33-466c-9e0d-9cea97d763be,1,0,ecaf5d2f-0cea-4ad0-8550-51be37cead5c,ecaf5d2f-0cea-4ad0-8550-51be37cead5c,1,0,448e7386-cc56-4578-9c57-ef270980a0ff,448e7386-cc56-4578-9c57-ef270980a0ff,1,0,c2cdc60c-157d-450f-b3ba-2b6242459ebb,c2cdc60c-157d-450f-b3ba-2b6242459ebb,1,0,186f87ca-b9d5-48fa-b196-eed2794bade4,186f87ca-b9d5-48fa-b196-eed2794bade4,1,0,b87d9e04-9e12-42a5-b9fd-ea9a9bab59eb,b87d9e04-9e12-42a5-b9fd-ea9a9bab59eb,1,0,65b653b7-1298-40e4-9d69-2ce7810d5985,65b653b7-1298-40e4-9d69-2ce7810d5985,1,0,5fd170a9-44fc-4d18-9e51-2dbf09ca902e,5fd170a9-44fc-4d18-9e51-2dbf09ca902e,1,0,66359bb1-8692-415a-86d9-f40545f88d3a,66359bb1-8692-415a-86d9-f40545f88d3a,1,0,83be7bdf-e915-440f-a39f-1bb74db34b3e,83be7bdf-e915-440f-a39f-1bb74db34b3e,1,0,190b6efe-e67e-4274-abb9-263178a6ec4a,190b6efe-e67e-4274-abb9-263178a6ec4a,1,0,1363523a-929e-49ac-ae39-d43acf9f0478,1363523a-929e-49ac-ae39-d43acf9f0478,1,0,f6ff0bb8-c1fd-4eae-b919-6d10d4504f0c,f6ff0bb8-c1fd-4eae-b919-6d10d4504f0c,1,0,2876c476-8280-426d-8bf9-c93beda0ddd5,2876c476-8280-426d-8bf9-c93beda0ddd5,1,0,963e0813-4f6b-4d31-b66d-77125c47ce19,963e0813-4f6b-4d31-b66d-77125c47ce19,1,0,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,1,0,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,1,0,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,1,0,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,1,0,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,1,0,d9f76f2f-2b32-4986-8987-a585f831d951,d9f76f2f-2b32-4986-8987-a585f831d951,1,0,b1a96083-1c12-43f4-ba61-3a0588fc7310,b1a96083-1c12-43f4-ba61-3a0588fc7310,1,0,2e37c7d0-b97f-4c72-821e-b2bb77fb3140,2e37c7d0-b97f-4c72-821e-b2bb77fb3140,1,0,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,1,0,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,1,0,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,1,0,ee49981d-91f6-4002-9205-b8a53e6f54e0,ee49981d-91f6-4002-9205-b8a53e6f54e0,1,0,64a74365-ca32-4b7d-af8e-695624e3dcb6,64a74365-ca32-4b7d-af8e-695624e3dcb6,1,0,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,1,0,d3aca87c-2b47-48da-82dd-18ca867c8463,d3aca87c-2b47-48da-82dd-18ca867c8463,1,0,669b81a6-6526-4b5c-aafa-1988ae5253ce,669b81a6-6526-4b5c-aafa-1988ae5253ce,1,0,ab138a0c-71fe-4ca2-9d82-21f5830dde24,ab138a0c-71fe-4ca2-9d82-21f5830dde24,1,0,ffa6c000-ec84-4749-8ffe-42b0599751cd,ffa6c000-ec84-4749-8ffe-42b0599751cd,1,0,740bde9c-9fe1-4183-ab01-3fbe91d33b61,740bde9c-9fe1-4183-ab01-3fbe91d33b61,1,0,e8e19542-c5c8-418b-8a83-20336fd9075a,e8e19542-c5c8-418b-8a83-20336fd9075a,1,0,ebedc283-5eb0-459b-b686-f8643666b8b8,ebedc283-5eb0-459b-b686-f8643666b8b8,1,0,6a6afffd-cfed-4801-8b59-34d27e46565c,6a6afffd-cfed-4801-8b59-34d27e46565c,1,0,a469b12d-4537-419c-91e0-37abc9d31505,a469b12d-4537-419c-91e0-37abc9d31505,1,0,6f312bda-1f4d-48a6-bd95-f23f34f0ea4b,6f312bda-1f4d-48a6-bd95-f23f34f0ea4b,1,0,82c42232-531e-403f-8599-cc21a248fa2c,82c42232-531e-403f-8599-cc21a248fa2c,1,0,9104b791-9ac4-41ba-a7f0-9e609db3b578,9104b791-9ac4-41ba-a7f0-9e609db3b578,1,0,2d3721d1-816f-4e84-9df1-863cb269d83d,2d3721d1-816f-4e84-9df1-863cb269d83d,1,0,eaa11272-8cc2-4f82-808f-e4f641748574,eaa11272-8cc2-4f82-808f-e4f641748574,1,0,9dfd78a7-74ba-4c7a-8842-4baf4ffd5e4f,9dfd78a7-74ba-4c7a-8842-4baf4ffd5e4f,1,0,7d422da3-8ec4-4bc8-94ba-88d92625d4c7,7d422da3-8ec4-4bc8-94ba-88d92625d4c7,1,0,8035e1ce-a36a-4628-8196-1f04f50e230a,8035e1ce-a36a-4628-8196-1f04f50e230a,1,0,51f08b3c-2f03-408e-89d5-53ccbaec4e74,51f08b3c-2f03-408e-89d5-53ccbaec4e74,1,0,920ebc04-3018-4948-bae2-16de8f0f0c9a,920ebc04-3018-4948-bae2-16de8f0f0c9a,1,0,4c4fc449-05a5-4223-bd28-c73d27780a9b,4c4fc449-05a5-4223-bd28-c73d27780a9b,1,0,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,1,0,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,1,0,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,1,0,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,1,0,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,1,0,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,1,0,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,1,0,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,1,0,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,1,0,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,1,0,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,1,0,703453e8-cb49-491b-8e19-a17b89894d1e,703453e8-cb49-491b-8e19-a17b89894d1e,1,0,f0b0608c-178f-4dea-b461-0d8f00d79d30,f0b0608c-178f-4dea-b461-0d8f00d79d30,1,0,ed2dba0c-7fe3-4d24-b6a6-b104beadc286,ed2dba0c-7fe3-4d24-b6a6-b104beadc286,1,0,a4c98768-c9fc-4f95-b89b-bb1cb0e8fade,a4c98768-c9fc-4f95-b89b-bb1cb0e8fade,1,0,5546b9a9-a4fe-4a2b-9492-883bcb37a210,5546b9a9-a4fe-4a2b-9492-883bcb37a210,1,0,6fb76c5f-844f-4cbc-ae7c-4ac834fddfc9,6fb76c5f-844f-4cbc-ae7c-4ac834fddfc9,1,0,275a5772-8428-497a-81ef-c919f15fcccd,275a5772-8428-497a-81ef-c919f15fcccd,1,0,8df6e7e6-2a1e-4cf3-bdc9-60e52ea3f625,8df6e7e6-2a1e-4cf3-bdc9-60e52ea3f625,1,0,b5278cbd-1771-4739-9013-a28682689778,b5278cbd-1771-4739-9013-a28682689778,1,0,a52f2de4-f414-4837-9b1a-6d8f282e1327,a52f2de4-f414-4837-9b1a-6d8f282e1327,1,0,82573440-0ef5-4c07-bb1e-fe90295981d2,82573440-0ef5-4c07-bb1e-fe90295981d2,1,0,804be484-09cf-45a4-bd1f-c8850067e2b2,804be484-09cf-45a4-bd1f-c8850067e2b2,1,0,f1a145ce-a199-475c-ab8a-065c11a27277,f1a145ce-a199-475c-ab8a-065c11a27277,1,0,8d509c4e-fcea-4ccd-aec4-e146f2d4319b,8d509c4e-fcea-4ccd-aec4-e146f2d4319b,1,0,d126a11e-c770-4309-941f-cbcdd5cbad5d,d126a11e-c770-4309-941f-cbcdd5cbad5d,1,0,f4d88096-bff9-416a-8f75-9143ede1213f,f4d88096-bff9-416a-8f75-9143ede1213f,1,0,6b0721fe-d27f-4d1a-b377-26fce2ed1687,6b0721fe-d27f-4d1a-b377-26fce2ed1687,1,0,25c97480-330c-42f2-a2a5-031062a3a683,25c97480-330c-42f2-a2a5-031062a3a683,1,0,a2fb1bf9-d29a-4bfe-95f1-10883fa019b3,a2fb1bf9-d29a-4bfe-95f1-10883fa019b3,1,0,6adc3aa8-8784-467d-8e12-b60418a5c729,6adc3aa8-8784-467d-8e12-b60418a5c729,1,0,265206ed-4d41-497e-a483-c14052134500,265206ed-4d41-497e-a483-c14052134500,1,0,bf070420-9eb7-4372-96a6-b0d00ac3ce8c,bf070420-9eb7-4372-96a6-b0d00ac3ce8c,1,0,10336352-f3a1-4bc3-bdec-1a2eef15f176,10336352-f3a1-4bc3-bdec-1a2eef15f176,1,0,cacabf2f-6d1c-4c33-80c7-c27a5e757cc9,cacabf2f-6d1c-4c33-80c7-c27a5e757cc9,1,0,3b7c713e-81ae-4adc-9519-99c936599ef7,3b7c713e-81ae-4adc-9519-99c936599ef7,1,0,1c8ffbbd-035c-45cf-8ec8-dc5d26d7f673,1c8ffbbd-035c-45cf-8ec8-dc5d26d7f673,1,0,ecda2c4b-6411-4b47-ab59-1918bad5acdd,ecda2c4b-6411-4b47-ab59-1918bad5acdd,1,0,a9a05a66-0a1c-4e53-9d09-1abe8f45e354,a9a05a66-0a1c-4e53-9d09-1abe8f45e354,1,0,2c811ee8-f50d-4c39-82ee-0492feb1c431,2c811ee8-f50d-4c39-82ee-0492feb1c431,1,0,399f679b-f48a-4d4e-b890-5eab9e4598c3,399f679b-f48a-4d4e-b890-5eab9e4598c3,1,0,da9ca4c4-c291-4f8b-accd-bc1b123ed4f8,da9ca4c4-c291-4f8b-accd-bc1b123ed4f8,1,0,9ad1ea04-1aee-4a80-b4df-60526cdf3ad0,9ad1ea04-1aee-4a80-b4df-60526cdf3ad0,1,0,0a92df3d-fb51-4fba-938c-55846929bd5f,0a92df3d-fb51-4fba-938c-55846929bd5f,1,0,1d005a8d-aaac-4442-a7dc-12634d03f6f3,1d005a8d-aaac-4442-a7dc-12634d03f6f3,1,0,348d0ad2-f64e-4ea0-8b8e-11bbc10926f7,348d0ad2-f64e-4ea0-8b8e-11bbc10926f7,1,0,7f7eb00d-7a38-4025-8853-9d1cf2dab1e3,7f7eb00d-7a38-4025-8853-9d1cf2dab1e3,1,0,36221881-a9c8-4b91-acac-44f7c065c05a,36221881-a9c8-4b91-acac-44f7c065c05a,1,0,3fdcf013-38e0-4a30-9ae8-19100e6704ba,3fdcf013-38e0-4a30-9ae8-19100e6704ba,1,0,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,1,0,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,1,0,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,1,0,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,1,0,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,1,0,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,1,0,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,1,0,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,1,0,b5ea4aff-11be-4232-94a2-cb92801b6c49,b5ea4aff-11be-4232-94a2-cb92801b6c49,1,0,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,1,0,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,1,0,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,1,0,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,1,0,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,1,0,f6d79449-eca9-4d13-9ddc-8b36ae9e729e,f6d79449-eca9-4d13-9ddc-8b36ae9e729e,1,0,b9d56dc6-3a10-4795-9ca3-dbf69310813e,b9d56dc6-3a10-4795-9ca3-dbf69310813e,1,0,f4b53ce1-8c1b-4f57-b5de-acb4692a37d8,f4b53ce1-8c1b-4f57-b5de-acb4692a37d8,1,0,9b18e04f-036d-43ae-b949-9432f96d71d9,9b18e04f-036d-43ae-b949-9432f96d71d9,1,0,e99a1f54-4001-45ee-81e3-472656c05f57,e99a1f54-4001-45ee-81e3-472656c05f57,1,0,b104e7b9-8a41-4154-a84b-d1bb12fab939,b104e7b9-8a41-4154-a84b-d1bb12fab939,1,0,86b835c4-341e-4b0d-99e5-2369684ff3f4,86b835c4-341e-4b0d-99e5-2369684ff3f4,1,0,55c48fa8-8d12-4378-97a0-c0ed683f6b83,55c48fa8-8d12-4378-97a0-c0ed683f6b83,1,0,b0f74a92-f5e4-4859-9a72-643ddb5315cb,b0f74a92-f5e4-4859-9a72-643ddb5315cb,1,0,1864093d-62ac-4b12-ad16-c460432c99f6,1864093d-62ac-4b12-ad16-c460432c99f6,1,0,6eb78c87-24ed-43a8-800d-ccde02358b32,6eb78c87-24ed-43a8-800d-ccde02358b32,1,0,787d5fec-c476-4519-884b-f62492fc8396,787d5fec-c476-4519-884b-f62492fc8396,1,0,59ebd5fb-d782-46ea-b693-7885d2ababa8,59ebd5fb-d782-46ea-b693-7885d2ababa8,1,0,39a39567-43d8-47c5-9f17-0a11f31e129a,39a39567-43d8-47c5-9f17-0a11f31e129a,1,0,b24e8ff0-eb86-4ce6-84f5-49134b48f031,b24e8ff0-eb86-4ce6-84f5-49134b48f031,1,0,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,1,0,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,1,0,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,1,0,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,1,0,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,1,0,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,1,0,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,1,0,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,1,0,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,1,0,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,1,0,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,1,0,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,1,0,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,1,0,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,1,0,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,1,0,e5094d4f-ee61-4142-a97b-d96172350f65,e5094d4f-ee61-4142-a97b-d96172350f65,1,0,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,1,0,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,1,0,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,1,0,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,1,0,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,1,0,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,1,0,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,1,0,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,1,0,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,1,0,20c57e30-5856-4801-9e77-8006471d89f8,20c57e30-5856-4801-9e77-8006471d89f8,1,0,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,1,0,4a3fe393-8aea-4394-8c10-a234f1f191ad,4a3fe393-8aea-4394-8c10-a234f1f191ad,1,0,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,1,0,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,1,0,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,1,0,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,1,0,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,1,0,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,1,0,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,1,0,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,1,0,fd271670-bde6-4351-abec-eb82548c6c98,fd271670-bde6-4351-abec-eb82548c6c98,1,0,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,1,0,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,1,0,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,1,0,799b3dda-fbfc-4dea-a577-30321e64f4d5,799b3dda-fbfc-4dea-a577-30321e64f4d5,1,0,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,1,0,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,1,0,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,1,0,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,1,0,05ee4a7c-63e6-4587-8be7-e206345e3471,05ee4a7c-63e6-4587-8be7-e206345e3471,1,0,98d5e98b-0382-4b28-a5d9-24392925664a,98d5e98b-0382-4b28-a5d9-24392925664a,1,0,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,1,0,2a77eb39-0487-4fb0-8d5b-d4a27592ea60,2a77eb39-0487-4fb0-8d5b-d4a27592ea60,1,0,19a18193-c5d3-4e56-86c5-5a81c525e9ad,19a18193-c5d3-4e56-86c5-5a81c525e9ad,1,0,c208fcc0-d7b2-435b-963a-e18c97727f8f,c208fcc0-d7b2-435b-963a-e18c97727f8f,1,0,ac5db038-8bc3-45ff-9e8d-04ea9fef6d43,ac5db038-8bc3-45ff-9e8d-04ea9fef6d43,1,0,bf11f7b1-6332-4499-ba48-b94bc10ef869,bf11f7b1-6332-4499-ba48-b94bc10ef869,1,0,4de445f0-7c27-4540-a5a8-9c3ca2a13fd2,4de445f0-7c27-4540-a5a8-9c3ca2a13fd2,1,0,2977fedd-2c56-4d21-8eb1-a424e1b17cb3,2977fedd-2c56-4d21-8eb1-a424e1b17cb3,1,0,0b8a2936-07c5-4b90-80e6-5a058e546de6,0b8a2936-07c5-4b90-80e6-5a058e546de6,1,0,34524248-668e-48e5-a801-f489cd664de8,34524248-668e-48e5-a801-f489cd664de8,1,0,ae0891ae-ecd2-4072-8d2b-0556030c9dfd,ae0891ae-ecd2-4072-8d2b-0556030c9dfd,1,0,e8f36bca-738b-471c-b8d3-8a484978934a,e8f36bca-738b-471c-b8d3-8a484978934a,1,0,05c27c89-2c26-4252-842d-9aa43ba0ea2f,05c27c89-2c26-4252-842d-9aa43ba0ea2f,1,0,7c1e16c2-201d-4a3f-b0f4-9d66f5f8a68b,7c1e16c2-201d-4a3f-b0f4-9d66f5f8a68b,1,0,f092729c-6b5d-4709-8b28-15e06129731d,f092729c-6b5d-4709-8b28-15e06129731d,1,0,c03be2f7-d681-417d-975a-5c8c7b716659,c03be2f7-d681-417d-975a-5c8c7b716659,1,0,fca7af5f-bdc0-4264-be68-5e5e38545368,fca7af5f-bdc0-4264-be68-5e5e38545368,1,0,a3fc0bce-a87e-4c15-b57b-f285a694bcdf,a3fc0bce-a87e-4c15-b57b-f285a694bcdf,1,0,ae124745-edfb-11e6-4681-a8667f21fde4,ae124745-edfb-11e6-4681-a8667f21fde4,1,0,f6fcf9c2-edfb-11e6-4681-a8667f21fde4,f6fcf9c2-edfb-11e6-4681-a8667f21fde4,1,0,ec70cf10-edfb-11e6-4681-a8667f21fde4,ec70cf10-edfb-11e6-4681-a8667f21fde4,1,0,7c47f039-1ca9-4c6f-ac36-f4cb59b48b65,7c47f039-1ca9-4c6f-ac36-f4cb59b48b65,1,0,0b7cee9b-3870-49f5-a58e-063cf5353467,0b7cee9b-3870-49f5-a58e-063cf5353467,1,0,d392a791-af74-40c9-ab20-6ed6aeabe864,d392a791-af74-40c9-ab20-6ed6aeabe864,1,0,974d2430-1ff6-4be9-a5aa-aa896e9a66d4,974d2430-1ff6-4be9-a5aa-aa896e9a66d4,1,0,1612570d-b069-405a-9dd3-80b8175fb468,1612570d-b069-405a-9dd3-80b8175fb468,1,0,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,1,0,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,1,0,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,1,0,27c52afc-7127-41e1-af8a-1b1bd2c9bfa8,27c52afc-7127-41e1-af8a-1b1bd2c9bfa8,1,0,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,1,0,561ed574-617d-4a46-b32b-f022e07846c8,561ed574-617d-4a46-b32b-f022e07846c8,1,0,cba706bf-a9a7-4dda-9c5a-a26e85119396,cba706bf-a9a7-4dda-9c5a-a26e85119396,1,0,159a4eb5-00cd-426c-86e3-09cd3f569f22,159a4eb5-00cd-426c-86e3-09cd3f569f22,1,0,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,1,0,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,1,0,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,1,0,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,1,0,2ded5135-b6c3-46dd-b563-7b6fab986d23,2ded5135-b6c3-46dd-b563-7b6fab986d23,1,0,14215720-ccb3-4e5a-8345-cd42c96a3e77,14215720-ccb3-4e5a-8345-cd42c96a3e77,1,0,24fa0604-b6a5-49ad-9d03-b2cf8e81dad8,24fa0604-b6a5-49ad-9d03-b2cf8e81dad8,1,0,0690a5c7-bc25-4101-afa5-69c095d415c2,0690a5c7-bc25-4101-afa5-69c095d415c2,1,0,2ad7b509-4cd1-456a-a6ae-94649fdf8c3e,2ad7b509-4cd1-456a-a6ae-94649fdf8c3e,1,0,79013bba-a0f2-481c-a63e-095a54ee52aa,79013bba-a0f2-481c-a63e-095a54ee52aa,1,0,8523c346-f144-41b8-a702-2d588e7097c2,8523c346-f144-41b8-a702-2d588e7097c2,1,0,93969a30-d9d7-4f2f-85fa-57a4eb7495bf,93969a30-d9d7-4f2f-85fa-57a4eb7495bf,1,0,9fb73c9b-05de-4474-8a28-7e3fd5b2b143,9fb73c9b-05de-4474-8a28-7e3fd5b2b143,1,0,fa2bd6a6-bb46-4e21-8684-248578310164,fa2bd6a6-bb46-4e21-8684-248578310164,1,0,f7cf3b42-39c0-48db-b8ca-fe9ea267a45a,f7cf3b42-39c0-48db-b8ca-fe9ea267a45a,1,0,3a0c06eb-f6d5-46c3-b0b9-c8d98e572093,3a0c06eb-f6d5-46c3-b0b9-c8d98e572093,1,0,88ccac36-169d-48f8-bc68-15e3bb775b79,88ccac36-169d-48f8-bc68-15e3bb775b79,1,0,a1640988-bd60-43b3-86f1-184b9db275c6,a1640988-bd60-43b3-86f1-184b9db275c6,1,0,300a02f7-8062-4843-b11e-0321f8b40f4d,300a02f7-8062-4843-b11e-0321f8b40f4d,1,0,c8015ae6-31a7-49f4-a9e6-5d13774f64e5,c8015ae6-31a7-49f4-a9e6-5d13774f64e5,1,0,970430c4-37fc-476c-a3f6-5f6bebd2e663,970430c4-37fc-476c-a3f6-5f6bebd2e663,1,0,4cddde4a-42d5-44d0-a693-ea90eab9b169,4cddde4a-42d5-44d0-a693-ea90eab9b169,1,0,d9d612bb-6d04-4186-b243-f99aded0ba43,d9d612bb-6d04-4186-b243-f99aded0ba43,1,0,15db8b7b-59f5-4551-b2bd-b24801f056b5,15db8b7b-59f5-4551-b2bd-b24801f056b5,1,0,88d2236b-794b-485a-b075-f1a54cadcd3a,88d2236b-794b-485a-b075-f1a54cadcd3a,1,0,b7f9553f-6219-4401-a6f4-9debd47186d2,b7f9553f-6219-4401-a6f4-9debd47186d2,1,0,26a7e044-a583-40af-9daa-5aea628c8f19,26a7e044-a583-40af-9daa-5aea628c8f19,1,0,548717ca-0645-49b4-9580-c77cd4d03ebb,548717ca-0645-49b4-9580-c77cd4d03ebb,1,0,29c337bd-9811-4fce-91bb-20c253d2d14a,29c337bd-9811-4fce-91bb-20c253d2d14a,1,0,b451f2fc-ced2-418a-a803-4fe99488b394,b451f2fc-ced2-418a-a803-4fe99488b394,1,0,62269222-67a7-489e-ba59-4294902275bc,62269222-67a7-489e-ba59-4294902275bc,1,0,fed1b714-a2c9-42cf-9ced-35ed895e4167,fed1b714-a2c9-42cf-9ced-35ed895e4167,1,0,6f334263-10c8-4187-9a84-d2fd1afadc48,6f334263-10c8-4187-9a84-d2fd1afadc48,1,0,f5674a0d-a106-4cc0-a402-b378280eab3d,f5674a0d-a106-4cc0-a402-b378280eab3d,1,0,fa99302b-3e86-4330-b9ff-c38d933f81f0,fa99302b-3e86-4330-b9ff-c38d933f81f0,1,0,8db2b1d8-c415-4846-bd1a-9fec1b105ff0,8db2b1d8-c415-4846-bd1a-9fec1b105ff0,1,0,9a68a81b-c6bd-4353-baf4-da8a21f98fb9,9a68a81b-c6bd-4353-baf4-da8a21f98fb9,1,0,3ed20a3b-031c-4f2b-a66a-14cceed80407,3ed20a3b-031c-4f2b-a66a-14cceed80407,1,0,3831a5d8-12d5-4730-ac2e-e11f084dc684,3831a5d8-12d5-4730-ac2e-e11f084dc684,1,0,b6dce793-c652-48de-b2da-1dc3e89e1521,b6dce793-c652-48de-b2da-1dc3e89e1521,1,0,2e6a596c-c203-48b3-af11-bf0aef0f70a1,2e6a596c-c203-48b3-af11-bf0aef0f70a1,1,0,82eb7d08-12ad-42a2-9257-91b93f7cc890,82eb7d08-12ad-42a2-9257-91b93f7cc890,1,0,93070fc1-4204-43b7-b8eb-1bf905f5fa3f,93070fc1-4204-43b7-b8eb-1bf905f5fa3f,1,0,50754c7d-9c8a-497c-a4c8-76d7400b3412,50754c7d-9c8a-497c-a4c8-76d7400b3412,1,0,193f2d79-83a7-4044-89c6-0b5d7c7cf80a,193f2d79-83a7-4044-89c6-0b5d7c7cf80a,1,0,3bcce139-d42e-45c2-ace8-28aa34e01a38,3bcce139-d42e-45c2-ace8-28aa34e01a38,1,0,d29ba846-bc42-4364-b69d-4b56532920e0,d29ba846-bc42-4364-b69d-4b56532920e0,1,0,83239cd4-50cb-4281-8be3-fd89e410c15c,83239cd4-50cb-4281-8be3-fd89e410c15c,1,0,fb9c08ee-92e9-4bd9-8794-ef0f221eee99,fb9c08ee-92e9-4bd9-8794-ef0f221eee99,1,0,e4cd44e6-1255-490f-96d9-f805ac92cf67,e4cd44e6-1255-490f-96d9-f805ac92cf67,1,0,8ae9be37-cda5-4b66-8a97-5e77d2a2c75f,8ae9be37-cda5-4b66-8a97-5e77d2a2c75f,1,0,5a9011fc-c023-47fb-a999-2c6ca33a04b9,5a9011fc-c023-47fb-a999-2c6ca33a04b9,1,0,ab574fa5-0730-4456-b741-111e5ea8a896,ab574fa5-0730-4456-b741-111e5ea8a896,1,0,b8d5adf0-dc2f-4041-bc97-cb2442f00054,b8d5adf0-dc2f-4041-bc97-cb2442f00054,1,0,398199c4-4830-48e9-89c5-45c2c5a30ee6,398199c4-4830-48e9-89c5-45c2c5a30ee6,1,0,546ba3bb-4614-423f-954c-466530f42784,546ba3bb-4614-423f-954c-466530f42784,1,0,e5bc54f0-d7d0-471c-adda-a0e73e0dd3cf,e5bc54f0-d7d0-471c-adda-a0e73e0dd3cf,1,0,af447f33-ef41-4eda-96ec-5bac26fff33e,af447f33-ef41-4eda-96ec-5bac26fff33e,1,0,f0c83fc5-6e9a-4185-ab43-2b419ace7909,f0c83fc5-6e9a-4185-ab43-2b419ace7909,1,0,4bd15718-6a0e-4a86-921a-09d38ba4be4c,4bd15718-6a0e-4a86-921a-09d38ba4be4c,1,0,32586ba6-8922-4321-b134-70d1b77a16a4,32586ba6-8922-4321-b134-70d1b77a16a4,1,0,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,1,0,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,1,0,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,1,0,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,1,0,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,1,0,fc67b510-3fb4-4305-92d2-c252bc718f03,fc67b510-3fb4-4305-92d2-c252bc718f03,1,0,ed98a7b2-ad31-401f-a65e-dfbcc8e5a4a8,ed98a7b2-ad31-401f-a65e-dfbcc8e5a4a8,1,0,9a5e3d2c-ab69-4f9d-a56f-20bb5f0be1e2,9a5e3d2c-ab69-4f9d-a56f-20bb5f0be1e2,1,0,cf1f7915-94ad-47e7-8676-73271d0cf71e,cf1f7915-94ad-47e7-8676-73271d0cf71e,1,0,fceb6e4a-bd51-4193-a542-70d2317af669,fceb6e4a-bd51-4193-a542-70d2317af669,1,0,f9f991a6-ddf3-4953-8a1f-e6c0e1a7f4e9,f9f991a6-ddf3-4953-8a1f-e6c0e1a7f4e9,1,0,80847d57-1795-46c7-a106-926e1f43ac1e,80847d57-1795-46c7-a106-926e1f43ac1e,1,0,38685415-dc87-48b4-8cc4-f85b438f2ec2,38685415-dc87-48b4-8cc4-f85b438f2ec2,1,0,110eff8b-aeec-4ba5-b710-fefc1bd60284,110eff8b-aeec-4ba5-b710-fefc1bd60284,1,0,0a8a6bb9-8b6a-43cf-9d46-b18a8a9591d8,0a8a6bb9-8b6a-43cf-9d46-b18a8a9591d8,1,0,75eca481-002b-4046-898d-dfac9357611f,75eca481-002b-4046-898d-dfac9357611f,1,0,0110decc-d06e-43cf-9d01-30d412edcdd7,0110decc-d06e-43cf-9d01-30d412edcdd7,1,0,3ea32a24-d37b-4fad-937a-9d1357d649a9,3ea32a24-d37b-4fad-937a-9d1357d649a9,1,0,2856ee9a-0fea-4684-b7b8-4844773eae07,2856ee9a-0fea-4684-b7b8-4844773eae07,1,0,84e09840-8d67-416f-87a2-7f03c04180c9,84e09840-8d67-416f-87a2-7f03c04180c9,1,0,0388f22d-f91d-45c9-a8ae-900a24cbfe67,0388f22d-f91d-45c9-a8ae-900a24cbfe67,1,0,60fa2562-4914-46d6-a00a-1bb6e2803263,60fa2562-4914-46d6-a00a-1bb6e2803263,1,0,0d61a8d4-2dc8-435e-a238-416d7640576f,0d61a8d4-2dc8-435e-a238-416d7640576f,1,0,5ea899d4-e076-4a1c-838c-e369abc4705f,5ea899d4-e076-4a1c-838c-e369abc4705f,1,0,f2bf5f4a-e53b-4300-bbc7-97ac2e06f3c2,f2bf5f4a-e53b-4300-bbc7-97ac2e06f3c2,1,0,ab2e75f0-8da7-4b38-8f30-537424b719db,ab2e75f0-8da7-4b38-8f30-537424b719db,1,0,db344a42-61b8-4544-9aa1-8840ab8a70f0,db344a42-61b8-4544-9aa1-8840ab8a70f0,1,0,bd029e3f-a6bd-4be9-81f3-f3ea84f424ce,bd029e3f-a6bd-4be9-81f3-f3ea84f424ce,1,0,043bd776-5a7b-45ff-8b4a-5eed2bba0054,043bd776-5a7b-45ff-8b4a-5eed2bba0054,1,0,6a708860-e3b6-46ea-bea5-0d3e426c72f6,6a708860-e3b6-46ea-bea5-0d3e426c72f6,1,0,7c9e30d0-4a25-4d1d-a5ad-c48b231f453c,7c9e30d0-4a25-4d1d-a5ad-c48b231f453c,1,0,f53a3a46-edad-4cc0-8814-3755c2ea2c03,f53a3a46-edad-4cc0-8814-3755c2ea2c03,1,0,0a60b201-23f7-483b-ac16-5d270f32344e,0a60b201-23f7-483b-ac16-5d270f32344e,1,0,78058cd3-eb56-483c-96f5-1bf8883abc76,78058cd3-eb56-483c-96f5-1bf8883abc76,1,0,cd1fbfdd-d05e-4c22-aa04-83e9d36fb557,cd1fbfdd-d05e-4c22-aa04-83e9d36fb557,1,0,b67fb4f8-e895-4a8e-9230-31bc5cde4953,b67fb4f8-e895-4a8e-9230-31bc5cde4953,1,0,f3c9fde1-6d0e-4319-a798-ed8e330750de,f3c9fde1-6d0e-4319-a798-ed8e330750de,1,0,50d1bd75-3523-41c0-8da1-500731c0872b,50d1bd75-3523-41c0-8da1-500731c0872b,1,0,1a8d3872-6e19-4a49-b0ea-b120b6c09d7f,1a8d3872-6e19-4a49-b0ea-b120b6c09d7f,1,0,ab1efcef-f81b-45e5-893d-56e75c1e0a6f,ab1efcef-f81b-45e5-893d-56e75c1e0a6f,1,0,bbefbf22-6d11-4639-b53e-b72e94ff307c,bbefbf22-6d11-4639-b53e-b72e94ff307c,1,0,dca6a730-8a3f-4b78-926b-2287e21a25a1,dca6a730-8a3f-4b78-926b-2287e21a25a1,1,0,bdec80e6-4aef-4603-98dc-3332abda955c,bdec80e6-4aef-4603-98dc-3332abda955c,1,0,8be7adcd-b49a-4192-9f62-e0b0089b0386,8be7adcd-b49a-4192-9f62-e0b0089b0386,1,0,e4e8e36b-6060-43f3-8b05-bbbf61c3decc,e4e8e36b-6060-43f3-8b05-bbbf61c3decc,1,0,a53447c8-0299-4cf0-a6f9-5a3af423be38,a53447c8-0299-4cf0-a6f9-5a3af423be38,1,0,4f8a2980-bdb4-4a4f-82ec-2822dc1adc49,4f8a2980-bdb4-4a4f-82ec-2822dc1adc49,1,0,91b5a3ca-5f7b-462d-b322-ab8e938add40,91b5a3ca-5f7b-462d-b322-ab8e938add40,1,0,8db8d80c-bf04-4252-8371-46a1dd7e2720,8db8d80c-bf04-4252-8371-46a1dd7e2720,1,0,6fdb4b65-1caf-4472-8135-c6a479bda6d4,6fdb4b65-1caf-4472-8135-c6a479bda6d4,1,0,b5a8b32f-8f8d-4e13-9113-94e66f5c9621,b5a8b32f-8f8d-4e13-9113-94e66f5c9621,1,0,9b8cf6f0-2b56-4954-b982-db18ad78c5ef,9b8cf6f0-2b56-4954-b982-db18ad78c5ef,1,0,1e869478-9bff-4854-9f9c-699b7d1c8faa,1e869478-9bff-4854-9f9c-699b7d1c8faa,1,0,b8fe43d1-b9a7-4ec1-94bd-1e7fad424f8d,b8fe43d1-b9a7-4ec1-94bd-1e7fad424f8d,1,0,f64089ee-72dd-4fcf-8926-31e95c6fcf77,f64089ee-72dd-4fcf-8926-31e95c6fcf77,1,0,5d93aea8-3f41-4e77-bed5-4b2377cbfe0e,5d93aea8-3f41-4e77-bed5-4b2377cbfe0e,1,0,e1e151cc-7b8a-4125-804f-c902a522ed81,e1e151cc-7b8a-4125-804f-c902a522ed81,1,0,f475494e-fe94-4902-b2da-3ade01eba5bb,f475494e-fe94-4902-b2da-3ade01eba5bb,1,0,fbb814b2-cb2f-474d-9c96-5571cef3030e,fbb814b2-cb2f-474d-9c96-5571cef3030e,1,0,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,1,0,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,1,0,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,1,0,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,1,0,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,1,0,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,1,0,7bf36370-3761-4fd5-bea5-90fa142a9d57,7bf36370-3761-4fd5-bea5-90fa142a9d57,1,0,3b81427f-cf64-4a5e-adb3-5415d515fecd,3b81427f-cf64-4a5e-adb3-5415d515fecd,1,0,e9f2b604-7181-476d-8b34-3a544cbb353d,e9f2b604-7181-476d-8b34-3a544cbb353d,1,0,73773919-d01c-41dd-bb31-9c66648ac0ff,73773919-d01c-41dd-bb31-9c66648ac0ff,1,0,5d1afad0-3d7e-4214-b52a-72c184490084,5d1afad0-3d7e-4214-b52a-72c184490084,1,0,5f7901a1-f992-42fa-9ddb-d63574da3b56,5f7901a1-f992-42fa-9ddb-d63574da3b56,1,0,26abd45a-12b3-4312-88fb-53c90a6e6679,26abd45a-12b3-4312-88fb-53c90a6e6679,1,0,1541ad74-3e73-4699-bccf-c13313fbedfe,1541ad74-3e73-4699-bccf-c13313fbedfe,1,0,1037ecb7-6819-4ba2-8c93-eccbbdf825be,1037ecb7-6819-4ba2-8c93-eccbbdf825be,1,0,1f03420b-0480-451a-9263-8431ff0b0c73,1f03420b-0480-451a-9263-8431ff0b0c73,1,0,2bf547e4-d295-4f69-9dbf-9a9d91b2db98,2bf547e4-d295-4f69-9dbf-9a9d91b2db98,1,0,46506a80-495e-4f06-a191-54ccf5d6cc3f,46506a80-495e-4f06-a191-54ccf5d6cc3f,1,0,b9788ea3-b910-4b5b-96c3-921d62745b6e,b9788ea3-b910-4b5b-96c3-921d62745b6e,1,0,0646de72-49fd-466d-af0f-843bfa527049,0646de72-49fd-466d-af0f-843bfa527049,1,0,7c3463c8-ea36-415a-8e9d-dc7bd927b9d1,7c3463c8-ea36-415a-8e9d-dc7bd927b9d1,1,0,260f4fb1-02cb-4c32-ba4b-5aa202cd0311,260f4fb1-02cb-4c32-ba4b-5aa202cd0311,1,0,be2b4dba-e77e-4947-bd2f-0710b357ca2a,be2b4dba-e77e-4947-bd2f-0710b357ca2a,1,0,df750e63-50fc-4085-b8b8-f05e4751ff51,df750e63-50fc-4085-b8b8-f05e4751ff51,1,0,86182e9a-89e0-40d7-b2d7-fcd92ee42942,86182e9a-89e0-40d7-b2d7-fcd92ee42942,1,0,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,1,0,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,1,0,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,1,0,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,1,0,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,1,0,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,1,0,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,1,0,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,1,0,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,1,0,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,1,0,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,1,0,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,1,0,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,1,0,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,1,0,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,1,0,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,1,0,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,1,0,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,1,0,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,1,0,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,1,0,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,1,0,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,1,0,4770398f-8013-4d43-93ce-ec1165e40c4e,4770398f-8013-4d43-93ce-ec1165e40c4e,1,0,9a706997-90cb-430d-972c-d2bad87c4a79,9a706997-90cb-430d-972c-d2bad87c4a79,1,0,6f661660-b9c4-41d4-99a8-e08006cfe9c8,6f661660-b9c4-41d4-99a8-e08006cfe9c8,1,0,199e79fa-54d6-4748-aaaa-9c55283582a3,199e79fa-54d6-4748-aaaa-9c55283582a3,1,0,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,1,0,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,1,0,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,1,0,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,1,0,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,1,0,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,1,0,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,1,0,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,1,0,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,1,0,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,1,0,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,1,0,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,1,0,2093344a-47d4-43ac-98df-29c4dff7fca9,2093344a-47d4-43ac-98df-29c4dff7fca9,1,0,3343cb0c-0f80-4ef9-9871-3db9f2299186,3343cb0c-0f80-4ef9-9871-3db9f2299186,1,0,791d7289-b188-4120-a5f5-f5eb1fd675bf,791d7289-b188-4120-a5f5-f5eb1fd675bf,1,0,e996d749-1aa5-4fe5-b87b-3d8d06144d93,e996d749-1aa5-4fe5-b87b-3d8d06144d93,1,0,6613153f-4f81-4bac-8144-7562cce67f55,6613153f-4f81-4bac-8144-7562cce67f55,1,0,488ce902-b60e-4255-8aec-92dafd1d5dd0,488ce902-b60e-4255-8aec-92dafd1d5dd0,1,0,411779cc-de2c-4731-acc0-631a01367eb5,411779cc-de2c-4731-acc0-631a01367eb5,1,0,30794af1-3180-4ed5-b11d-ca139acb22fa,30794af1-3180-4ed5-b11d-ca139acb22fa,1,0,39aeb27d-62d2-480a-aa6b-33e2363194d1,39aeb27d-62d2-480a-aa6b-33e2363194d1,1,0,e69be74a-0e2c-4a7b-8814-ab15ab28f948,e69be74a-0e2c-4a7b-8814-ab15ab28f948,1,0,60410722-dca9-4c3a-a9c4-33fcd45fe584,60410722-dca9-4c3a-a9c4-33fcd45fe584,1,0,3f200f5a-01bd-4304-9c57-18703cac9ec9,3f200f5a-01bd-4304-9c57-18703cac9ec9,1,0,aa89881f-f111-4384-911c-847b04bb56dd,aa89881f-f111-4384-911c-847b04bb56dd,1,0,444d9e3b-c702-4ad6-a929-a220eff0f6e7,444d9e3b-c702-4ad6-a929-a220eff0f6e7,1,0,022c4519-1cdb-45b6-a699-89fd6688999c,022c4519-1cdb-45b6-a699-89fd6688999c,1,0,fb5b79a2-caec-4c6e-a112-27e78a184d5e,fb5b79a2-caec-4c6e-a112-27e78a184d5e,1,0,fa523958-ce1e-42e1-ae00-2dcb401b7eda,fa523958-ce1e-42e1-ae00-2dcb401b7eda,1,0,1518bca2-a004-4566-8991-7c60e6745a49,1518bca2-a004-4566-8991-7c60e6745a49,1,0,ed8618e2-3ce6-4956-856a-9f40279b4da6,ed8618e2-3ce6-4956-856a-9f40279b4da6,1,0,733f6bc2-544d-4fac-bca8-11b981b95a03,733f6bc2-544d-4fac-bca8-11b981b95a03,1,0,3d140a17-40b4-46a7-a846-78f2f77d49f2,3d140a17-40b4-46a7-a846-78f2f77d49f2,1,0,965646a5-5e5b-49cd-864a-c3870844cfdb,965646a5-5e5b-49cd-864a-c3870844cfdb,1,0,27c88cf7-c0ed-44af-bb70-f14269ce1e87,27c88cf7-c0ed-44af-bb70-f14269ce1e87,1,0,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,1,0,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,1,0,25451a36-c842-44a5-94f4-7e540050b825,25451a36-c842-44a5-94f4-7e540050b825,1,0,8e0340c9-6469-4fc9-b19a-4be4e0e6ee82,8e0340c9-6469-4fc9-b19a-4be4e0e6ee82,1,0,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,1,0,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,1,0,e1e9862e-c87b-400f-bca1-b1380cb98ddc,e1e9862e-c87b-400f-bca1-b1380cb98ddc,1,0,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,1,0,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,1,0,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,1,0,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,1,0,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,1,0,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,1,0,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,1,0,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,1,0,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,1,0,0db78226-37d0-4016-b4c9-5134af1aabc7,0db78226-37d0-4016-b4c9-5134af1aabc7,1,0,8d6b4d23-a260-4352-9975-c13ce3e05220,8d6b4d23-a260-4352-9975-c13ce3e05220,1,0,e0be0bc7-def6-4ae9-9a33-9689aa829b5e,e0be0bc7-def6-4ae9-9a33-9689aa829b5e,1,0,97d4ffd0-07ef-4dc2-8fbc-449c3c8453ef,97d4ffd0-07ef-4dc2-8fbc-449c3c8453ef,1,0,6f5ac40b-ea22-47cf-acf2-614406669a72,6f5ac40b-ea22-47cf-acf2-614406669a72,1,0,b6caaa9e-a9d1-4519-a61f-7fa0ab0ff201,b6caaa9e-a9d1-4519-a61f-7fa0ab0ff201,1,0,488d2644-6fef-488a-af38-40f59c0e0d8c,488d2644-6fef-488a-af38-40f59c0e0d8c,1,0,5d76a28c-5d6c-49cb-8b91-2527e8d06aba,5d76a28c-5d6c-49cb-8b91-2527e8d06aba,1,0,688d86cd-1044-4b77-bb63-2c05aaafbcd0,688d86cd-1044-4b77-bb63-2c05aaafbcd0,1,0,f1efef30-8651-4728-becd-abe3f9026a43,f1efef30-8651-4728-becd-abe3f9026a43,1,0,c2612e22-4f0d-4713-b4eb-decd9780d088,c2612e22-4f0d-4713-b4eb-decd9780d088,1,0,11b1410f-8e14-4b2f-8890-177f4875020e,11b1410f-8e14-4b2f-8890-177f4875020e,1,0,2276b2b0-1705-4014-956f-5087e9dd5c1e,2276b2b0-1705-4014-956f-5087e9dd5c1e,1,0,f72b9d4b-7196-45a3-9349-e32fc91e875a,f72b9d4b-7196-45a3-9349-e32fc91e875a,1,0,6c509dcc-4529-4ac3-86fe-26f807991b1c,6c509dcc-4529-4ac3-86fe-26f807991b1c,1,0,529c8887-f691-4ba8-aeaf-937858d61c30,529c8887-f691-4ba8-aeaf-937858d61c30,1,0,43435d30-8c25-4757-9a29-9173415959ff,43435d30-8c25-4757-9a29-9173415959ff,1,0,4aef5419-7cf5-4443-b773-9273c983844f,4aef5419-7cf5-4443-b773-9273c983844f,1,0,b090cfa5-1bd8-43aa-84d6-6e04375c4b57,b090cfa5-1bd8-43aa-84d6-6e04375c4b57,1,0,2bb5c23c-ad87-4b66-b766-d2e3f82715bd,2bb5c23c-ad87-4b66-b766-d2e3f82715bd,1,0,d01871bb-492e-4ab8-ada9-e9d8ec1adbce,d01871bb-492e-4ab8-ada9-e9d8ec1adbce,1,0,dd931c85-8c19-42a8-a39e-7af0c5bd346c,dd931c85-8c19-42a8-a39e-7af0c5bd346c,1,0,4fa153eb-1efb-43e5-ac09-e5431d4800df,4fa153eb-1efb-43e5-ac09-e5431d4800df,1,0,ada760f3-6a9f-4b81-afc1-98eb164af747,ada760f3-6a9f-4b81-afc1-98eb164af747,1,0,262dea64-4ccd-4b97-ac7e-ec1dbdd9ac98,262dea64-4ccd-4b97-ac7e-ec1dbdd9ac98,1,0,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,1,0,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,1,0,a8e14d2e-911d-4096-9027-deb7a08838e0,a8e14d2e-911d-4096-9027-deb7a08838e0,1,0,c51d8ae2-66fe-4052-8ee4-980855b1f90c,c51d8ae2-66fe-4052-8ee4-980855b1f90c,1,0,27610803-846f-40bd-b817-f73708f1fdb7,27610803-846f-40bd-b817-f73708f1fdb7,1,0,4e2a3873-0317-44be-8dbb-e4cefc0361a8,4e2a3873-0317-44be-8dbb-e4cefc0361a8,1,0,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,1,0,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,1,0,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,1,0,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,1,0,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,1,0,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,1,0,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,1,0,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,1,0,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,1,0,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,1,0,d5b23aac-ea1c-497e-bed7-8685bb682e36,d5b23aac-ea1c-497e-bed7-8685bb682e36,1,0,2b37c085-7c70-4004-93d3-24418b7b3ef2,2b37c085-7c70-4004-93d3-24418b7b3ef2,1,0,6da15163-dd4c-4981-82e8-ad3bd2f516aa,6da15163-dd4c-4981-82e8-ad3bd2f516aa,1,0,e3000fff-aaba-4396-8026-768108ea8f2b,e3000fff-aaba-4396-8026-768108ea8f2b,1,0,1fc05949-c1ba-4363-8353-6902bc041021,1fc05949-c1ba-4363-8353-6902bc041021,1,0,d6e61d59-fe83-4a9e-aa15-e072a39fd8fd,d6e61d59-fe83-4a9e-aa15-e072a39fd8fd,1,0,614fc08c-78b6-4d49-9488-05fcf9b76d58,614fc08c-78b6-4d49-9488-05fcf9b76d58,1,0,d983cae8-edbb-4f26-9c0a-2f701cb11046,d983cae8-edbb-4f26-9c0a-2f701cb11046,1,0,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,1,0,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,1,0,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,1,0,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,1,0,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,1,0,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,1,0,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,1,0,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,1,0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1,0,b50f3157-3c3a-4553-a16a-7fcd660e2824,b50f3157-3c3a-4553-a16a-7fcd660e2824,1,0,19858faf-2bc5-4cfb-b258-cb101ab66e87,19858faf-2bc5-4cfb-b258-cb101ab66e87,1,0,f779f4a1-1fab-46d4-8043-ac25c247d361,f779f4a1-1fab-46d4-8043-ac25c247d361,1,0,308358bc-773a-43fa-adff-dcc5884a2bd4,308358bc-773a-43fa-adff-dcc5884a2bd4,1,0,ed541a1c-a842-40a9-b357-612db71ec32c,ed541a1c-a842-40a9-b357-612db71ec32c,1,0,b0e37495-7d9e-41d0-8225-652f9ac328cf,b0e37495-7d9e-41d0-8225-652f9ac328cf,1,0,3bd2e1c8-9ef3-449b-acf6-397b90669c49,3bd2e1c8-9ef3-449b-acf6-397b90669c49,1,0,cb334191-2ff3-439e-bdaf-4b8fe6561c3b,cb334191-2ff3-439e-bdaf-4b8fe6561c3b,1,0,f9865a2a-50e3-4f9c-a509-319be62dc468,f9865a2a-50e3-4f9c-a509-319be62dc468,1,0,5f3a30b0-1ba8-423c-9bc2-f9a87cafe818,5f3a30b0-1ba8-423c-9bc2-f9a87cafe818,1,0,766d8852-3bb4-4a6c-81c0-911722af4e8e,766d8852-3bb4-4a6c-81c0-911722af4e8e,1,0,f6dae699-06eb-41ef-878b-3fdfe1b1f213,f6dae699-06eb-41ef-878b-3fdfe1b1f213,1,0,fe6de86a-54c9-4ae2-9f17-cfce38b7b560,fe6de86a-54c9-4ae2-9f17-cfce38b7b560,1,0,911f8810-e96e-4f02-9377-47e49919f87e,911f8810-e96e-4f02-9377-47e49919f87e,1,0,cde46d6d-9f8a-45b6-98a7-9411030ccd72,cde46d6d-9f8a-45b6-98a7-9411030ccd72,1,0,ff1a4c30-03ff-4bdd-9df2-a2579aeb4157,ff1a4c30-03ff-4bdd-9df2-a2579aeb4157,1,0,224b9439-4b30-4b64-8edf-e7718ee90a7d,224b9439-4b30-4b64-8edf-e7718ee90a7d,1,0,74dc2374-daf1-4a8a-ba10-d3aced96af3b,74dc2374-daf1-4a8a-ba10-d3aced96af3b,1,0,15f1a3a8-5d42-486d-95f9-3d43ff1d5d56,15f1a3a8-5d42-486d-95f9-3d43ff1d5d56,1,0,e28e953f-93b3-4d4d-9ee4-c56df26037eb,e28e953f-93b3-4d4d-9ee4-c56df26037eb,1,0,578e0fd2-997c-437a-befc-33d128097a7e,578e0fd2-997c-437a-befc-33d128097a7e,1,0,14089231-31a8-4471-b85b-064836794ff3,14089231-31a8-4471-b85b-064836794ff3,1,0,014de276-fb2f-4deb-873f-475729be0f66,014de276-fb2f-4deb-873f-475729be0f66,1,0,40a60ff7-96ca-485b-a2d9-640a208a7de6,40a60ff7-96ca-485b-a2d9-640a208a7de6,1,0,03e6caa4-eaa2-43aa-bdd1-768f9cce7848,03e6caa4-eaa2-43aa-bdd1-768f9cce7848,1,0,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,1,0,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,1,0,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,1,0,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,1,0,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,1,0,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,1,0,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,1,0,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,1,0,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,1,0,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,1,0,feb5f490-e791-11e6-508c-a8667f21fde4,feb5f490-e791-11e6-508c-a8667f21fde4,1,0,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,1,0,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,1,0,6962f838-e792-11e6-508c-a8667f21fde4,6962f838-e792-11e6-508c-a8667f21fde4,1,0,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,1,0,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,1,0,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,1,0,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,1,0,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,1,0,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,1,0,4f2b6bf8-e792-11e6-508c-a8667f21fde4,4f2b6bf8-e792-11e6-508c-a8667f21fde4,1,0,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,1,0,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,1,0,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,1,0,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,1,0,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,1,0,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,1,0,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,1,0,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,1,0,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,1,0,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,1,0,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,1,0,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,1,0,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,1,0,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,1,0,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,1,0,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,1,0,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,1,0,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,1,0,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,1,0,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,1,0,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,1,0,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,1,0,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,1,0,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,1,0,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,1,0,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,1,0,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,1,0,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,1,0,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,1,0,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,1,0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,1,0,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,1,0,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,1,0,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,1,0,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,1,0,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,1,0,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,1,0,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,1,0,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,1,0,56d97df6-9c8b-4fc5-a7a6-52107d38dcd5,56d97df6-9c8b-4fc5-a7a6-52107d38dcd5,1,0,a0be938b-139e-41bd-b067-f5241ff68c90,a0be938b-139e-41bd-b067-f5241ff68c90,1,0,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,1,0,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,1,0,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,1,0,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1,0,8064eb3a-d56c-4517-9db0-b7300149c7c4,8064eb3a-d56c-4517-9db0-b7300149c7c4,1,0,fe926c88-d792-4db3-abcf-3c94dfdcc407,fe926c88-d792-4db3-abcf-3c94dfdcc407,1,0,b1c3a6c1-5245-4a65-8a45-13948be6f6a1,b1c3a6c1-5245-4a65-8a45-13948be6f6a1,1,0,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,1,0,e0c51555-1614-4aa7-a075-c5e1251579ba,e0c51555-1614-4aa7-a075-c5e1251579ba,1,0,c75a1c6d-fa33-4b57-b359-6253aff5f3e7,c75a1c6d-fa33-4b57-b359-6253aff5f3e7,1,0,af88ea84-5742-4c9f-9a02-6d0f25186f72,af88ea84-5742-4c9f-9a02-6d0f25186f72,1,0,51363236-c8eb-4eb7-9692-5c18edc9a5a8,51363236-c8eb-4eb7-9692-5c18edc9a5a8,1,0,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,1,0,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,1,0,8adebe50-a946-40c2-9258-b17efe787e0e,8adebe50-a946-40c2-9258-b17efe787e0e,1,0,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,1,0,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,1,0,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,1,0,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,1,0,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1,0,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,1,0,f237a21e-066a-48e6-a5c4-5dc2487c7a3b,f237a21e-066a-48e6-a5c4-5dc2487c7a3b,1,0,d6b72e00-018a-4fdc-b6a4-06dcecf89809,d6b72e00-018a-4fdc-b6a4-06dcecf89809,1,0,9f816562-57f0-473f-8c85-14f7521ffd7f,9f816562-57f0-473f-8c85-14f7521ffd7f,1,0,14077038-2e41-4a05-a476-99f6f88a5c29,14077038-2e41-4a05-a476-99f6f88a5c29,1,0,917b0acc-88fe-4afc-b19b-6da69e060393,917b0acc-88fe-4afc-b19b-6da69e060393,1,0,a091b76e-8ba4-4534-bbb0-9990e69b8603,a091b76e-8ba4-4534-bbb0-9990e69b8603,1,0,867ee5d2-7566-4052-a311-b56e7e46b90d,867ee5d2-7566-4052-a311-b56e7e46b90d,1,0,8f51328b-73a8-46fb-b6db-7b7a84c05c2a,8f51328b-73a8-46fb-b6db-7b7a84c05c2a,1,0,0f0f5b42-2407-44e6-85d7-26ace96b2cd9,0f0f5b42-2407-44e6-85d7-26ace96b2cd9,1,0,ffec426d-2556-46d6-b313-aeca43581865,ffec426d-2556-46d6-b313-aeca43581865,1,0,f32e0941-2061-4e12-bdae-fcb65f91ac28,f32e0941-2061-4e12-bdae-fcb65f91ac28,1,0,6f0e0f44-db5a-4a13-9131-866b77b90f14,6f0e0f44-db5a-4a13-9131-866b77b90f14,1,0,9415e0aa-391f-4798-ad7d-3b854a756de8,9415e0aa-391f-4798-ad7d-3b854a756de8,1,0,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,1,0,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,1,0,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,1,0,1813c469-da20-46a6-8947-6815b66f64c1,1813c469-da20-46a6-8947-6815b66f64c1,1,0,64e702e9-8934-4356-a1b2-be0e8b390630,64e702e9-8934-4356-a1b2-be0e8b390630,1,0,74880ac4-bdd3-48e6-82a0-a2103da42723,74880ac4-bdd3-48e6-82a0-a2103da42723,1,0,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,1,0,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,1,0,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,1,0,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,1,0,ddc6761c-a32a-41e1-b110-fdc39ad440d3,ddc6761c-a32a-41e1-b110-fdc39ad440d3,1,0,0b322ee2-b018-4d00-8f05-62ee16e519ff,0b322ee2-b018-4d00-8f05-62ee16e519ff,1,0,0866e282-055a-49bb-9aa5-b1af7c74c344,0866e282-055a-49bb-9aa5-b1af7c74c344,1,0,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,1,0,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,1,0,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,1,0,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,1,0,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,1,0,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,1,0,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,1,0,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,1,0,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,1,0,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,1,0,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,1,0,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,1,0,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,1,0,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,1,0,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,1,0,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,1,0,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,1,0,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,1,0,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,1,0,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,1,0,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,1,0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,1,0,71102d3f-f020-4d6f-9582-9a7eefb4e797,71102d3f-f020-4d6f-9582-9a7eefb4e797,1,0,53ef6849-a3f3-4171-9167-f349f2d6a736,53ef6849-a3f3-4171-9167-f349f2d6a736,1,0,3f588bd3-d461-42b7-8ab1-386af6399d56,3f588bd3-d461-42b7-8ab1-386af6399d56,1,0,c04ff85e-b4af-4a9f-b0e9-c5c65e3d10a1,c04ff85e-b4af-4a9f-b0e9-c5c65e3d10a1,1,0,8c576405-29c1-46b1-ab2e-40e52c21cab0,8c576405-29c1-46b1-ab2e-40e52c21cab0,1,0,b33a89da-8589-4902-83fa-6545e5fce23e,b33a89da-8589-4902-83fa-6545e5fce23e,1,0,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,1,0,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,1,0,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,1,0,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,1,0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,1,0,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,1,0,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,1,0,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,1,0,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,1,0,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,1,0,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,1,0,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,1,0,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,1,0,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,1,0,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,1,0,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,1,0,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,1,0,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,1,0,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,1,0,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,1,0,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,1,0,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,1,0,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,1,0,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,1,0,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,1,0,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,1,0,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,1,0,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,1,0,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,1,0,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,1,0,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,1,0,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,1,0,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,1,0,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,1,0,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,a53530af-278e-4190-bc9c-85a8558122b1,1,f2d99130-9e4e-4b09-ac5a-e2b5b5e9b119,"3.1.6.62","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6674,1,0,deafea49-c16a-4510-bd11-62bdf63872d2,deafea49-c16a-4510-bd11-62bdf63872d2,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,153e11ac-f898-46a5-98c6-734adb933ca2,153e11ac-f898-46a5-98c6-734adb933ca2,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,1,0,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,1,0,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,1,0,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,1,0,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,1,0,e0d3efe0-a321-4790-ba5d-e549a91a3ec6,e0d3efe0-a321-4790-ba5d-e549a91a3ec6,1,0,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,1,0,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,1,0,e15c3525-3453-4b62-834e-7c69f9efea51,e15c3525-3453-4b62-834e-7c69f9efea51,1,0,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,1,0,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,1,0,bc89af7a-1971-4245-8d88-1a5a50c50a8b,bc89af7a-1971-4245-8d88-1a5a50c50a8b,1,0,ad73f3a3-1dad-4920-af41-bda2b947a2f7,ad73f3a3-1dad-4920-af41-bda2b947a2f7,1,0,98b67b5a-3550-4a64-9e07-07fcc9154c73,98b67b5a-3550-4a64-9e07-07fcc9154c73,1,0,fd930b50-4ada-4e7f-8bfd-ed9a7c4e8964,fd930b50-4ada-4e7f-8bfd-ed9a7c4e8964,1,0,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,1,0,fa2a9ef2-00a1-44f4-a82c-6c7288dd62dc,fa2a9ef2-00a1-44f4-a82c-6c7288dd62dc,1,0,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,1,0,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,1,0,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,1,0,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,1,0,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,1,0,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,1,0,1c877cee-d9b8-48dc-8d79-04d27bb522f7,1c877cee-d9b8-48dc-8d79-04d27bb522f7,1,0,dd911418-ee16-4413-bfe9-4a5a238d3ce1,dd911418-ee16-4413-bfe9-4a5a238d3ce1,1,0,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,1,0,ea36c426-2b43-4232-9978-0104bafd345d,ea36c426-2b43-4232-9978-0104bafd345d,1,0,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,1,0,3d428bdf-c41b-43ac-957e-2943406c832c,3d428bdf-c41b-43ac-957e-2943406c832c,1,0,85cbc0b7-6aa5-455b-abed-7bc659d9ad51,85cbc0b7-6aa5-455b-abed-7bc659d9ad51,1,0,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,1,0,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,1,0,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,1,0,75561d71-4b06-40fc-8a46-ed5d33c80dea,75561d71-4b06-40fc-8a46-ed5d33c80dea,1,0,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,1,0,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,1,0,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,1,0,5578afd2-5aed-4164-8467-52a66f4773c4,5578afd2-5aed-4164-8467-52a66f4773c4,1,0,9eea8645-1ba7-4faf-9c29-868bf99964dd,9eea8645-1ba7-4faf-9c29-868bf99964dd,1,0,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,1,0,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,1,0,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,1,0,d9bad22e-4049-4371-86a3-1b00ae6215af,d9bad22e-4049-4371-86a3-1b00ae6215af,1,0,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,1,0,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,1,0,d5a5f53b-9cd5-4036-a379-31680cec3c24,d5a5f53b-9cd5-4036-a379-31680cec3c24,1,0,85e05ed7-25ed-4148-8247-86ff531ec48d,85e05ed7-25ed-4148-8247-86ff531ec48d,1,0,dcd34215-200c-4d3c-828c-4c3cd8b17a81,dcd34215-200c-4d3c-828c-4c3cd8b17a81,1,0,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,1,0,4a046c9b-98a0-4d4f-8e0b-b162d3c6bfc5,4a046c9b-98a0-4d4f-8e0b-b162d3c6bfc5,1,0,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,1,0,0a83f9ec-eabe-4e8f-9fa9-0067acad6fc4,0a83f9ec-eabe-4e8f-9fa9-0067acad6fc4,1,0,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,1,0,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,1,0,5797e28d-1318-4728-8b17-bcb78d85349a,5797e28d-1318-4728-8b17-bcb78d85349a,1,0,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,1,0,9f9e6146-17ce-4296-a89f-33dfe4d0468d,9f9e6146-17ce-4296-a89f-33dfe4d0468d,1,0,3cf15377-a5bb-4c37-9780-0dbff8d3d5bb,3cf15377-a5bb-4c37-9780-0dbff8d3d5bb,1,0,3aa020db-a811-4fb9-9ea9-00a3359fbb53,3aa020db-a811-4fb9-9ea9-00a3359fbb53,1,0,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,1,0,c90e64cf-f5d4-47b9-8243-7177ac42202e,c90e64cf-f5d4-47b9-8243-7177ac42202e,1,0,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,1,0,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,1,0,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,1,0,46692974-34aa-45e1-8fec-9b36064073cd,46692974-34aa-45e1-8fec-9b36064073cd,1,0,a6308250-2b1b-40ef-bd20-589d519e3c38,a6308250-2b1b-40ef-bd20-589d519e3c38,1,0,22eafd3b-dc42-4a99-89af-3cd5311dc29f,22eafd3b-dc42-4a99-89af-3cd5311dc29f,1,0,c67f671a-3c83-44f4-9c6a-e06667ac8da6,c67f671a-3c83-44f4-9c6a-e06667ac8da6,1,0,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,1,0,1fbd4cfa-58cb-41ea-920e-a39cfa6ad90c,1fbd4cfa-58cb-41ea-920e-a39cfa6ad90c,1,0,5a83b75a-38b0-4d15-9c6f-c201fa97e485,5a83b75a-38b0-4d15-9c6f-c201fa97e485,1,0,0da019ca-1fc7-4aff-8998-3ddcccf10872,0da019ca-1fc7-4aff-8998-3ddcccf10872,1,0,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,1,0,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,1,0,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,1,0,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,1,0,f6dd250e-75fd-47fc-abcb-79ea19ebd747,f6dd250e-75fd-47fc-abcb-79ea19ebd747,1,0,53c41e6c-89b0-4818-9832-02140373979b,53c41e6c-89b0-4818-9832-02140373979b,1,0,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,1,0,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,1,0,57e75b31-13b3-46fc-8ec4-7570ab0e9928,57e75b31-13b3-46fc-8ec4-7570ab0e9928,1,0,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,1,0,8ad81449-0b75-4775-a841-ca7fc7bf0d43,8ad81449-0b75-4775-a841-ca7fc7bf0d43,1,0,6b29b4b3-df0a-42f7-b89f-809ffbdacf02,6b29b4b3-df0a-42f7-b89f-809ffbdacf02,1,0,43d8dd53-df3e-407e-a3c1-5b893cc1976c,43d8dd53-df3e-407e-a3c1-5b893cc1976c,1,0,7741dfee-c4cc-454d-8e01-99ee82a78b5a,7741dfee-c4cc-454d-8e01-99ee82a78b5a,1,0,61e246f4-fe19-4377-8f69-fd1cb90e3f88,61e246f4-fe19-4377-8f69-fd1cb90e3f88,1,0,05c9e6c3-3e1c-4311-99ac-ec4d59a37205,05c9e6c3-3e1c-4311-99ac-ec4d59a37205,1,0,d437805b-42a9-439d-aef8-abbebe280b69,d437805b-42a9-439d-aef8-abbebe280b69,1,0,b33ccec0-a085-4e91-a26d-c262775d92e8,b33ccec0-a085-4e91-a26d-c262775d92e8,1,0,8adeeac2-d2d0-4d90-b7cb-c7871da477d5,8adeeac2-d2d0-4d90-b7cb-c7871da477d5,1,0,9e082d71-175a-4e80-8cca-6b538d3240eb,9e082d71-175a-4e80-8cca-6b538d3240eb,1,0,b8c4aff0-a36d-4be9-9a5e-b0873d83ff15,b8c4aff0-a36d-4be9-9a5e-b0873d83ff15,1,0,68704139-32bb-4b00-b439-147025d06a35,68704139-32bb-4b00-b439-147025d06a35,1,0,df80f175-7f2b-44f8-90d4-118e2e157356,df80f175-7f2b-44f8-90d4-118e2e157356,1,0,5a88f624-7b7e-43fe-8bc4-ae85d832a855,5a88f624-7b7e-43fe-8bc4-ae85d832a855,1,0,42e39ef7-268f-4053-b4e5-4bceab17d3e4,42e39ef7-268f-4053-b4e5-4bceab17d3e4,1,0,b49b47fb-d4dc-4efe-ad07-e8705d787e72,b49b47fb-d4dc-4efe-ad07-e8705d787e72,1,0,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,1,0,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,1,0,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,1,0,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,1,0,fce03f58-7f68-4d7c-a999-687667c1f03d,fce03f58-7f68-4d7c-a999-687667c1f03d,1,0,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,1,0,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,1,0,716302cc-ad47-4823-a81a-4c58857aa0a4,716302cc-ad47-4823-a81a-4c58857aa0a4,1,0,d0f3824e-ddfb-491d-8aea-e4e4806dc3ee,d0f3824e-ddfb-491d-8aea-e4e4806dc3ee,1,0,7cab0151-f86e-4ada-9ec6-e602749e34fc,7cab0151-f86e-4ada-9ec6-e602749e34fc,1,0,d9be359f-c5cb-4f3e-9ccd-61f38c6bbb26,d9be359f-c5cb-4f3e-9ccd-61f38c6bbb26,1,0,15b5979c-755b-480e-b00a-dcc95f62dfeb,15b5979c-755b-480e-b00a-dcc95f62dfeb,1,0,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,1,0,eb3cee83-57be-4a2a-a180-366c2f6454bc,eb3cee83-57be-4a2a-a180-366c2f6454bc,1,0,c78c1d9c-5c34-4636-bf2c-6cc410e95003,c78c1d9c-5c34-4636-bf2c-6cc410e95003,1,0,dcdf2b25-b024-4a89-b2c4-0a2ee43ef623,dcdf2b25-b024-4a89-b2c4-0a2ee43ef623,1,0,9200527c-b6b9-4962-9440-10449583e1e3,9200527c-b6b9-4962-9440-10449583e1e3,1,0,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,1,0,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,1,0,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,1,0,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,1,0,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,1,0,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,1,0,1960b036-b479-4f4f-80c5-23fc82474082,1960b036-b479-4f4f-80c5-23fc82474082,1,0,7707d7b0-bf30-4362-929a-a5de104266fc,7707d7b0-bf30-4362-929a-a5de104266fc,1,0,0da8a402-ea0f-488a-a087-77990e85a643,0da8a402-ea0f-488a-a087-77990e85a643,1,0,5e7ea635-f307-43cb-9aa7-2c99997b3c2d,5e7ea635-f307-43cb-9aa7-2c99997b3c2d,1,0,484003f5-a6df-48fb-a395-d0e0ebc8cc0d,484003f5-a6df-48fb-a395-d0e0ebc8cc0d,1,0,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,1,0,8b4614aa-c769-49f4-a281-a0ffb101abf1,8b4614aa-c769-49f4-a281-a0ffb101abf1,1,0,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,1,0,ba06091b-b659-4d29-a971-81335cf4060a,ba06091b-b659-4d29-a971-81335cf4060a,1,0,7c376c72-409e-4b5f-a5b6-85b0a1c23f58,7c376c72-409e-4b5f-a5b6-85b0a1c23f58,1,0,b7a0d00f-fbf3-41fe-b72f-c17e163264f9,b7a0d00f-fbf3-41fe-b72f-c17e163264f9,1,0,7bbd6fe8-c2fe-4ed2-abd7-2b3fc5b2f410,7bbd6fe8-c2fe-4ed2-abd7-2b3fc5b2f410,1,0,d61fa2fb-a035-469f-9ae1-b78ecd82c83d,d61fa2fb-a035-469f-9ae1-b78ecd82c83d,1,0,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,1,0,4c3a39e3-40ee-423b-91f0-14b60e045b40,4c3a39e3-40ee-423b-91f0-14b60e045b40,1,0,2f2875d7-7598-4ed5-8cc0-a1982ffb5377,2f2875d7-7598-4ed5-8cc0-a1982ffb5377,1,0,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,1,0,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,1,0,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,1,0,a54f2d41-a05e-4878-80c6-81ca2899fa4c,a54f2d41-a05e-4878-80c6-81ca2899fa4c,1,0,23a898d9-5bcb-4744-ab6c-97b17dc98f20,23a898d9-5bcb-4744-ab6c-97b17dc98f20,1,0,c83f7826-0fef-4a9b-8d36-dee5d93c7417,c83f7826-0fef-4a9b-8d36-dee5d93c7417,1,0,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,1,0,f8f56806-ed7e-4059-a0c8-940538c14c98,f8f56806-ed7e-4059-a0c8-940538c14c98,1,0,9ff9f92b-c509-48da-82ce-15b524a895d6,9ff9f92b-c509-48da-82ce-15b524a895d6,1,0,c8bf96c8-f359-4940-8e87-3d190371d6d3,c8bf96c8-f359-4940-8e87-3d190371d6d3,1,0,477f0b81-0eb1-4de1-8cb5-38f1e0823947,477f0b81-0eb1-4de1-8cb5-38f1e0823947,1,0,d914eaa9-ce85-4df7-a545-2d411ef915b0,d914eaa9-ce85-4df7-a545-2d411ef915b0,1,0,41881344-82b7-4904-9ab8-0207d9bcd0a9,41881344-82b7-4904-9ab8-0207d9bcd0a9,1,0,5c542a16-0f95-43be-85cd-bfd49b15f215,5c542a16-0f95-43be-85cd-bfd49b15f215,1,0,ef4d648f-4cac-4df9-9880-2aa13c422d10,ef4d648f-4cac-4df9-9880-2aa13c422d10,1,0,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,1,0,7185a8f8-48c4-43a9-b31f-102302b8f152,7185a8f8-48c4-43a9-b31f-102302b8f152,1,0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,1,0,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,1,0,c573a29f-4c39-402d-8af4-e0fff80877f8,c573a29f-4c39-402d-8af4-e0fff80877f8,1,0,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,1,0,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,1,0,edc731ba-532f-4fa1-81a8-58beb3b2dfb1,edc731ba-532f-4fa1-81a8-58beb3b2dfb1,1,0,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,1,0,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,1,0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,1,0,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,1,0,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,1,0,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,1,0,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,1,0,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,1,0,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,1,0,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,1,0,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,1,0,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,1,0,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,1,0,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,1,0,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,1,0,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,1,0,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,1,0,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,1,0,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,1,0,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,1,0,7f7598e5-ca54-487e-b95c-b18d330b034c,7f7598e5-ca54-487e-b95c-b18d330b034c,1,0,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,1,0,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,1,0,2120ad01-6bff-48bd-bad8-324e1301b112,2120ad01-6bff-48bd-bad8-324e1301b112,1,0,b9255acf-dc35-4225-8d3a-544e66b7334d,b9255acf-dc35-4225-8d3a-544e66b7334d,1,0,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,1,0,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,1,0,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,1,0,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,1,0,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,1,0,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,1,0,64e03321-33a4-424d-a101-90f1e0da4c2e,64e03321-33a4-424d-a101-90f1e0da4c2e,1,0,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,1,0,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,1,0,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,1,0,a1d80053-ef03-4c00-9fc9-266e61aeaffb,a1d80053-ef03-4c00-9fc9-266e61aeaffb,1,0,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,1,0,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,1,0,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,1,0,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,1,0,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,1,0,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,1,0,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,1,0,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,1,0,691f9902-6b95-4579-a3d9-3b2b5b548776,691f9902-6b95-4579-a3d9-3b2b5b548776,1,0,c7a8a88f-040a-47a6-8c93-7f3f01544760,c7a8a88f-040a-47a6-8c93-7f3f01544760,1,0,06fc381d-f27a-433c-95c3-e0981e01f22b,06fc381d-f27a-433c-95c3-e0981e01f22b,1,0,6d93ec4f-167a-4804-910b-988ee8aad78e,6d93ec4f-167a-4804-910b-988ee8aad78e,1,0,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,1,0,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,1,0,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,1,0,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,1,0,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,1,0,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,1,0,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,1,0,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,1,0,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,1,0,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,1,0,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,1,0,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,1,0,82b05859-4c4d-4d5a-a620-cc6aab10f527,82b05859-4c4d-4d5a-a620-cc6aab10f527,1,0,c5871658-94dd-4df4-9a3f-db5d245dd106,c5871658-94dd-4df4-9a3f-db5d245dd106,1,0,a3131bf3-88b1-431c-a01c-be6e26396f91,a3131bf3-88b1-431c-a01c-be6e26396f91,1,0,5c3edcbd-fb62-471c-b75b-f1a759956ebe,5c3edcbd-fb62-471c-b75b-f1a759956ebe,1,0,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,1,0,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,1,0,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1,0,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,1,0,2a12ce95-3214-4bd2-a0e6-c2af41875821,2a12ce95-3214-4bd2-a0e6-c2af41875821,1,0,bf05548c-babf-402b-b698-9a62e7c69add,bf05548c-babf-402b-b698-9a62e7c69add,1,0,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,1,0,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,1,0,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,1,0,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,1,0,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,1,0,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,1,0,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,1,0,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,1,0,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,1,0,ed4edc6f-048a-40d5-8f61-989895c95cf3,ed4edc6f-048a-40d5-8f61-989895c95cf3,1,0,73cc5fea-597f-4490-9c62-b175fdc38fd3,73cc5fea-597f-4490-9c62-b175fdc38fd3,1,0,c2049ace-3095-4dd7-9cc0-7721118451ad,c2049ace-3095-4dd7-9cc0-7721118451ad,1,0,87ba683b-b69c-4b23-854c-037b770a3ebb,87ba683b-b69c-4b23-854c-037b770a3ebb,1,0,1357adf5-0f5d-4930-afea-edc89db4d0a6,1357adf5-0f5d-4930-afea-edc89db4d0a6,1,0,505ff816-0d42-458a-b7b5-7d007c15d1be,505ff816-0d42-458a-b7b5-7d007c15d1be,1,0,27811a76-d8bd-43a5-9898-944bdd1388ce,27811a76-d8bd-43a5-9898-944bdd1388ce,1,0,363215fe-59f3-4d9a-a8c7-94049882147a,363215fe-59f3-4d9a-a8c7-94049882147a,1,0,3d4597ca-1c97-4116-b966-87970cd7ebdf,3d4597ca-1c97-4116-b966-87970cd7ebdf,1,0,715f7ba5-ca82-49e6-8671-fc1b55b740b5,715f7ba5-ca82-49e6-8671-fc1b55b740b5,1,0,0add6d62-bf4f-476c-9f6b-37633fcd6b0e,0add6d62-bf4f-476c-9f6b-37633fcd6b0e,1,0,93e495a4-207d-4216-b63e-a8b169b2b801,93e495a4-207d-4216-b63e-a8b169b2b801,1,0,3b47221a-ad5f-419c-b503-a4a88505d336,3b47221a-ad5f-419c-b503-a4a88505d336,1,0,0149a9c0-245b-4dfe-aa98-e8b02ba85c99,0149a9c0-245b-4dfe-aa98-e8b02ba85c99,1,0,94abbe1e-44d8-43c1-90fb-71bc9b6621a9,94abbe1e-44d8-43c1-90fb-71bc9b6621a9,1,0,2edfc563-9fd8-4f7c-8cd4-ba3c27c08840,2edfc563-9fd8-4f7c-8cd4-ba3c27c08840,1,0,d0d052c7-68b9-4b2b-9bbf-4fb083327dca,d0d052c7-68b9-4b2b-9bbf-4fb083327dca,1,0,807194b1-2460-4872-8430-e34f6970178f,807194b1-2460-4872-8430-e34f6970178f,1,0,b0409473-768f-4c29-89d3-6201e8476157,b0409473-768f-4c29-89d3-6201e8476157,1,0,d8415773-616e-43e4-9deb-e92200659d53,d8415773-616e-43e4-9deb-e92200659d53,1,0,b228f0de-7cd7-4337-b021-bc1beb980afd,b228f0de-7cd7-4337-b021-bc1beb980afd,1,0,c9178048-5d75-4d1b-a714-50d772e8d343,c9178048-5d75-4d1b-a714-50d772e8d343,1,0,661b7581-27ad-4cec-8618-9c314cb3a4d5,661b7581-27ad-4cec-8618-9c314cb3a4d5,1,0,310a8f7d-5b1f-428c-885d-1127b7789efd,310a8f7d-5b1f-428c-885d-1127b7789efd,1,0,ee5efc54-aa35-467f-b085-64f24819aaa7,ee5efc54-aa35-467f-b085-64f24819aaa7,1,0,376c8f0b-9d2e-4262-a26f-b63f1163c1c4,376c8f0b-9d2e-4262-a26f-b63f1163c1c4,1,0,d37c82e1-cc9f-492c-a7fb-0e6e9d8f6a72,d37c82e1-cc9f-492c-a7fb-0e6e9d8f6a72,1,0,b7ebf08a-d6be-42db-b28a-460df037d7ba,b7ebf08a-d6be-42db-b28a-460df037d7ba,1,0,ec3c34f6-b3b3-4a96-a231-aaf70db1e73d,ec3c34f6-b3b3-4a96-a231-aaf70db1e73d,1,0,8aa9daa0-e073-49f4-8346-7f2c809fac9a,8aa9daa0-e073-49f4-8346-7f2c809fac9a,1,0,043074cb-64aa-45ed-a2f3-b4fa252431cc,043074cb-64aa-45ed-a2f3-b4fa252431cc,1,0,9cc72214-6e84-45e6-aafd-b36205730faa,9cc72214-6e84-45e6-aafd-b36205730faa,1,0,768eb7d6-d37e-4182-961e-464a5e08781b,768eb7d6-d37e-4182-961e-464a5e08781b,1,0,4df52b04-759d-471d-9de4-3ba4d00d1d22,4df52b04-759d-471d-9de4-3ba4d00d1d22,1,0,5768f558-50b6-4682-960c-6894f6953461,5768f558-50b6-4682-960c-6894f6953461,1,0,74126b65-4f3b-4f8d-b7fc-1d2705822463,74126b65-4f3b-4f8d-b7fc-1d2705822463,1,0,75a4b472-00b6-4b2f-bb6b-03bdc0b05dcf,75a4b472-00b6-4b2f-bb6b-03bdc0b05dcf,1,0,8506ad71-85eb-4f91-b892-4e75318649c8,8506ad71-85eb-4f91-b892-4e75318649c8,1,0,6e3010f5-f725-4361-b853-768412b1ad6f,6e3010f5-f725-4361-b853-768412b1ad6f,1,0,40d8803a-2f6d-4091-be54-9d9827a53e30,40d8803a-2f6d-4091-be54-9d9827a53e30,1,0,ea2b936c-be5c-4316-aca9-4f890f4e6ec9,ea2b936c-be5c-4316-aca9-4f890f4e6ec9,1,0,092501bf-dd8e-4f50-8c58-b1b028b50a5a,092501bf-dd8e-4f50-8c58-b1b028b50a5a,1,0,927cfec6-c1e3-4152-aa2e-afa89359b5eb,927cfec6-c1e3-4152-aa2e-afa89359b5eb,1,0,8e986c32-7296-4329-a908-704398428e4e,8e986c32-7296-4329-a908-704398428e4e,1,0,c5b8870c-14cb-43ae-8d44-d639bd059b0e,c5b8870c-14cb-43ae-8d44-d639bd059b0e,1,0,bc98265e-329d-41d1-9fe8-4c78b7998cd2,bc98265e-329d-41d1-9fe8-4c78b7998cd2,1,0,b44c8a6b-0e3f-446b-95f7-6cb4a58f13e0,b44c8a6b-0e3f-446b-95f7-6cb4a58f13e0,1,0,7601f9c7-2fe7-43fb-a7a9-cf5be4475ce1,7601f9c7-2fe7-43fb-a7a9-cf5be4475ce1,1,0,2da686d3-38b0-4cf1-9962-1440d1afd050,2da686d3-38b0-4cf1-9962-1440d1afd050,1,0,71518348-f155-4616-bbdc-742e36cd3964,71518348-f155-4616-bbdc-742e36cd3964,1,0,723a58ca-9947-4320-9bf4-7c6b58aee2f5,723a58ca-9947-4320-9bf4-7c6b58aee2f5,1,0,2df24487-0b76-451d-a08f-21dc03adefa4,2df24487-0b76-451d-a08f-21dc03adefa4,1,0,00813d65-8dae-45a8-8691-d0b17d6d7754,00813d65-8dae-45a8-8691-d0b17d6d7754,1,0,d88166a7-ef6c-453a-b6cc-1c574cf6ea85,d88166a7-ef6c-453a-b6cc-1c574cf6ea85,1,0,aae1a856-ff88-41bb-a887-1b8c2c3eeab6,aae1a856-ff88-41bb-a887-1b8c2c3eeab6,1,0,cf2b8654-02b6-441e-98a9-cb8bea5cac89,cf2b8654-02b6-441e-98a9-cb8bea5cac89,1,0,2181bde8-031d-425e-875f-0bd153b634f2,2181bde8-031d-425e-875f-0bd153b634f2,1,0,ee1b81ac-0182-48dd-a348-1d8ba38869ca,ee1b81ac-0182-48dd-a348-1d8ba38869ca,1,0,ad385d3e-8201-402a-a1a8-267bc8c6d56b,ad385d3e-8201-402a-a1a8-267bc8c6d56b,1,0,53bb97e3-cd96-462a-b91f-c82678568d9a,53bb97e3-cd96-462a-b91f-c82678568d9a,1,0,32ca3bd6-7b32-4eab-8a4e-aeac26604e08,32ca3bd6-7b32-4eab-8a4e-aeac26604e08,1,0,2a702d37-8e83-4fa0-9969-5d954a7096c1,2a702d37-8e83-4fa0-9969-5d954a7096c1,1,0,71b7225e-6486-4916-85b2-8ec14363ebc8,71b7225e-6486-4916-85b2-8ec14363ebc8,1,0,2df34fcd-3118-4871-95d7-807dece77d3f,2df34fcd-3118-4871-95d7-807dece77d3f,1,0,32db89ab-74d3-4f80-9352-65e405770906,32db89ab-74d3-4f80-9352-65e405770906,1,0,21c22027-2036-4136-a98e-500e5cd679d1,21c22027-2036-4136-a98e-500e5cd679d1,1,0,6fe56db7-0f48-4dd0-b509-5372019ddcc2,6fe56db7-0f48-4dd0-b509-5372019ddcc2,1,0,884990f4-54f1-4b05-a5ed-40ee5a7a549a,884990f4-54f1-4b05-a5ed-40ee5a7a549a,1,0,4cf71e62-c8c2-4bc7-87fc-a89e48f2c007,4cf71e62-c8c2-4bc7-87fc-a89e48f2c007,1,0,e5a9260b-c18b-47bf-bc5a-23294e13025a,e5a9260b-c18b-47bf-bc5a-23294e13025a,1,0,02f00688-a2ed-4f91-bd41-50fc29e13d6c,02f00688-a2ed-4f91-bd41-50fc29e13d6c,1,0,e9f2b435-13e3-401a-9324-ca44986b7676,e9f2b435-13e3-401a-9324-ca44986b7676,1,0,2b854852-ae2d-46d8-8c3b-228af7a3f1db,2b854852-ae2d-46d8-8c3b-228af7a3f1db,1,0,11346c91-ecb6-40e6-a2fb-df7e6f5dbaed,11346c91-ecb6-40e6-a2fb-df7e6f5dbaed,1,0,9ea7a191-38bb-40cc-8025-d34a5ed17c7c,9ea7a191-38bb-40cc-8025-d34a5ed17c7c,1,0,dc17d8b6-d277-43eb-8823-71d440ae1e90,dc17d8b6-d277-43eb-8823-71d440ae1e90,1,0,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,1,0,27f793d8-da6a-4502-9b7e-82b8af7264d1,27f793d8-da6a-4502-9b7e-82b8af7264d1,1,0,4d3f3c76-999c-4105-8b64-cd4b7bc861b9,4d3f3c76-999c-4105-8b64-cd4b7bc861b9,1,0,efcf8b0f-7124-4096-9f50-b9b95369f196,efcf8b0f-7124-4096-9f50-b9b95369f196,1,0,c1f2db60-011c-4a0b-97bb-42e005ba51c9,c1f2db60-011c-4a0b-97bb-42e005ba51c9,1,0,15111bf5-5bf5-4486-aff0-20ded684b67f,15111bf5-5bf5-4486-aff0-20ded684b67f,1,0,2465986e-7519-4638-9f62-5f692bebeeac,2465986e-7519-4638-9f62-5f692bebeeac,1,0,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,1,0,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,1,0,022f99dd-e1b7-42a7-8141-a8c2e8628901,022f99dd-e1b7-42a7-8141-a8c2e8628901,1,0,cc770616-f6f6-4054-876c-f319b1f8c6cf,cc770616-f6f6-4054-876c-f319b1f8c6cf,1,0,3baffdec-a2cb-48c9-9c21-4fc469e81e3b,3baffdec-a2cb-48c9-9c21-4fc469e81e3b,1,0,046e6f4f-3d92-4b20-b19f-fca608fa0f11,046e6f4f-3d92-4b20-b19f-fca608fa0f11,1,0,74bea66f-15bf-48de-9ff9-f9c35a8bf5cc,74bea66f-15bf-48de-9ff9-f9c35a8bf5cc,1,0,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,1,0,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,1,0,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,1,0,6fe9a455-7fef-4a1b-8109-57eafc17e2b6,6fe9a455-7fef-4a1b-8109-57eafc17e2b6,1,0,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,1,0,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,1,0,2031ed38-6a8e-4ca7-aa97-449ee36ab7a3,2031ed38-6a8e-4ca7-aa97-449ee36ab7a3,1,0,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,1,0,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,1,0,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,1,0,993193b3-1dd8-4f5b-8ce7-6a0bf8c4330c,993193b3-1dd8-4f5b-8ce7-6a0bf8c4330c,1,0,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,1,0,7a0cdc94-9e53-4fcc-ac2f-97ad2ad939f5,7a0cdc94-9e53-4fcc-ac2f-97ad2ad939f5,1,0,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,1,0,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,1,0,db6679c4-a647-471a-9f90-40248eb18db9,db6679c4-a647-471a-9f90-40248eb18db9,1,0,455a1ca6-7212-43ac-b5a2-cf85dd2f9c14,455a1ca6-7212-43ac-b5a2-cf85dd2f9c14,1,0,e7c366f7-c8e3-4ffe-bc5e-ca8a4619ec11,e7c366f7-c8e3-4ffe-bc5e-ca8a4619ec11,1,0,2997e4da-d831-48e4-96e2-c29f9d077302,2997e4da-d831-48e4-96e2-c29f9d077302,1,0,30f59002-a23d-4eff-b84f-f280f11b220e,30f59002-a23d-4eff-b84f-f280f11b220e,1,0,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,1,0,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,1,0,14583452-805e-423d-be9a-e04683c7c46f,14583452-805e-423d-be9a-e04683c7c46f,1,0,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,1,0,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,1,0,75378d9c-a364-4b46-a6d1-b745604c46a2,75378d9c-a364-4b46-a6d1-b745604c46a2,1,0,d7376ea8-245a-4342-9a40-c729ca19f966,d7376ea8-245a-4342-9a40-c729ca19f966,1,0,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,1,0,4bf12710-aef2-43ec-b16f-9c6c9e8eb18d,4bf12710-aef2-43ec-b16f-9c6c9e8eb18d,1,0,b1e837ff-0edd-4525-b2e2-92cc7990e00e,b1e837ff-0edd-4525-b2e2-92cc7990e00e,1,0,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,1,0,037fd2f3-27f1-4d8f-a621-82fa5754e8c7,037fd2f3-27f1-4d8f-a621-82fa5754e8c7,1,0,3fc1e50e-b9da-45f7-8e06-57ef6951ca40,3fc1e50e-b9da-45f7-8e06-57ef6951ca40,1,0,66d67f47-ccbb-4d58-aceb-af876f480750,66d67f47-ccbb-4d58-aceb-af876f480750,1,0,71871ca9-095d-4bde-ac80-1371f578cd51,71871ca9-095d-4bde-ac80-1371f578cd51,1,0,6aa8c1d6-9956-4a98-9992-b119ba5ba1c7,6aa8c1d6-9956-4a98-9992-b119ba5ba1c7,1,0,cafbea88-86f0-4a44-98f4-70d1837da452,cafbea88-86f0-4a44-98f4-70d1837da452,1,0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,1,0,2df403a2-57d8-4578-b017-e7cf9550b708,2df403a2-57d8-4578-b017-e7cf9550b708,1,0,ceb286e9-4e7c-49fa-a695-424073e0dffc,ceb286e9-4e7c-49fa-a695-424073e0dffc,1,0,727689c3-c0d8-496f-a47b-4f3243ad8974,727689c3-c0d8-496f-a47b-4f3243ad8974,1,0,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,1,0,d1771aec-ba78-4b5d-861a-9ac6d8627dea,d1771aec-ba78-4b5d-861a-9ac6d8627dea,1,0,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,1,0,07288e13-583c-4caf-983a-76c5d2ebf66f,07288e13-583c-4caf-983a-76c5d2ebf66f,1,0,5e232e6a-7f68-40d2-9555-4a2b3debe095,5e232e6a-7f68-40d2-9555-4a2b3debe095,1,0,efc8ca7d-966d-4c18-acd9-90f22dd75a7a,efc8ca7d-966d-4c18-acd9-90f22dd75a7a,1,0,1780ffa9-1ca3-4bcb-823f-5e582c4cc25e,1780ffa9-1ca3-4bcb-823f-5e582c4cc25e,1,0,2522fce4-d121-482b-a39d-0c1a842d315e,2522fce4-d121-482b-a39d-0c1a842d315e,1,0,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,1,0,b8d7bdc9-2778-4f36-a0d9-c43fce15eb3c,b8d7bdc9-2778-4f36-a0d9-c43fce15eb3c,1,0,4bad7c64-131a-42cb-9be7-d61f14f456d0,4bad7c64-131a-42cb-9be7-d61f14f456d0,1,0,d46e141b-7a10-4d65-971f-3a35f2114017,d46e141b-7a10-4d65-971f-3a35f2114017,1,0,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,1,0,71cad48a-37f2-4894-b876-9d74fa844828,71cad48a-37f2-4894-b876-9d74fa844828,1,0,0f325868-167b-43d5-b17a-eadc606a8f79,0f325868-167b-43d5-b17a-eadc606a8f79,1,0,51ea38c1-3005-4f4b-b813-91c8e2717683,51ea38c1-3005-4f4b-b813-91c8e2717683,1,0,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,1,0,ba59393c-c499-4999-91d4-b9e34d94db0e,ba59393c-c499-4999-91d4-b9e34d94db0e,1,0,626da0dd-d75b-4779-be1f-9b71d2f2d4e1,626da0dd-d75b-4779-be1f-9b71d2f2d4e1,1,0,1d4b7f71-6c72-4f41-a2ed-1f2fe2122c04,1d4b7f71-6c72-4f41-a2ed-1f2fe2122c04,1,0,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,1,0,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,1,0,913743c3-9529-4c86-b056-93e954df7819,913743c3-9529-4c86-b056-93e954df7819,1,0,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,1,0,3b453f76-ab85-4c65-b008-7f8bf44c9631,3b453f76-ab85-4c65-b008-7f8bf44c9631,1,0,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,1,0,772e7011-0019-4edc-b673-b7151cf4fa6c,772e7011-0019-4edc-b673-b7151cf4fa6c,1,0,21ac47fa-12c2-43e2-9b57-afdf521d3485,21ac47fa-12c2-43e2-9b57-afdf521d3485,1,0,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,1,0,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,1,0,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,1,0,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,1,0,8d1c44d7-52f2-4089-9d77-2f03bf051455,8d1c44d7-52f2-4089-9d77-2f03bf051455,1,0,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,1,0,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,1,0,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,1,0,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,1,0,8e87da88-9fa8-4dd8-b904-622b763239f4,8e87da88-9fa8-4dd8-b904-622b763239f4,1,0,2a7f1ce3-2629-4860-886b-67c9f82eeb29,2a7f1ce3-2629-4860-886b-67c9f82eeb29,1,0,6b5720a8-0bcc-4196-934d-84db9d99ec27,6b5720a8-0bcc-4196-934d-84db9d99ec27,1,0,c0b3e3e9-20bc-42e1-a68f-646a958586d1,c0b3e3e9-20bc-42e1-a68f-646a958586d1,1,0,39496918-7d71-4960-ad8b-0028ae659266,39496918-7d71-4960-ad8b-0028ae659266,1,0,bdf2fd35-2000-45c2-9df6-65031ee0e4af,bdf2fd35-2000-45c2-9df6-65031ee0e4af,1,0,529cc5b5-835f-4e70-9232-a9649fdc7ae5,529cc5b5-835f-4e70-9232-a9649fdc7ae5,1,0,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,1,0,4875a235-bcc8-47eb-83e3-a66f0f690b97,4875a235-bcc8-47eb-83e3-a66f0f690b97,1,0,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,1,0,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,1,0,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,1,0,cce593b4-6f7c-466d-892c-7fe89fcddf5d,cce593b4-6f7c-466d-892c-7fe89fcddf5d,1,0,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,1,0,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,1,0,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,1,0,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,1,0,330a176f-5b61-41f5-84bb-b99a9439c2a0,330a176f-5b61-41f5-84bb-b99a9439c2a0,1,0,d1ba8620-c0c9-4281-afa6-9c9962c338d3,d1ba8620-c0c9-4281-afa6-9c9962c338d3,1,0,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,1,0,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,1,0,4bdc1a18-f184-4f95-bda4-8f5c4b7c3aa1,4bdc1a18-f184-4f95-bda4-8f5c4b7c3aa1,1,0,60200fc6-252f-4eaf-88a2-d2cefa25061f,60200fc6-252f-4eaf-88a2-d2cefa25061f,1,0,0798a128-2f87-4173-99ae-115bb8b3a3b8,0798a128-2f87-4173-99ae-115bb8b3a3b8,1,0,40f93527-7bff-4f9c-b855-2b69f7c5eb33,40f93527-7bff-4f9c-b855-2b69f7c5eb33,1,0,697bd1de-bbef-4362-aa39-71f6008f4bd7,697bd1de-bbef-4362-aa39-71f6008f4bd7,1,0,676b2ea2-a559-4685-b5ca-7b619b02f101,676b2ea2-a559-4685-b5ca-7b619b02f101,1,0,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,1,0,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,1,0,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,1,0,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,1,0,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,1,0,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,1,0,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,1,0,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,1,0,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,1,0,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,1,0,62629f36-5d1e-460f-9ac5-983607c40cb2,62629f36-5d1e-460f-9ac5-983607c40cb2,1,0,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,1,0,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,1,0,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,1,0,4b07cdb0-c32e-4751-b317-bee62b43f128,4b07cdb0-c32e-4751-b317-bee62b43f128,1,0,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,1,0,32cab8f2-cebf-4508-9396-eb41f4e8ba22,32cab8f2-cebf-4508-9396-eb41f4e8ba22,1,0,62ef3558-5ad3-44ab-8578-1acbbfa54135,62ef3558-5ad3-44ab-8578-1acbbfa54135,1,0,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,1,0,c3572d8d-46ff-40bb-800c-2c07f884c219,c3572d8d-46ff-40bb-800c-2c07f884c219,1,0,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,1,0,b77edd78-2fad-4926-a74f-02f2135356e6,b77edd78-2fad-4926-a74f-02f2135356e6,1,0,57b0b6b2-bbdd-48d2-a52e-e3495e00860e,57b0b6b2-bbdd-48d2-a52e-e3495e00860e,1,0,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,1,0,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,1,0,4f4916dc-b6fe-4f99-9220-bd7c076408ae,4f4916dc-b6fe-4f99-9220-bd7c076408ae,1,0,857daa3a-0058-4464-9173-13a2926812e2,857daa3a-0058-4464-9173-13a2926812e2,1,0,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,1,0,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,1,0,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,1,0,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,1,0,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,1,0,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,1,0,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,1,0,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,1,0,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,1,0,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,1,0,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,1,0,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,1,0,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,1,0,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,1,0,2cea7641-6f1d-4bc7-9d38-8d99f196e0f5,2cea7641-6f1d-4bc7-9d38-8d99f196e0f5,1,0,0093680b-c8bc-472d-8b0d-2e6565fc6c22,0093680b-c8bc-472d-8b0d-2e6565fc6c22,1,0,7fa6a20a-26e2-41ad-be66-a43b50d0bbcd,7fa6a20a-26e2-41ad-be66-a43b50d0bbcd,1,0,5f4456d6-ff0c-425e-9603-c099492d7a6f,5f4456d6-ff0c-425e-9603-c099492d7a6f,1,0,af7c417e-5c10-4146-bde1-40db86c5806f,af7c417e-5c10-4146-bde1-40db86c5806f,1,0,1f018218-2281-4e32-a486-f32386959e5f,1f018218-2281-4e32-a486-f32386959e5f,1,0,ab5b0155-a4b1-47a1-ad87-12365dde20c1,ab5b0155-a4b1-47a1-ad87-12365dde20c1,1,0,90f3f3c5-4ca9-4c8f-9b73-f67760a6d2f0,90f3f3c5-4ca9-4c8f-9b73-f67760a6d2f0,1,0,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,1,0,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,1,0,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,1,0,6f21c34c-26aa-493d-aa08-2d4366b4064a,6f21c34c-26aa-493d-aa08-2d4366b4064a,1,0,0f55650a-2422-42a9-8258-61df4c17f1ef,0f55650a-2422-42a9-8258-61df4c17f1ef,1,0,2ef4ea1d-fd86-4ef3-a7e0-73abba89474d,2ef4ea1d-fd86-4ef3-a7e0-73abba89474d,1,0,3eaece9d-c9be-4b0b-a6f6-a3932274b806,3eaece9d-c9be-4b0b-a6f6-a3932274b806,1,0,5d9427ec-981d-4fb5-878b-8dba0d3a5536,5d9427ec-981d-4fb5-878b-8dba0d3a5536,1,0,c5dd6184-96e5-4abc-8c1e-5270e6547ee5,c5dd6184-96e5-4abc-8c1e-5270e6547ee5,1,0,a0047712-5769-495d-97af-20d06751a5b4,a0047712-5769-495d-97af-20d06751a5b4,1,0,e729c3c6-16e5-405b-99b1-a88022300c6d,e729c3c6-16e5-405b-99b1-a88022300c6d,1,0,9c089520-8233-42f6-8eee-9839ac708c6f,9c089520-8233-42f6-8eee-9839ac708c6f,1,0,24f2cfc7-6dc0-400c-8eb2-106ca2ea7034,24f2cfc7-6dc0-400c-8eb2-106ca2ea7034,1,0,5f3ffa44-49be-4da5-ab2a-a35c9bd76dee,5f3ffa44-49be-4da5-ab2a-a35c9bd76dee,1,0,89055896-49dd-4cfd-ab78-8ac3698e12d5,89055896-49dd-4cfd-ab78-8ac3698e12d5,1,0,277ca641-e869-4fcd-8a79-54c451efbbdd,277ca641-e869-4fcd-8a79-54c451efbbdd,1,0,beb07009-6612-4052-a991-888138da8e30,beb07009-6612-4052-a991-888138da8e30,1,0,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,1,0,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,1,0,672c4741-6d7b-4d3e-baa7-389bef0625d7,672c4741-6d7b-4d3e-baa7-389bef0625d7,1,0,04398ec0-1c13-43f8-8f5d-7b7619592a4d,04398ec0-1c13-43f8-8f5d-7b7619592a4d,1,0,ce463861-92df-47f2-bd0f-4a2dbf72aacc,ce463861-92df-47f2-bd0f-4a2dbf72aacc,1,0,1220ce92-b964-4fb8-9db0-b4c8c6bdbdf7,1220ce92-b964-4fb8-9db0-b4c8c6bdbdf7,1,0,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,1,0,1487d68c-7a2f-48cf-8c80-4074072ed52c,1487d68c-7a2f-48cf-8c80-4074072ed52c,1,0,57502594-74dd-45fe-9234-9a477d5b9741,57502594-74dd-45fe-9234-9a477d5b9741,1,0,6ed8c74c-6b6e-4ed1-95ff-a733f618b213,6ed8c74c-6b6e-4ed1-95ff-a733f618b213,1,0,d97c6536-fd62-4c9a-b83e-490a29a0721b,d97c6536-fd62-4c9a-b83e-490a29a0721b,1,0,93ec2af7-2ca8-4133-8cc0-31073f9bf216,93ec2af7-2ca8-4133-8cc0-31073f9bf216,1,0,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,1,0,681b27ac-69a5-4c5b-b2c7-285330fe5a4a,681b27ac-69a5-4c5b-b2c7-285330fe5a4a,1,0,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,1,0,0753701c-016e-4385-85c0-a485ca50efdc,0753701c-016e-4385-85c0-a485ca50efdc,1,0,c3a6b470-37d5-4499-badb-33b73b52e346,c3a6b470-37d5-4499-badb-33b73b52e346,1,0,24415097-bde5-447a-ac74-bd9bf0eb19fc,24415097-bde5-447a-ac74-bd9bf0eb19fc,1,0,a29d42d6-a448-4940-804d-d1be31da000d,a29d42d6-a448-4940-804d-d1be31da000d,1,0,dd780b76-2a10-40b5-9bcd-7bc8c9b06651,dd780b76-2a10-40b5-9bcd-7bc8c9b06651,1,0,8be6c4a3-d75b-405d-8d98-9baf6f20abb2,8be6c4a3-d75b-405d-8d98-9baf6f20abb2,1,0,7cbd82e3-4bf8-46ab-8504-4bf30523fa2a,7cbd82e3-4bf8-46ab-8504-4bf30523fa2a,1,0,c4b01e52-4136-460d-bd82-970177f1e256,c4b01e52-4136-460d-bd82-970177f1e256,1,0,9533784b-311a-4dbe-b73e-7348aabd387e,9533784b-311a-4dbe-b73e-7348aabd387e,1,0,56bdc69a-d8e8-4da6-a3a5-41ef32bbb626,56bdc69a-d8e8-4da6-a3a5-41ef32bbb626,1,0,c770cd75-f370-4042-9a5a-82b2fc1853cc,c770cd75-f370-4042-9a5a-82b2fc1853cc,1,0,6ee215f9-20ab-4c48-b2c2-cb1869e8906c,6ee215f9-20ab-4c48-b2c2-cb1869e8906c,1,0,b74af9c1-bc44-40ce-b093-d1f548a1742f,b74af9c1-bc44-40ce-b093-d1f548a1742f,1,0,1b401a14-4581-4f24-aaca-5f204f8fcf8b,1b401a14-4581-4f24-aaca-5f204f8fcf8b,1,0,267f7ee6-7b02-4e48-aa1e-145f586edd87,267f7ee6-7b02-4e48-aa1e-145f586edd87,1,0,e1e8ea42-6886-430a-bc59-249259112e6a,e1e8ea42-6886-430a-bc59-249259112e6a,1,0,1e27f3cd-1c9e-4f9f-b2ff-88fb1da37e11,1e27f3cd-1c9e-4f9f-b2ff-88fb1da37e11,1,0,3dcf815c-5c9a-4a78-a42e-7c9ff6faaeb8,3dcf815c-5c9a-4a78-a42e-7c9ff6faaeb8,1,0,1379f050-4f1c-4c41-993e-f7efc71325fb,1379f050-4f1c-4c41-993e-f7efc71325fb,1,0,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,1,0,753c70c1-af12-4ec2-ac12-dd1ce33f729f,753c70c1-af12-4ec2-ac12-dd1ce33f729f,1,0,6c07ddfb-8823-4953-9905-9550b847dc3f,6c07ddfb-8823-4953-9905-9550b847dc3f,1,0,2362a8d5-dca2-4527-acc0-63782377f28a,2362a8d5-dca2-4527-acc0-63782377f28a,1,0,dfd6d85c-a734-4458-83b0-87b5949f9c68,dfd6d85c-a734-4458-83b0-87b5949f9c68,1,0,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,1,0,79b6ecf5-8a6b-44a4-9587-5f8764463228,79b6ecf5-8a6b-44a4-9587-5f8764463228,1,0,5e4ec9d8-bb60-4dfb-89ba-002527dc149b,5e4ec9d8-bb60-4dfb-89ba-002527dc149b,1,0,bf463763-3801-4664-9d04-4d9fd7fe8c43,bf463763-3801-4664-9d04-4d9fd7fe8c43,1,0,43a0760f-3635-4e6a-a68a-1a2232245329,43a0760f-3635-4e6a-a68a-1a2232245329,1,0,5c64a4dd-2b9f-4110-abe2-266e6d8638fb,5c64a4dd-2b9f-4110-abe2-266e6d8638fb,1,0,d408d054-86ac-4471-a29d-efed65989899,d408d054-86ac-4471-a29d-efed65989899,1,0,3e979ec3-b544-4e37-8be6-95dce0a2b780,3e979ec3-b544-4e37-8be6-95dce0a2b780,1,0,2444eed3-25c7-4abc-a9a8-f3f3a8201267,2444eed3-25c7-4abc-a9a8-f3f3a8201267,1,0,e91118e9-d054-41a1-bfe9-343179718f33,e91118e9-d054-41a1-bfe9-343179718f33,1,0,042245ef-3a30-46fb-b3e3-6599d5426cbd,042245ef-3a30-46fb-b3e3-6599d5426cbd,1,0,d1034240-ab06-413a-9828-a5c7dc879680,d1034240-ab06-413a-9828-a5c7dc879680,1,0,5dd0f264-6d9f-41e4-92b6-e8b4fa3b4d84,5dd0f264-6d9f-41e4-92b6-e8b4fa3b4d84,1,0,cd49148c-e385-4b75-a758-a93196e73dba,cd49148c-e385-4b75-a758-a93196e73dba,1,0,ece15c4e-4a4b-421b-9f00-10f698da476b,ece15c4e-4a4b-421b-9f00-10f698da476b,1,0,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,1,0,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,1,0,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,1,0,999df397-a730-4110-b253-59fd5583dab9,999df397-a730-4110-b253-59fd5583dab9,1,0,7f7bf652-0375-4f49-94f1-ebe6a00e4e23,7f7bf652-0375-4f49-94f1-ebe6a00e4e23,1,0,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,1,0,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,1,0,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,1,0,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,1,0,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,1,0,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,1,0,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,1,0,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,1,0,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,1,0,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,1,0,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,1,0,9883862f-c0eb-41fe-9374-05c6d72878bc,9883862f-c0eb-41fe-9374-05c6d72878bc,1,0,8ccd9be8-ef26-49b9-8cee-03ae4e500386,8ccd9be8-ef26-49b9-8cee-03ae4e500386,1,0,ddca925c-fdcd-40ce-a504-4fca1758de3f,ddca925c-fdcd-40ce-a504-4fca1758de3f,1,0,9bd92328-8c9c-4882-8956-a1fccf555a64,9bd92328-8c9c-4882-8956-a1fccf555a64,1,0,cafc6b5b-a76a-4b1b-9592-ba440f7bf34f,cafc6b5b-a76a-4b1b-9592-ba440f7bf34f,1,0,e5033559-9d58-4b9b-a739-40c419e82192,e5033559-9d58-4b9b-a739-40c419e82192,1,0,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,1,0,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,1,0,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,1,0,4f9b6c01-0919-41ba-91dc-49497d0fecf7,4f9b6c01-0919-41ba-91dc-49497d0fecf7,1,0,ea07cd11-418c-4e4f-be9f-c160ee8a64e8,ea07cd11-418c-4e4f-be9f-c160ee8a64e8,1,0,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,1,0,5efc4bc4-b711-4620-8d2e-9d947c6cc141,5efc4bc4-b711-4620-8d2e-9d947c6cc141,1,0,1d8d0eed-caaa-494c-aeea-0df5846fc97a,1d8d0eed-caaa-494c-aeea-0df5846fc97a,1,0,1328947f-91c3-43f4-a11e-f34893d987b3,1328947f-91c3-43f4-a11e-f34893d987b3,1,0,6de9dab4-ee34-4584-a2e7-7a29c86794b0,6de9dab4-ee34-4584-a2e7-7a29c86794b0,1,0,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,1,0,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,1,0,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,1,0,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,1,0,aa8c4a71-3276-4b83-8be2-3528129e58b3,aa8c4a71-3276-4b83-8be2-3528129e58b3,1,0,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,1,0,528d3535-f20f-4d3c-8b7d-482d4d626eb0,528d3535-f20f-4d3c-8b7d-482d4d626eb0,1,0,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,1,0,e9a2441e-faf9-4158-acc7-b1a6178ae0f3,e9a2441e-faf9-4158-acc7-b1a6178ae0f3,1,0,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,1,0,871a75ef-1987-4695-9916-07439aeedc53,871a75ef-1987-4695-9916-07439aeedc53,1,0,ba64deac-5826-43f2-b88a-2e180da87059,ba64deac-5826-43f2-b88a-2e180da87059,1,0,53ee3eb6-d2d1-4fb3-8a78-1fa4543850a1,53ee3eb6-d2d1-4fb3-8a78-1fa4543850a1,1,0,0072986b-0463-4a39-9851-f9adeda99716,0072986b-0463-4a39-9851-f9adeda99716,1,0,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,1,0,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,1,0,0d4a26fb-7176-43f2-8767-d3e227c7306a,0d4a26fb-7176-43f2-8767-d3e227c7306a,1,0,77de81f0-97c5-4751-9f38-f5785c7c45e0,77de81f0-97c5-4751-9f38-f5785c7c45e0,1,0,933cbafc-5667-4a91-8b1d-dca3d7662522,933cbafc-5667-4a91-8b1d-dca3d7662522,1,0,59acaca9-ed29-4927-bee6-287c91934690,59acaca9-ed29-4927-bee6-287c91934690,1,0,9136814a-89e6-4b0f-8ca1-73e4ef29f534,9136814a-89e6-4b0f-8ca1-73e4ef29f534,1,0,d7e4795a-3431-4f7d-9699-4241611adcf0,d7e4795a-3431-4f7d-9699-4241611adcf0,1,0,ea0a498a-a1cb-4f28-88cb-0bc62971172b,ea0a498a-a1cb-4f28-88cb-0bc62971172b,1,0,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,1,0,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,1,0,b6e98aee-4936-491d-8c67-8490e1af2e34,b6e98aee-4936-491d-8c67-8490e1af2e34,1,0,0732ab1c-b49a-49ed-8667-65f4427cc301,0732ab1c-b49a-49ed-8667-65f4427cc301,1,0,b292eb46-df87-43c0-9a37-93c5a22af252,b292eb46-df87-43c0-9a37-93c5a22af252,1,0,0943dd00-1653-4760-a9fe-ebc083ffa660,0943dd00-1653-4760-a9fe-ebc083ffa660,1,0,7406da96-2e16-42a0-9522-d76547708eca,7406da96-2e16-42a0-9522-d76547708eca,1,0,ede6a379-b0e5-4b8d-a454-779c0fd8b0b3,ede6a379-b0e5-4b8d-a454-779c0fd8b0b3,1,0,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,1,0,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,1,0,f93c9a7f-0249-421e-b3d0-55f02d130017,f93c9a7f-0249-421e-b3d0-55f02d130017,1,0,062c507a-9d35-4eb5-bb91-d106a535a503,062c507a-9d35-4eb5-bb91-d106a535a503,1,0,ea1284f2-33f1-4e3d-b009-1ffad3aaf300,ea1284f2-33f1-4e3d-b009-1ffad3aaf300,1,0,bd727741-ba99-484d-9d7d-2c2ad7ddd1a5,bd727741-ba99-484d-9d7d-2c2ad7ddd1a5,1,0,90327957-5bdc-4949-883c-9eb50f527b3e,90327957-5bdc-4949-883c-9eb50f527b3e,1,0,031980f5-60e8-426a-9907-3afff75a6b05,031980f5-60e8-426a-9907-3afff75a6b05,1,0,1a26f2d5-2465-484c-9311-12d9b3b92ae3,1a26f2d5-2465-484c-9311-12d9b3b92ae3,1,0,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,1,0,64837ad8-3055-4da3-a39c-0e7db38b6084,64837ad8-3055-4da3-a39c-0e7db38b6084,1,0,695cda1d-b816-4200-9a71-490078a9faa7,695cda1d-b816-4200-9a71-490078a9faa7,1,0,75fc5bea-e239-4de1-ad68-6454876e4b9f,75fc5bea-e239-4de1-ad68-6454876e4b9f,1,0,31ba33d4-5941-4b11-ae99-b15188bfef76,31ba33d4-5941-4b11-ae99-b15188bfef76,1,0,0744e8be-747c-47bb-85f3-58b6f6f9b786,0744e8be-747c-47bb-85f3-58b6f6f9b786,1,0,7142ae5b-ec7b-4a69-9c26-f51e05a4c270,7142ae5b-ec7b-4a69-9c26-f51e05a4c270,1,0,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,1,0,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,1,0,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,1,0,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,1,0,f1e600b0-55ed-4611-b147-f04d5621796b,f1e600b0-55ed-4611-b147-f04d5621796b,1,0,e3b84128-95e1-45df-84db-5e1791779543,e3b84128-95e1-45df-84db-5e1791779543,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,e9d95895-8708-4035-89ad-72573b870491,e9d95895-8708-4035-89ad-72573b870491,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f0152598-ffa3-4eb7-811f-906e569373e6,f0152598-ffa3-4eb7-811f-906e569373e6,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,312118ff-a2a4-479c-964a-5250cca0cd20,312118ff-a2a4-479c-964a-5250cca0cd20,1,0,f8d32d21-ea2f-42bb-a785-9bd3cf754cd9,f8d32d21-ea2f-42bb-a785-9bd3cf754cd9,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,caf8f0e8-7a2c-498b-9b74-ed6b87cce670,caf8f0e8-7a2c-498b-9b74-ed6b87cce670,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,89318397-b3a6-4468-985b-ed5cb8ab5cdb,89318397-b3a6-4468-985b-ed5cb8ab5cdb,1,0,5e5b0ad7-ef73-4a73-baf5-360a9244a1cc,5e5b0ad7-ef73-4a73-baf5-360a9244a1cc,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,4436b2cf-2d71-401f-99fd-012ff0c91fbd,4436b2cf-2d71-401f-99fd-012ff0c91fbd,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,5396be45-d7c0-43df-aed4-cad062a02b11,5396be45-d7c0-43df-aed4-cad062a02b11,1,0,017e3da8-e48e-488b-9bbf-4fef1a4f3417,017e3da8-e48e-488b-9bbf-4fef1a4f3417,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,aebf163d-d8e8-492a-a973-8cb51982d475,aebf163d-d8e8-492a-a973-8cb51982d475,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,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,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d9e98c14-9b07-406b-92c8-bec76165e028,d9e98c14-9b07-406b-92c8-bec76165e028,1,0,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,1,0,9bb33b9f-0a27-4edd-b3b2-1c20a75d0f20,9bb33b9f-0a27-4edd-b3b2-1c20a75d0f20,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,7abb55d2-eac6-44a0-9ebc-fa26a7f0c028,7abb55d2-eac6-44a0-9ebc-fa26a7f0c028,1,0,bdafe976-c8d6-413a-8d61-765a02014e5d,bdafe976-c8d6-413a-8d61-765a02014e5d,1,0,68e207e7-8c20-426d-8a0e-c3dd4d683631,68e207e7-8c20-426d-8a0e-c3dd4d683631,1,0,6d7fa2f9-7ca4-4ad6-b94b-8267768a0f04,6d7fa2f9-7ca4-4ad6-b94b-8267768a0f04,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,1e015740-5b45-4729-9732-57359a7c602f,1e015740-5b45-4729-9732-57359a7c602f,1,0,6eb6003c-71cb-4be8-a375-abd5c9f7336b,6eb6003c-71cb-4be8-a375-abd5c9f7336b,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,6c138ffd-057f-4f7d-af4d-1b1a589a9057,6c138ffd-057f-4f7d-af4d-1b1a589a9057,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,69530795-5a90-47b0-ae8d-a44b420b51f6,69530795-5a90-47b0-ae8d-a44b420b51f6,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,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,1,0,d85ba2d1-63e9-4680-bd88-6c0c4dba5d0f,d85ba2d1-63e9-4680-bd88-6c0c4dba5d0f,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,cd74d617-8ebe-4a7d-b011-38c98d856d8c,cd74d617-8ebe-4a7d-b011-38c98d856d8c,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,f9a5bd40-7c56-4ced-bddb-a66c1fc31b81,f9a5bd40-7c56-4ced-bddb-a66c1fc31b81,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,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,5ea4412e-0ce0-4176-917b-37817ed788e1,5ea4412e-0ce0-4176-917b-37817ed788e1,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,bd206271-1388-4759-8992-da81507613be,bd206271-1388-4759-8992-da81507613be,1,0,8de2c020-0ebe-4374-93d7-d2e19ed82470,8de2c020-0ebe-4374-93d7-d2e19ed82470,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,1a3eff9b-6598-4e11-9b8f-81249c53abec,1a3eff9b-6598-4e11-9b8f-81249c53abec,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,33b12dd8-7a86-4a51-bd3d-4911ec1ffde4,33b12dd8-7a86-4a51-bd3d-4911ec1ffde4,1,0,1e020429-ac68-46f4-b34c-c2c4a2b494f6,1e020429-ac68-46f4-b34c-c2c4a2b494f6,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,789a2027-8601-434c-bf47-37696a3966ad,789a2027-8601-434c-bf47-37696a3966ad,1,0,f71eceb3-ef2e-4e6c-bf9c-e7e7d42c1c7c,f71eceb3-ef2e-4e6c-bf9c-e7e7d42c1c7c,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,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,4c3085e1-2f86-4af4-a392-ab45e30a7152,4c3085e1-2f86-4af4-a392-ab45e30a7152,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,1,0,89cc9ae4-e933-4f4a-849f-48ef67b75819,89cc9ae4-e933-4f4a-849f-48ef67b75819,1,0,36e096be-ee28-437a-b8f2-c1e274c150e3,36e096be-ee28-437a-b8f2-c1e274c150e3,1,0,160e9608-7301-4572-af02-6a7cceca1560,160e9608-7301-4572-af02-6a7cceca1560,1,0,4a70416b-6598-4239-be70-2c0c8255388a,4a70416b-6598-4239-be70-2c0c8255388a,1,0,f6b69c2b-e32a-477f-9128-b61d8237290e,f6b69c2b-e32a-477f-9128-b61d8237290e,1,0,f6b8e6ae-7d3e-4f6c-bd74-66ee7593868c,f6b8e6ae-7d3e-4f6c-bd74-66ee7593868c,1,0,e730ea3f-4f2a-4e21-8851-bccc51830cfe,e730ea3f-4f2a-4e21-8851-bccc51830cfe,1,0,193ab4a7-7eee-4374-95cf-2d907a3ba971,193ab4a7-7eee-4374-95cf-2d907a3ba971,1,0,e2779397-46ed-4d95-8529-45896f9567d2,e2779397-46ed-4d95-8529-45896f9567d2,1,0,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,1,0,d05bbd02-9db3-4830-be9d-7080f3506e01,d05bbd02-9db3-4830-be9d-7080f3506e01,1,0,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,1,0,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1,0,7e3283df-05a6-4dc5-a786-056c71bdbf6f,7e3283df-05a6-4dc5-a786-056c71bdbf6f,1,0,c6af8b0f-3767-4198-88e2-f5763cb0294a,c6af8b0f-3767-4198-88e2-f5763cb0294a,1,0,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,1,0,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,1,0,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,1,0,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,1,0,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,1,0,ac847dc9-e222-45cf-af4a-6fa863c919a8,ac847dc9-e222-45cf-af4a-6fa863c919a8,1,0,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,1,0,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,1,0,13fcf1e8-730e-436f-b316-6bcb8301f894,13fcf1e8-730e-436f-b316-6bcb8301f894,1,0,fa548f02-82e0-4897-89e8-0618ebf16919,fa548f02-82e0-4897-89e8-0618ebf16919,1,0,8c28a5b0-517f-48fe-9bde-5e611c319413,8c28a5b0-517f-48fe-9bde-5e611c319413,1,0,904e1209-91d8-49b1-b291-364ef728cbbf,904e1209-91d8-49b1-b291-364ef728cbbf,1,0,4a0d7cd7-8e43-4a1f-88b8-ffc376b38f7c,4a0d7cd7-8e43-4a1f-88b8-ffc376b38f7c,1,0,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1,0,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,1,0,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,1,0,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,1,0,23314bcd-2dd4-43f1-9fdb-ae182a48c886,23314bcd-2dd4-43f1-9fdb-ae182a48c886,1,0,c5f86fa3-4a36-4e22-8b57-7088dd250cd3,c5f86fa3-4a36-4e22-8b57-7088dd250cd3,1,0,9440a132-366f-4fc9-bd72-2544ba2b072a,9440a132-366f-4fc9-bd72-2544ba2b072a,1,0,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,1,0,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,1,0,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,1,0,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,1,0,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,1,0,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,1,0,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,1,0,cadb54f0-dcff-4f96-983e-a309fd72f330,cadb54f0-dcff-4f96-983e-a309fd72f330,1,0,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,1,0,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,1,0,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,1,0,e6af9db4-b93f-422e-846c-e6c5fd33f992,e6af9db4-b93f-422e-846c-e6c5fd33f992,1,0,2895ac1f-5f15-422d-9d90-2df87255a92a,2895ac1f-5f15-422d-9d90-2df87255a92a,1,0,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,1,0,ed5ff5b0-f980-4b9a-9299-eef68e3b42d5,ed5ff5b0-f980-4b9a-9299-eef68e3b42d5,1,0,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,1,0,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,1,0,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,1,0,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,1,0,42107b14-9373-418a-a41d-35c87434c51a,42107b14-9373-418a-a41d-35c87434c51a,1,0,24d8ce8d-e94c-4168-abad-d0ce5e6cbf1b,24d8ce8d-e94c-4168-abad-d0ce5e6cbf1b,1,0,8786575a-eab6-46bf-be3a-167e2d5b41dd,8786575a-eab6-46bf-be3a-167e2d5b41dd,1,0,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,1,0,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,1,0,9ff1c73e-71be-4ea6-97fb-e710d995ee62,9ff1c73e-71be-4ea6-97fb-e710d995ee62,1,0,50f7effb-e051-49dd-8b56-0771dda350cc,50f7effb-e051-49dd-8b56-0771dda350cc,1,0,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,1,0,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,1,0,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,1,0,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,1,0,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,1,0,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,1,0,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,1,0,9d669d30-a0af-4095-852a-96b4224ee933,9d669d30-a0af-4095-852a-96b4224ee933,1,0,590aba18-7d56-48e3-9454-5f2882a32f80,590aba18-7d56-48e3-9454-5f2882a32f80,1,0,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,1,0,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,1,0,18363a37-28b0-488b-a7d6-54d3596d2a6d,18363a37-28b0-488b-a7d6-54d3596d2a6d,1,0,e5f401b5-4672-4529-a8dd-6d819f3f269c,e5f401b5-4672-4529-a8dd-6d819f3f269c,1,0,126d5d78-a2b0-4c16-b429-bf8d251280e7,126d5d78-a2b0-4c16-b429-bf8d251280e7,1,0,f8f96dce-913c-4858-bcb7-dcfe3dc2f72e,f8f96dce-913c-4858-bcb7-dcfe3dc2f72e,1,0,70d93c88-c9e9-4b8e-b8f3-ef07c665ab5d,70d93c88-c9e9-4b8e-b8f3-ef07c665ab5d,1,0,12443114-1931-4eb7-968a-7dbe166b7298,12443114-1931-4eb7-968a-7dbe166b7298,1,0,0080c29d-ec54-43a8-aab8-c67e0279b6b7,0080c29d-ec54-43a8-aab8-c67e0279b6b7,1,0,a0271f6e-dc70-4dfe-a395-203e8a89f933,a0271f6e-dc70-4dfe-a395-203e8a89f933,1,0,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,1,0,5e52dfe6-5a98-4a32-9429-5f44bf442367,5e52dfe6-5a98-4a32-9429-5f44bf442367,1,0,c0e01a15-6937-4331-bdd7-2f5a68d0d3dd,c0e01a15-6937-4331-bdd7-2f5a68d0d3dd,1,0,d065c02e-9991-468a-ae32-b8c29d078d03,d065c02e-9991-468a-ae32-b8c29d078d03,1,0,c509683e-eb13-4e1a-91ed-cd6982ec5001,c509683e-eb13-4e1a-91ed-cd6982ec5001,1,0,88bf6f58-7943-42c4-bc0f-56b991590026,88bf6f58-7943-42c4-bc0f-56b991590026,1,0,9aa0a0cb-9547-4868-9495-b00f3ecd2b3a,9aa0a0cb-9547-4868-9495-b00f3ecd2b3a,1,0,a9e31d90-fe65-47c3-8109-6e1eae862f53,a9e31d90-fe65-47c3-8109-6e1eae862f53,1,0,68500931-89e0-491e-aba8-b013c9e6f8c3,68500931-89e0-491e-aba8-b013c9e6f8c3,1,0,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,1,0,e678bb94-3cb1-4706-8e76-4fada4d5036c,e678bb94-3cb1-4706-8e76-4fada4d5036c,1,0,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,1,0,dc1d0f97-e2f3-4e1d-b21c-411b46e39848,dc1d0f97-e2f3-4e1d-b21c-411b46e39848,1,0,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,1,0,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,1,0,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,1,0,f987ca28-545b-4540-9e36-b0daa67dc3cb,f987ca28-545b-4540-9e36-b0daa67dc3cb,1,0,70f156d8-9cb4-442d-a36b-7a43d03bcd12,70f156d8-9cb4-442d-a36b-7a43d03bcd12,1,0,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,1,0,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,1,0,f0a6de82-45ab-4153-bccf-df82fc960aa1,f0a6de82-45ab-4153-bccf-df82fc960aa1,1,0,77adf47b-6015-46fc-9e29-f1c025ea0d81,77adf47b-6015-46fc-9e29-f1c025ea0d81,1,0,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,1,0,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,1,0,7ea3206a-2a16-460d-ad6d-849103f50bdb,7ea3206a-2a16-460d-ad6d-849103f50bdb,1,0,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,1,0,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,1,0,10302ca9-850c-4561-a774-d099c20b1919,10302ca9-850c-4561-a774-d099c20b1919,1,0,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,1,0,d693bfcf-e117-445b-b0e1-d895bc5227c4,d693bfcf-e117-445b-b0e1-d895bc5227c4,1,0,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,1,0,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,1,0,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,1,0,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,1,0,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,1,0,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,1,0,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0508e7ab-3dd9-42b4-9542-089ce0656bbb,1,0,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,1,0,17df1591-61b0-4204-8379-8d1f58445968,17df1591-61b0-4204-8379-8d1f58445968,1,0,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,1,0,fd5e72f7-3078-48eb-b01b-1800ffbd86d3,fd5e72f7-3078-48eb-b01b-1800ffbd86d3,1,0,e83ad33d-27df-4181-afd2-b7f416e6e705,e83ad33d-27df-4181-afd2-b7f416e6e705,1,0,ddeec7f4-8bd3-40af-bcac-00d18c0e6d6a,ddeec7f4-8bd3-40af-bcac-00d18c0e6d6a,1,0,f0438b0a-7916-4de4-a3a8-d43407c3295f,f0438b0a-7916-4de4-a3a8-d43407c3295f,1,0,3309648c-aae6-4684-ae8d-7ed636bc3468,3309648c-aae6-4684-ae8d-7ed636bc3468,1,0,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,1,0,f41e5a5b-394b-423a-bee5-ed4d1da0be71,f41e5a5b-394b-423a-bee5-ed4d1da0be71,1,0,23db175f-ddfb-4af7-9c0c-232b6adb7daf,23db175f-ddfb-4af7-9c0c-232b6adb7daf,1,0,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,1,0,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,1,0,4e309f26-35e8-49d9-bbd1-c7884e666dca,4e309f26-35e8-49d9-bbd1-c7884e666dca,1,0,84f05fe4-51d3-49a8-83e7-1cae2028147e,84f05fe4-51d3-49a8-83e7-1cae2028147e,1,0,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,1,0,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,1,0,c382ee3a-d0a8-4ed8-ac88-5558b631f448,c382ee3a-d0a8-4ed8-ac88-5558b631f448,1,0,3916ddbd-9023-42a4-849e-9cda6e591408,3916ddbd-9023-42a4-849e-9cda6e591408,1,0,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,1,0,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,1,0,8e36227c-c0aa-43c4-93ad-e78701248fb1,8e36227c-c0aa-43c4-93ad-e78701248fb1,1,0,f135b60e-6d28-4ba1-acd7-76090f14855d,f135b60e-6d28-4ba1-acd7-76090f14855d,1,0,5b105084-c4ba-4ff6-9196-8b3e3a9991e2,5b105084-c4ba-4ff6-9196-8b3e3a9991e2,1,0,f78ffd16-5bd4-421a-99af-9cf5f126d960,f78ffd16-5bd4-421a-99af-9cf5f126d960,1,0,2bd23dd2-8107-410f-8137-3d022546594b,2bd23dd2-8107-410f-8137-3d022546594b,1,0,3f09badb-70bd-4996-822f-2e2e9524f09d,3f09badb-70bd-4996-822f-2e2e9524f09d,1,0,aca89232-c531-47ca-a82e-e7bfadd56674,aca89232-c531-47ca-a82e-e7bfadd56674,1,0,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,1,0,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,1,0,52b45b3d-b01b-4aac-8a1e-e256957c39c3,52b45b3d-b01b-4aac-8a1e-e256957c39c3,1,0,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,1,0,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,1,0,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,1,0,a4878c33-f156-44cc-b114-5670403075eb,a4878c33-f156-44cc-b114-5670403075eb,1,0,0f1f8bc8-73ce-4384-9496-9bc2d0e212be,0f1f8bc8-73ce-4384-9496-9bc2d0e212be,1,0,695ad525-d1ba-42fb-adc1-6c44ac433c69,695ad525-d1ba-42fb-adc1-6c44ac433c69,1,0,026dadd4-a698-4d56-9b72-7ad9f224e502,026dadd4-a698-4d56-9b72-7ad9f224e502,1,0,d0b49fd9-4054-409f-97a0-a0811ba6c1ab,d0b49fd9-4054-409f-97a0-a0811ba6c1ab,1,0,c7130560-3953-496f-b1d0-cae676fcb5a9,c7130560-3953-496f-b1d0-cae676fcb5a9,1,0,b7d5c226-a787-45e5-b46b-c51b145fcf6a,b7d5c226-a787-45e5-b46b-c51b145fcf6a,1,0,8ca63a1d-4593-4f52-8b5e-4feb9f8487ca,8ca63a1d-4593-4f52-8b5e-4feb9f8487ca,1,0,1e4cc0d6-6e5e-4d16-ba44-060912ec292f,1e4cc0d6-6e5e-4d16-ba44-060912ec292f,1,0,e9311a22-56b5-4607-8eaa-52382ed040c3,e9311a22-56b5-4607-8eaa-52382ed040c3,1,0,dc7b8596-b2c0-415f-95d9-c0aaa96c5675,dc7b8596-b2c0-415f-95d9-c0aaa96c5675,1,0,87e6e315-01e0-41eb-8373-0a60635f2f7a,87e6e315-01e0-41eb-8373-0a60635f2f7a,1,0,9b77e99b-b1d3-4368-a671-59e0ebba3f0e,9b77e99b-b1d3-4368-a671-59e0ebba3f0e,1,0,ad847998-6e50-4160-81fc-3b58ad68f202,ad847998-6e50-4160-81fc-3b58ad68f202,1,0,b2b98bcf-41da-4643-a6dc-39e5379b99e5,b2b98bcf-41da-4643-a6dc-39e5379b99e5,1,0,fdd9fb90-f5f0-4c08-9341-4374403bc950,fdd9fb90-f5f0-4c08-9341-4374403bc950,1,0,0e2d814a-cc9d-4f91-910d-bda54779e298,0e2d814a-cc9d-4f91-910d-bda54779e298,1,0,8fdfef8d-502e-4d27-a539-e833048fa1eb,8fdfef8d-502e-4d27-a539-e833048fa1eb,1,0,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,1,0,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,1,0,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,1,0,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,1,0,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,1,0,0b303d25-e141-431f-828c-1778d3c247f6,0b303d25-e141-431f-828c-1778d3c247f6,1,0,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,1,0,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,1,0,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,1,0,976533bf-f162-42a1-a47e-6d681ee67b82,976533bf-f162-42a1-a47e-6d681ee67b82,1,0,19bc0dd8-9e6b-4855-bc42-b4e98443163f,19bc0dd8-9e6b-4855-bc42-b4e98443163f,1,0,a61e10af-eaba-4e7a-a641-65d77453a559,a61e10af-eaba-4e7a-a641-65d77453a559,1,0,edf81bbb-905a-474d-959a-db5629a8e104,edf81bbb-905a-474d-959a-db5629a8e104,1,0,4c8eb34e-0bb6-487a-a2ae-24083b1f6d2e,4c8eb34e-0bb6-487a-a2ae-24083b1f6d2e,1,0,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,1,0,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,1,0,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,1,0,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,1,0,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,1,0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,1,0,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1,0,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,1,0,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,1,0,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,1,0,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,1,0,c5b4d6e4-4c99-46cb-98cf-9a0024215a12,c5b4d6e4-4c99-46cb-98cf-9a0024215a12,1,0,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,1,0,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,1,0,e7903c89-5282-4771-8f9b-536694b7816e,e7903c89-5282-4771-8f9b-536694b7816e,1,0,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,1,0,f20a04a7-84fa-48e3-8ac5-28176c1fcada,f20a04a7-84fa-48e3-8ac5-28176c1fcada,1,0,b722d6e1-fd6f-4bb4-923d-01764393722d,b722d6e1-fd6f-4bb4-923d-01764393722d,1,0,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,1,0,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,1,0,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,1,0,4ad722ca-10fc-4a83-91c9-ef0012685f89,4ad722ca-10fc-4a83-91c9-ef0012685f89,1,0,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,1,0,3b033d29-0de7-49dd-90bc-f414b28426d7,3b033d29-0de7-49dd-90bc-f414b28426d7,1,0,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,1,0,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,1,0,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,1,0,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,1,0,6ddd9c1f-daff-494c-bd6f-741bd40881ab,6ddd9c1f-daff-494c-bd6f-741bd40881ab,1,0,683c1238-5828-4ab9-a89e-7a3b31fc7fa5,683c1238-5828-4ab9-a89e-7a3b31fc7fa5,1,0,7e9c0fa3-128e-4c3f-a1f7-63cb88a1c0b1,7e9c0fa3-128e-4c3f-a1f7-63cb88a1c0b1,1,0,2ca8bca9-813a-4833-8ef0-a5e83f91c10f,2ca8bca9-813a-4833-8ef0-a5e83f91c10f,1,0,59b34b58-6ac9-467e-963b-0cccbf098797,59b34b58-6ac9-467e-963b-0cccbf098797,1,0,313d9858-3995-4a4c-b2b0-15d2350417b4,313d9858-3995-4a4c-b2b0-15d2350417b4,1,0,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,1,0,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,1,0,2e4da82c-dddb-4462-b34f-6511cd2a8356,2e4da82c-dddb-4462-b34f-6511cd2a8356,1,0,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,1,0,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,1,0,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,1,0,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,1,0,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,1,0,514e95b8-2fdd-46f7-89bf-7d1a3d9d6e1b,514e95b8-2fdd-46f7-89bf-7d1a3d9d6e1b,1,0,6ca91336-5ccd-4d0b-9602-53f4925c492d,6ca91336-5ccd-4d0b-9602-53f4925c492d,1,0,d853dd5f-d987-4cdb-82b5-5e40a5a5e449,d853dd5f-d987-4cdb-82b5-5e40a5a5e449,1,0,dc16c546-eecc-49fe-a401-e2e3987faa1f,dc16c546-eecc-49fe-a401-e2e3987faa1f,1,0,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,1,0,4fc5c023-91e2-4b3e-8f61-4dfe3be78f3a,4fc5c023-91e2-4b3e-8f61-4dfe3be78f3a,1,0,646def82-bc88-4187-8be0-93938656a20f,646def82-bc88-4187-8be0-93938656a20f,1,0,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,1,0,a07971f5-ed6d-4829-a6bb-4b17cd5c6f6c,a07971f5-ed6d-4829-a6bb-4b17cd5c6f6c,1,0,9c4e28e8-7257-42ed-9fd8-793a0b8eb945,9c4e28e8-7257-42ed-9fd8-793a0b8eb945,1,0,9b7b6d0e-68d6-4a73-837c-2a6fd456b236,9b7b6d0e-68d6-4a73-837c-2a6fd456b236,1,0,7f6222c1-1a50-4565-b66b-bcb430674efc,7f6222c1-1a50-4565-b66b-bcb430674efc,1,0,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,1,0,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,1,0,2fb5650f-a5e5-4db8-a6a7-ca1101b41d3e,2fb5650f-a5e5-4db8-a6a7-ca1101b41d3e,1,0,b0fca543-6951-4233-bdf6-58082b22252a,b0fca543-6951-4233-bdf6-58082b22252a,1,0,4929cf90-54c6-412c-b2fa-dc8230fb8f85,4929cf90-54c6-412c-b2fa-dc8230fb8f85,1,0,52ae6431-afb3-4dea-b106-00e11b174ec7,52ae6431-afb3-4dea-b106-00e11b174ec7,1,0,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,1,0,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,1,0,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,1,0,b9166ea0-cce8-4f76-a9cb-a3d6eb4dfb95,b9166ea0-cce8-4f76-a9cb-a3d6eb4dfb95,1,0,8b83324c-e10e-49d1-99d7-5bc468c25975,8b83324c-e10e-49d1-99d7-5bc468c25975,1,0,ddb75923-27bf-4996-b024-4bc6eb0f59a7,ddb75923-27bf-4996-b024-4bc6eb0f59a7,1,0,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,1,0,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,1,0,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,1,0,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,1,0,3be0acc7-223a-46ec-9ea2-ec99b869fa78,3be0acc7-223a-46ec-9ea2-ec99b869fa78,1,0,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,1,0,517ac144-ecb9-4d14-83ea-01e58f0901fc,517ac144-ecb9-4d14-83ea-01e58f0901fc,1,0,61c1ff46-2a30-43bb-b1df-4db2271b1b12,61c1ff46-2a30-43bb-b1df-4db2271b1b12,1,0,cf7bc2ca-fb57-4b1a-98cf-f2caa7e611f5,cf7bc2ca-fb57-4b1a-98cf-f2caa7e611f5,1,0,486083d8-33b1-453f-9f05-5ff867e2f4ba,486083d8-33b1-453f-9f05-5ff867e2f4ba,1,0,e4f9d9f6-38d7-4056-a95a-987ad2da2211,e4f9d9f6-38d7-4056-a95a-987ad2da2211,1,0,22c21c2b-4297-43b2-88f0-9555d22f7a14,22c21c2b-4297-43b2-88f0-9555d22f7a14,1,0,734f61c4-5429-4a09-8697-8949ac5e6bd1,734f61c4-5429-4a09-8697-8949ac5e6bd1,1,0,d04e0e2d-0a5f-4866-b0b3-b582915db899,d04e0e2d-0a5f-4866-b0b3-b582915db899,1,0,19649d3f-52aa-4054-bb84-a6a11d212495,19649d3f-52aa-4054-bb84-a6a11d212495,1,0,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,1,0,58321939-f25a-456d-8dee-97e64743dc2e,58321939-f25a-456d-8dee-97e64743dc2e,1,0,416fba62-70c4-4f8c-b10b-56d47b27ca35,416fba62-70c4-4f8c-b10b-56d47b27ca35,1,0,ec48a164-bc30-4e36-a40a-a3cca07aea0d,ec48a164-bc30-4e36-a40a-a3cca07aea0d,1,0,3174d57f-c6a8-44dc-adc1-47e9a54c844d,3174d57f-c6a8-44dc-adc1-47e9a54c844d,1,0,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,1,0,b7736108-89bd-44eb-89c1-8a5a774058f1,b7736108-89bd-44eb-89c1-8a5a774058f1,1,0,e07841ef-8392-4ceb-936d-fd160b3b03cd,e07841ef-8392-4ceb-936d-fd160b3b03cd,1,0,eee66f49-8954-4674-9e02-6bff6c332d30,eee66f49-8954-4674-9e02-6bff6c332d30,1,0,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,1,0,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,1,0,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,1,0,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,1,0,e7415ada-dd47-41f5-b4d5-7e77d1adad33,e7415ada-dd47-41f5-b4d5-7e77d1adad33,1,0,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,1,0,79c15db6-6066-4fe5-b30e-3196b6ca3d66,79c15db6-6066-4fe5-b30e-3196b6ca3d66,1,0,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,1,0,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,1,0,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,1,0,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,1,0,40cefda6-490e-4962-9747-94b823ea4ed7,40cefda6-490e-4962-9747-94b823ea4ed7,1,0,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,1,0,7e8d7d4f-98f7-4c81-94b1-f2d552b1ae5d,7e8d7d4f-98f7-4c81-94b1-f2d552b1ae5d,1,0,6aa6d14f-cd6c-413a-864e-d847d9ce120b,6aa6d14f-cd6c-413a-864e-d847d9ce120b,1,0,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,1,0,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,1,0,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,1,0,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,1,0,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,1,0,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,1,0,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,1,0,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,1,0,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,1,0,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,1,0,26aea96b-20f8-4e35-b55f-4fe3602e6597,26aea96b-20f8-4e35-b55f-4fe3602e6597,1,0,a3a3a211-e361-4e41-a6f8-d731a366c163,a3a3a211-e361-4e41-a6f8-d731a366c163,1,0,c40d6fde-4d9a-4d9e-af86-42b7916e2abe,c40d6fde-4d9a-4d9e-af86-42b7916e2abe,1,0,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,1,0,ca01417c-0ffd-4e00-91e8-93cd305be82d,ca01417c-0ffd-4e00-91e8-93cd305be82d,1,0,933ae96b-c69e-4396-bbfb-0daa81e529a4,933ae96b-c69e-4396-bbfb-0daa81e529a4,1,0,e1823be2-b646-4a1a-a9a9-c925a12c0586,e1823be2-b646-4a1a-a9a9-c925a12c0586,1,0,909e56e3-981f-430b-b775-18c70b3549e7,909e56e3-981f-430b-b775-18c70b3549e7,1,0,e613a6aa-82cb-40fd-8f28-0a74fe21e6a6,e613a6aa-82cb-40fd-8f28-0a74fe21e6a6,1,0,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,1,0,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,1,0,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,1,0,22c60cbc-429f-40d9-bf8b-681b7786c41d,22c60cbc-429f-40d9-bf8b-681b7786c41d,1,0,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,1,0,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,1,0,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,1,0,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,1,0,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,1,0,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,1,0,4654d192-74bf-430f-abee-6f4dc431b182,4654d192-74bf-430f-abee-6f4dc431b182,1,0,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,1,0,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1,0,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,1,0,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,1,0,80eb2a49-8c0e-4f92-b99c-7fdadca03e7b,80eb2a49-8c0e-4f92-b99c-7fdadca03e7b,1,0,3f7ee937-d853-47b7-a1f5-d821208e3531,3f7ee937-d853-47b7-a1f5-d821208e3531,1,0,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,1,0,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,1,0,543c32a4-ad43-4f60-9b35-77081f841ad9,543c32a4-ad43-4f60-9b35-77081f841ad9,1,0,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,1,0,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,1,0,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,1,0,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,1,0,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,1,0,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,1,0,63066bee-d428-4e32-a032-f17475056537,63066bee-d428-4e32-a032-f17475056537,1,0,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,1,0,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,1,0,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,1,0,8c2a0f6b-492c-4c5a-97c5-da0d07f9d781,8c2a0f6b-492c-4c5a-97c5-da0d07f9d781,1,0,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,1,0,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,1,0,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,1,0,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,1,0,90032ffa-f117-4a34-82f8-cc7e5a22a542,90032ffa-f117-4a34-82f8-cc7e5a22a542,1,0,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,1,0,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,1,0,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,1,0,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,1,0,49e787c9-753a-468a-b8dd-2e970d9a1fed,49e787c9-753a-468a-b8dd-2e970d9a1fed,1,0,e871dea7-1953-4511-90b0-e0957afac4c0,e871dea7-1953-4511-90b0-e0957afac4c0,1,0,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,1,0,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,1,0,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,1,0,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,1,0,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,1,0,40ae107d-67a8-404c-adf9-1a760bba94ff,40ae107d-67a8-404c-adf9-1a760bba94ff,1,0,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,1,0,32b07bc0-3b2a-4244-93d4-49f172ad3ffb,32b07bc0-3b2a-4244-93d4-49f172ad3ffb,1,0,7abec628-65c3-4a44-ae11-99c2ffc592a3,7abec628-65c3-4a44-ae11-99c2ffc592a3,1,0,7b263bb6-4a6b-46c6-a1f0-48721ac1694b,7b263bb6-4a6b-46c6-a1f0-48721ac1694b,1,0,80b4e8c4-1fb3-4c3b-883f-93b5e213f46e,80b4e8c4-1fb3-4c3b-883f-93b5e213f46e,1,0,98061bca-6e72-479b-9125-a0f9452f4ed1,98061bca-6e72-479b-9125-a0f9452f4ed1,1,0,4d50203f-4577-4615-8001-4e4ac98fd392,4d50203f-4577-4615-8001-4e4ac98fd392,1,0,5c06642b-9c31-485b-87dd-48c6d7dbd30f,5c06642b-9c31-485b-87dd-48c6d7dbd30f,1,0,eeac3530-8897-4ab6-8fe8-09fcbfcd9fde,eeac3530-8897-4ab6-8fe8-09fcbfcd9fde,1,0,c3e2e470-f0bc-4fda-8c0e-4fb900e564a9,c3e2e470-f0bc-4fda-8c0e-4fb900e564a9,1,0,7fb0f8fd-4673-4f1d-a6ef-bc4ba9a2229f,7fb0f8fd-4673-4f1d-a6ef-bc4ba9a2229f,1,0,7172bed5-b12b-4e83-b15d-1d95b63a6272,7172bed5-b12b-4e83-b15d-1d95b63a6272,1,0,25d75a3c-b801-4b1e-aed8-90e667f36c67,25d75a3c-b801-4b1e-aed8-90e667f36c67,1,0,addb3aa1-a9d6-4d30-b5db-7f3ce46bc1b2,addb3aa1-a9d6-4d30-b5db-7f3ce46bc1b2,1,0,63ebf7fd-d514-4fce-abc1-fb3f253d01cd,63ebf7fd-d514-4fce-abc1-fb3f253d01cd,1,0,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,1,0,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,1,0,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,1,0,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,1,0,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,1,0,49e21b87-beae-4640-a497-ef468da0cbbc,49e21b87-beae-4640-a497-ef468da0cbbc,1,0,08c83b5e-08dd-425d-b024-62af684df926,08c83b5e-08dd-425d-b024-62af684df926,1,0,9e40a2ef-0c96-4455-8ed6-6e09011df3df,9e40a2ef-0c96-4455-8ed6-6e09011df3df,1,0,0de78690-2038-456b-b140-2b2b81f14e44,0de78690-2038-456b-b140-2b2b81f14e44,1,0,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,1,0,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,1,0,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,1,0,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,1,0,fa787228-aed5-4a16-b958-d102b78bf776,fa787228-aed5-4a16-b958-d102b78bf776,1,0,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,1,0,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,1,0,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,1,0,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,1,0,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,1,0,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,1,0,74b1237b-4a46-438d-9756-b564260df99d,74b1237b-4a46-438d-9756-b564260df99d,1,0,19decf0f-c24e-4551-b3d6-8ebd413cba78,19decf0f-c24e-4551-b3d6-8ebd413cba78,1,0,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,1,0,189383a5-0001-4427-9e00-18451e4bfb6e,189383a5-0001-4427-9e00-18451e4bfb6e,1,0,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,1,0,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,1,0,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,1,0,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,1,0,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,1,0,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,1,0,61cc4ec9-81e7-415b-8adf-3a5e61be505f,61cc4ec9-81e7-415b-8adf-3a5e61be505f,1,0,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,1,0,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,1,0,1ef34700-ce65-4985-b4d6-7133133ef32d,1ef34700-ce65-4985-b4d6-7133133ef32d,1,0,886d99ce-9ea2-4160-8d73-84df7197c030,886d99ce-9ea2-4160-8d73-84df7197c030,1,0,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,1,0,692d289b-8bd2-4b88-a8ea-0389c967df63,692d289b-8bd2-4b88-a8ea-0389c967df63,1,0,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,1,0,393074c4-0afc-4232-8101-11a4ea6ed28a,393074c4-0afc-4232-8101-11a4ea6ed28a,1,0,5ff23123-450c-40ae-9b79-c540da53e2a0,5ff23123-450c-40ae-9b79-c540da53e2a0,1,0,639339a1-7de5-4b05-adf3-f60e7edd922c,639339a1-7de5-4b05-adf3-f60e7edd922c,1,0,dea9af9d-13c0-40d4-a9b0-1908e0a58795,dea9af9d-13c0-40d4-a9b0-1908e0a58795,1,0,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,1,0,50ef6fc7-edfc-497b-ae9d-fb676934a631,50ef6fc7-edfc-497b-ae9d-fb676934a631,1,0,6f706d33-6fc6-4311-994f-6887c46f3c3b,6f706d33-6fc6-4311-994f-6887c46f3c3b,1,0,0e1a45b0-d95d-415f-b954-5689610aa393,0e1a45b0-d95d-415f-b954-5689610aa393,1,0,4736b3d3-f696-4bdd-b0e3-0884ea88f623,4736b3d3-f696-4bdd-b0e3-0884ea88f623,1,0,e3ac6312-4397-4012-a3d1-e35071d3fb6b,e3ac6312-4397-4012-a3d1-e35071d3fb6b,1,0,1c32ac14-580d-4ac2-939b-dc5ce64b4f7f,1c32ac14-580d-4ac2-939b-dc5ce64b4f7f,1,0,9162a85e-a385-42b0-b809-da916fce44b7,9162a85e-a385-42b0-b809-da916fce44b7,1,0,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,1,0,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,1,0,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,1,0,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,1,0,01a73950-3e8f-4f56-903f-af0d9574e72e,01a73950-3e8f-4f56-903f-af0d9574e72e,1,0,14bd0844-c829-4325-aa7f-0f417bf955dc,14bd0844-c829-4325-aa7f-0f417bf955dc,1,0,7f1cd658-ca10-49c6-80ef-b8956f3269ea,7f1cd658-ca10-49c6-80ef-b8956f3269ea,1,0,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,1,0,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,1,0,23d137ad-5b37-40a9-9c9f-3a2cecfb5abb,23d137ad-5b37-40a9-9c9f-3a2cecfb5abb,1,0,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,1,0,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,1,0,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,1,0,aea031ed-44c1-441b-8ed2-3a790c0263ab,aea031ed-44c1-441b-8ed2-3a790c0263ab,1,0,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,1,0,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,1,0,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,1,0,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,1,0,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,1,0,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,1,0,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,1,0,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,1,0,d2816f95-4809-4727-8ab6-8afd375f5a75,d2816f95-4809-4727-8ab6-8afd375f5a75,1,0,1d49b1bb-5f90-46e4-adcf-55ad46442648,1d49b1bb-5f90-46e4-adcf-55ad46442648,1,0,8d4685b7-ba72-4a28-8182-3104e1330567,8d4685b7-ba72-4a28-8182-3104e1330567,1,0,b91b93f0-29ca-452d-97be-7109fb248e22,b91b93f0-29ca-452d-97be-7109fb248e22,1,0,c1f7437a-b278-4941-b580-75c6693155d0,c1f7437a-b278-4941-b580-75c6693155d0,1,0,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,1,0,1bcbf91d-cbbc-4c47-86ed-b2cab62ccbe2,1bcbf91d-cbbc-4c47-86ed-b2cab62ccbe2,1,0,27aebf22-27fe-48d4-a6f4-ea4f6a6714bb,27aebf22-27fe-48d4-a6f4-ea4f6a6714bb,1,0,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,1,0,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,1,0,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,1,0,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,1,0,932656e8-4011-4250-844b-1fd47abda912,932656e8-4011-4250-844b-1fd47abda912,1,0,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,1,0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,1,0,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,1,0,fb7a9f90-15ef-4121-adff-cd40f699182b,fb7a9f90-15ef-4121-adff-cd40f699182b,1,0,0fa52339-2d11-4c81-92b9-aa27d116134d,0fa52339-2d11-4c81-92b9-aa27d116134d,1,0,26135cf4-fbe1-4f72-a1fd-69e85ec008a6,26135cf4-fbe1-4f72-a1fd-69e85ec008a6,1,0,d83b8068-512d-4c10-88b4-f9b3413a3a81,d83b8068-512d-4c10-88b4-f9b3413a3a81,1,0,b3bbcd07-a593-4591-9d7e-9a990c0acb62,b3bbcd07-a593-4591-9d7e-9a990c0acb62,1,0,b96df5bb-d78a-40ed-a62d-2bf796c59c62,b96df5bb-d78a-40ed-a62d-2bf796c59c62,1,0,073890e5-13eb-4c50-9a6e-3e5507b111b7,073890e5-13eb-4c50-9a6e-3e5507b111b7,1,0,34a4d235-dc56-47e5-91b6-0af887ccdf42,34a4d235-dc56-47e5-91b6-0af887ccdf42,1,0,d60e7164-c686-4c50-b831-a4ee4f505c35,d60e7164-c686-4c50-b831-a4ee4f505c35,1,0,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,1,0,2fad50a6-6a3e-4f87-ab84-907364427a63,2fad50a6-6a3e-4f87-ab84-907364427a63,1,0,e37aa075-143b-44e9-a2e2-77b3e0f76a77,e37aa075-143b-44e9-a2e2-77b3e0f76a77,1,0,1df47f0c-7935-481b-9dfb-1f660ea81a2b,1df47f0c-7935-481b-9dfb-1f660ea81a2b,1,0,258736e4-93c0-4a46-8caa-75be42c9f006,258736e4-93c0-4a46-8caa-75be42c9f006,1,0,3153b2b9-9e3e-4d6b-ab8c-5ccaac78a08a,3153b2b9-9e3e-4d6b-ab8c-5ccaac78a08a,1,0,56d0acf3-c888-4824-a6e4-27d61fa35415,56d0acf3-c888-4824-a6e4-27d61fa35415,1,0,588bd1b2-ee61-4a05-83cd-efb1b82ccb44,588bd1b2-ee61-4a05-83cd-efb1b82ccb44,1,0,439129dd-ad00-484c-b84a-fb325af979ed,439129dd-ad00-484c-b84a-fb325af979ed,1,0,dcae6376-f44c-421e-87f2-df83413c021e,dcae6376-f44c-421e-87f2-df83413c021e,1,0,dbdcdcab-4cd5-44af-b52c-6ce14a26ca9c,dbdcdcab-4cd5-44af-b52c-6ce14a26ca9c,1,0,151f2d0a-cc43-490d-ad7d-71390703aa72,151f2d0a-cc43-490d-ad7d-71390703aa72,1,0,2a515a4f-683b-4674-b097-62dd2d940c39,2a515a4f-683b-4674-b097-62dd2d940c39,1,0,d14058f5-dfd4-47eb-ae6d-01b7062f5940,d14058f5-dfd4-47eb-ae6d-01b7062f5940,1,0,90f358ae-9c80-40cf-8e8f-aa02d78a2cdb,90f358ae-9c80-40cf-8e8f-aa02d78a2cdb,1,0,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,1,0,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,1,0,fdb5b235-1978-4c2a-a03f-02341df00c3c,fdb5b235-1978-4c2a-a03f-02341df00c3c,1,0,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,1,0,917f8d67-2c28-4e02-9453-e1ef9297c9a6,917f8d67-2c28-4e02-9453-e1ef9297c9a6,1,0,38637f61-399a-4966-9e64-4751aecffa31,38637f61-399a-4966-9e64-4751aecffa31,1,0,0f38a18b-a36c-45fe-86c1-396634aaa5df,0f38a18b-a36c-45fe-86c1-396634aaa5df,1,0,f2b7b8d0-c0f7-46ba-907a-f8dfa76fc2da,f2b7b8d0-c0f7-46ba-907a-f8dfa76fc2da,1,0,a81c783d-2dea-4dde-9ca1-7b23d609eb22,a81c783d-2dea-4dde-9ca1-7b23d609eb22,1,0,137ec4ee-5053-47a7-8f5d-f6e63174608f,137ec4ee-5053-47a7-8f5d-f6e63174608f,1,0,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,1,0,4b4f5777-7c36-461e-9d3e-1baaf0497d62,4b4f5777-7c36-461e-9d3e-1baaf0497d62,1,0,8f4d5fc1-5c2c-4202-bb79-a180b03b3267,8f4d5fc1-5c2c-4202-bb79-a180b03b3267,1,0,da881296-fea4-444b-96b2-12cb69d588c7,da881296-fea4-444b-96b2-12cb69d588c7,1,0,03f9d2d0-eae4-4098-a70e-4eb569b11fd9,03f9d2d0-eae4-4098-a70e-4eb569b11fd9,1,0,30031e74-e58a-44a2-98dd-fc8c950831c4,30031e74-e58a-44a2-98dd-fc8c950831c4,1,0,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,1,0,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,1,0,3fc019d1-aec8-4835-96c5-3bbf43da0b94,3fc019d1-aec8-4835-96c5-3bbf43da0b94,1,0,5371672a-c8e0-4c12-834e-f23dd885b49a,5371672a-c8e0-4c12-834e-f23dd885b49a,1,0,8583ca82-a4f5-4f2a-9b9a-7807b4560e85,8583ca82-a4f5-4f2a-9b9a-7807b4560e85,1,0,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,1,0,1f927f76-5523-4880-9d26-d69a059f2b67,1f927f76-5523-4880-9d26-d69a059f2b67,1,0,27a9c1de-90a9-49f8-8b16-f7ef041ae1de,27a9c1de-90a9-49f8-8b16-f7ef041ae1de,1,0,5c45e96f-e245-4d16-9c47-836505582aef,5c45e96f-e245-4d16-9c47-836505582aef,1,0,2c04d747-c363-4218-92c9-5c83393e928b,2c04d747-c363-4218-92c9-5c83393e928b,1,0,093b8255-7ee5-4463-bd20-542b1d63e799,093b8255-7ee5-4463-bd20-542b1d63e799,1,0,5afb95e0-51a3-4a0f-bea7-e06716421974,5afb95e0-51a3-4a0f-bea7-e06716421974,1,0,2bce3fbe-436b-4a9f-8478-5436d61cd57c,2bce3fbe-436b-4a9f-8478-5436d61cd57c,1,0,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,1,0,3d02ca78-c396-4797-909c-e6b910c0ff66,3d02ca78-c396-4797-909c-e6b910c0ff66,1,0,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,1,0,b0b63551-4e83-4201-af9a-b4ab150c43a5,b0b63551-4e83-4201-af9a-b4ab150c43a5,1,0,ca85912b-87b4-481e-9184-017364b4603d,ca85912b-87b4-481e-9184-017364b4603d,1,0,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,1,0,80c18959-93f0-46e6-90fd-b564efcaa395,80c18959-93f0-46e6-90fd-b564efcaa395,1,0,c53b9e19-54e4-49b4-ac63-eaeee5c2e040,c53b9e19-54e4-49b4-ac63-eaeee5c2e040,1,0,47afc45d-719e-4740-a8aa-6157c4b1aea8,47afc45d-719e-4740-a8aa-6157c4b1aea8,1,0,baec0e60-c410-4b95-8126-f77fd06225b4,baec0e60-c410-4b95-8126-f77fd06225b4,1,0,2650db63-ca98-4a8a-8c36-165548aa5279,2650db63-ca98-4a8a-8c36-165548aa5279,1,0,6a8fdf0a-5dff-49e4-a423-fc80aceeee27,6a8fdf0a-5dff-49e4-a423-fc80aceeee27,1,0,4b9320f1-c7b1-4c08-a832-64ef108d0d6d,4b9320f1-c7b1-4c08-a832-64ef108d0d6d,1,0,e8c5c961-0633-438d-ba50-d2a774f6b167,e8c5c961-0633-438d-ba50-d2a774f6b167,1,0,48b57d1b-5246-4ce8-9e0f-e369e6add55c,48b57d1b-5246-4ce8-9e0f-e369e6add55c,1,0,b6d891e4-15d6-4b40-b474-a8a1d10231e8,b6d891e4-15d6-4b40-b474-a8a1d10231e8,1,0,e60a7341-3995-4d8c-a3c6-a23ea0137754,e60a7341-3995-4d8c-a3c6-a23ea0137754,1,0,a69525c7-27ff-48df-b26b-325ba580a53e,a69525c7-27ff-48df-b26b-325ba580a53e,1,0,24a7de1c-1c1f-4987-91ff-02f78f15dd9e,24a7de1c-1c1f-4987-91ff-02f78f15dd9e,1,0,8482b31d-0ffa-4a94-9be1-09db8399b70d,8482b31d-0ffa-4a94-9be1-09db8399b70d,1,0,77fe53c2-de9d-4483-97c9-f7d44e137d5e,77fe53c2-de9d-4483-97c9-f7d44e137d5e,1,0,ac7ea771-4b10-4d43-9c0a-9cd36e4c49a4,ac7ea771-4b10-4d43-9c0a-9cd36e4c49a4,1,0,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,1,0,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,1,0,e57f4619-b5ed-44de-a186-a13a3897731b,e57f4619-b5ed-44de-a186-a13a3897731b,1,0,3b78a9d0-7382-4115-a7dc-d06c9a1962d1,3b78a9d0-7382-4115-a7dc-d06c9a1962d1,1,0,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,1,0,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,1,0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,1,0,35dee1ee-ca9e-4b6b-9767-1107283f5a04,35dee1ee-ca9e-4b6b-9767-1107283f5a04,1,0,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,1,0,cb3a5c5b-7bdc-4e12-96f1-11b1213b6853,cb3a5c5b-7bdc-4e12-96f1-11b1213b6853,1,0,e6fe7103-4dfa-4302-a58e-ccd7fac19c9d,e6fe7103-4dfa-4302-a58e-ccd7fac19c9d,1,0,bb3a9973-67ce-479e-8668-c2f3bb20301e,bb3a9973-67ce-479e-8668-c2f3bb20301e,1,0,e5250dfe-dda2-4547-9b9e-2470ea1be1ab,e5250dfe-dda2-4547-9b9e-2470ea1be1ab,1,0,2c3fccc6-c4c0-49ec-bfc2-05ce05f27ea9,2c3fccc6-c4c0-49ec-bfc2-05ce05f27ea9,1,0,37169451-1464-4f24-8ca6-802963ffb636,37169451-1464-4f24-8ca6-802963ffb636,1,0,c3a958b1-590f-4418-a74f-5982b478cf52,c3a958b1-590f-4418-a74f-5982b478cf52,1,0,ef0e618d-0942-460a-ac65-9aca2fed976e,ef0e618d-0942-460a-ac65-9aca2fed976e,1,0,fd1ed7ec-d848-41cd-8ce3-2e5a682abcf0,fd1ed7ec-d848-41cd-8ce3-2e5a682abcf0,1,0,2ac8bd69-9fbf-4f15-b58d-397d9e903532,2ac8bd69-9fbf-4f15-b58d-397d9e903532,1,0,2ff35814-7eaa-4ae5-bbac-f46bebb36c9d,2ff35814-7eaa-4ae5-bbac-f46bebb36c9d,1,0,5b460b92-2c74-4f59-88b2-18d9aac42c04,5b460b92-2c74-4f59-88b2-18d9aac42c04,1,0,db05d35b-5f53-4c27-ba80-b477b9a98299,db05d35b-5f53-4c27-ba80-b477b9a98299,1,0,fa872ae1-b699-46fe-9d6a-e42e1388752b,fa872ae1-b699-46fe-9d6a-e42e1388752b,1,0,1acf34e6-c428-4130-82f0-5160dfcc0858,1acf34e6-c428-4130-82f0-5160dfcc0858,1,0,57046262-b9ce-4670-9cf5-6db9e58dd0d5,57046262-b9ce-4670-9cf5-6db9e58dd0d5,1,0,a9824176-36d5-4be5-9984-f4312ff48515,a9824176-36d5-4be5-9984-f4312ff48515,1,0,8e980ca0-1627-45e8-bd27-5dd1ac199459,8e980ca0-1627-45e8-bd27-5dd1ac199459,1,0,8b653beb-af9f-4f39-b691-ae14f80b7cd6,8b653beb-af9f-4f39-b691-ae14f80b7cd6,1,0,77559c11-713f-454d-aff4-56649e1350e9,77559c11-713f-454d-aff4-56649e1350e9,1,0,0c965703-c1d0-48b7-80f9-b8d869ff98f5,0c965703-c1d0-48b7-80f9-b8d869ff98f5,1,0,51f8d5ff-aec5-4c0a-ad02-df8c6cb1b4ad,51f8d5ff-aec5-4c0a-ad02-df8c6cb1b4ad,1,0,7ba42162-557b-4e34-8aca-0cdee8cb2452,7ba42162-557b-4e34-8aca-0cdee8cb2452,1,0,eee99b8e-29b6-4b7a-81f1-3d91d740c0d7,eee99b8e-29b6-4b7a-81f1-3d91d740c0d7,1,0,ad4f2d1f-1e6f-4f6a-8061-202c0e42a8e4,ad4f2d1f-1e6f-4f6a-8061-202c0e42a8e4,1,0,dd577924-c6cb-4aa9-9db5-366d8958d00f,dd577924-c6cb-4aa9-9db5-366d8958d00f,1,0,8ed8f72e-404a-4be4-a44d-ddebbad5f411,8ed8f72e-404a-4be4-a44d-ddebbad5f411,1,0,e919bc4c-86e6-44f6-be27-5a729b63d042,e919bc4c-86e6-44f6-be27-5a729b63d042,1,0,ec580e4f-1518-4923-a10e-bc1da8688b37,ec580e4f-1518-4923-a10e-bc1da8688b37,1,0,91c3902a-314f-4d40-8bcc-8dd131fed2f4,91c3902a-314f-4d40-8bcc-8dd131fed2f4,1,0,ae2b21c5-9349-49e8-9627-26f05c21f43a,ae2b21c5-9349-49e8-9627-26f05c21f43a,1,0,7e4c0b74-e807-4aa9-ad69-3c85b147bb61,7e4c0b74-e807-4aa9-ad69-3c85b147bb61,1,0,917a19d7-73db-4247-b892-397598d67879,917a19d7-73db-4247-b892-397598d67879,1,0,1f866dc3-a4bc-4e8d-96a3-a26ee073926f,1f866dc3-a4bc-4e8d-96a3-a26ee073926f,1,0,d8066600-c669-449d-a187-fdd3af8f7afa,d8066600-c669-449d-a187-fdd3af8f7afa,1,0,dadf86a6-c118-4827-b1b9-6cfee731242f,dadf86a6-c118-4827-b1b9-6cfee731242f,1,0,45bf7b20-f048-491a-a989-e50bea13d028,45bf7b20-f048-491a-a989-e50bea13d028,1,0,9ad3b432-5b49-44ee-9d8d-83c36458d927,9ad3b432-5b49-44ee-9d8d-83c36458d927,1,0,a9967bff-53b9-4295-a253-3647d956d3cb,a9967bff-53b9-4295-a253-3647d956d3cb,1,0,75f0fd5b-c594-4f3a-8ff2-3fdadf1dc96d,75f0fd5b-c594-4f3a-8ff2-3fdadf1dc96d,1,0,b8a31397-8974-44ec-92b0-7cbdc481cf7e,b8a31397-8974-44ec-92b0-7cbdc481cf7e,1,0,b29c7c0d-03eb-422b-a899-ba9a7eba99f6,b29c7c0d-03eb-422b-a899-ba9a7eba99f6,1,0,fb16c4d5-854c-4525-92be-b21fa2df5b0d,fb16c4d5-854c-4525-92be-b21fa2df5b0d,1,0,5771de21-2086-432b-ad91-de14a39bd5bc,5771de21-2086-432b-ad91-de14a39bd5bc,1,0,b15bcf3b-0228-4d02-8f20-cd6ba82f7585,b15bcf3b-0228-4d02-8f20-cd6ba82f7585,1,0,ed96fbfa-bda7-405c-9073-d0b6feffedad,ed96fbfa-bda7-405c-9073-d0b6feffedad,1,0,50c724cb-dde1-4313-9492-b1750bd0afc1,50c724cb-dde1-4313-9492-b1750bd0afc1,1,0,12901981-6106-4471-ab3a-e127c2bb4ebd,12901981-6106-4471-ab3a-e127c2bb4ebd,1,0,17ad1497-fa0e-469f-b2e2-b94a6f848ec5,17ad1497-fa0e-469f-b2e2-b94a6f848ec5,1,0,d5ea5dea-233d-4106-b9ba-f030d4f762ef,d5ea5dea-233d-4106-b9ba-f030d4f762ef,1,0,903af05e-5ac5-46aa-843b-d74f9e417c1d,903af05e-5ac5-46aa-843b-d74f9e417c1d,1,0,4dc4862e-74c3-469d-863b-09fdbe0d6be0,4dc4862e-74c3-469d-863b-09fdbe0d6be0,1,0,a344290a-c9be-47a7-95ad-ced1b52a0995,a344290a-c9be-47a7-95ad-ced1b52a0995,1,0,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,1,0,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,1,0,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,1,0,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,1,0,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,1,0,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,1,0,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,1,0,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,1,0,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,1,0,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,1,0,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,1,0,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,1,0,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,1,0,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,1,0,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,1,0,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,1,0,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,1,0,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,1,0,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,1,0,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,1,0,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,1,0,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,1,0,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,1,0,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,1,0,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,1,0,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,1,0,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,1,0,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,1,0,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,1,0,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,1,0,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,1,0,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,1,0,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,1,0,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,1,0,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,1,0,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,1,0,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,1,0,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,1,0,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,1,0,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,1,0,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,1,0,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,1,0,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,1,0,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,1,0,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,1,0,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,1,0,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,1,0,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,1,0,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,1,0,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,1,0,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,1,0,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,1,0,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,1,0,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,1,0,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,1,0,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,1,0,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,1,0,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,1,0,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,1,0,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,1,0,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,1,0,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,1,0,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,1,0,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,1,0,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,1,0,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,1,0,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,1,0,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,1,0,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,1,0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,1,0,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,1,0,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,1,0,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,1,0,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,1,0,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,1,0,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,1,0,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,1,0,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,1,0,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,1,0,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,1,0,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,1,0,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,1,0,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,1,0,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,1,0,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,1,0,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,1,0,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,1,0,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,1,0,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,1,0,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,1,0,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,1,0,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,1,0,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,1,0,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,1,0,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,1,0,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,1,0,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,1,0,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,1,0,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1,0,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,1,0,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,1,0,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,1,0,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,1,0,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,1,0,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,1,0,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,1,0,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,1,0,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,1,0,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,1,0,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,1,0,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,1,0,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,1,0,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,1,0,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,1,0,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,1,0,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,1,0,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,1,0,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,1,0,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,1,0,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,1,0,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,1,0,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,1,0,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,1,0,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,1,0,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,1,0,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,1,0,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,1,0,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,1,0,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,1,0,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,1,0,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,1,0,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,1,0,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,1,0,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,1,0,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,1,0,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,1,0,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,1,0,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,1,0,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,1,0,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,1,0,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,1,0,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,1,0,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,1,0,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,1,0,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,1,0,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,1,0,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,1,0,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,1,0,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,1,0,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,1,0,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,1,0,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,1,0,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,1,0,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,1,0,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,1,0,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,1,0,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,1,0,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,1,0,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,1,0,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,1,0,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,1,0,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,1,0,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,1,0,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,1,0,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,1,0,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,1,0,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,1,0,58589e42-9ff2-4ad4-bd98-a75ab6873625,58589e42-9ff2-4ad4-bd98-a75ab6873625,1,0,92255ded-6c44-43be-b0b1-fd03c2b78c8b,92255ded-6c44-43be-b0b1-fd03c2b78c8b,1,0,dfe6da42-f024-45c5-beea-ceccaf3a5faa,dfe6da42-f024-45c5-beea-ceccaf3a5faa,1,0,08f3e8f1-284c-4059-864a-42499d48596c,08f3e8f1-284c-4059-864a-42499d48596c,1,0,3d715c1b-9a5e-408d-98d6-5345d274144b,3d715c1b-9a5e-408d-98d6-5345d274144b,1,0,3f88bc69-e140-48b6-a2f9-24f6a391bff2,3f88bc69-e140-48b6-a2f9-24f6a391bff2,1,0,65eb5361-074c-451d-a5d8-d16b6ecccf82,65eb5361-074c-451d-a5d8-d16b6ecccf82,1,0,f7c8cab8-c634-4cf3-9183-c15c915231f8,f7c8cab8-c634-4cf3-9183-c15c915231f8,1,0,563a33a6-9eff-4ff1-9eba-dafc235d2ede,563a33a6-9eff-4ff1-9eba-dafc235d2ede,1,0,fbc21f7d-c272-41ea-b048-c5af294ab5ed,fbc21f7d-c272-41ea-b048-c5af294ab5ed,1,0,088c38fa-1c8f-42e7-aa72-5f5dd8cfc1c6,088c38fa-1c8f-42e7-aa72-5f5dd8cfc1c6,1,0,370f97ee-9aed-4a0a-aefc-647d973e6741,370f97ee-9aed-4a0a-aefc-647d973e6741,1,0,c586d28e-a3ec-4201-8ba0-d453bb7c5293,c586d28e-a3ec-4201-8ba0-d453bb7c5293,1,0,d84f12b0-6e01-4646-9abd-51578716433d,d84f12b0-6e01-4646-9abd-51578716433d,1,0,a4458c18-72eb-4fc0-8dc6-fccab93b0898,a4458c18-72eb-4fc0-8dc6-fccab93b0898,1,0,3a0ceb25-60f5-4fec-ab2e-e667939bfe21,3a0ceb25-60f5-4fec-ab2e-e667939bfe21,1,0,27db4549-df2f-4856-b07f-3c9399cdee9c,27db4549-df2f-4856-b07f-3c9399cdee9c,1,0,f667d49a-8077-450f-9442-2ea4fee7b62d,f667d49a-8077-450f-9442-2ea4fee7b62d,1,0,782b1285-9618-4ec9-b817-ce93e2d24d4d,782b1285-9618-4ec9-b817-ce93e2d24d4d,1,0,dd3e202f-6225-4061-a6ab-f29cd314ab08,dd3e202f-6225-4061-a6ab-f29cd314ab08,1,0,483b7600-e46f-4739-94c8-8637c62750a0,483b7600-e46f-4739-94c8-8637c62750a0,1,0,bdcf5f7a-2888-4143-b46d-1bf0dcc16872,bdcf5f7a-2888-4143-b46d-1bf0dcc16872,1,0,bce8a955-0a0e-4771-9763-4f5d319d9848,bce8a955-0a0e-4771-9763-4f5d319d9848,1,0,090c475c-fb33-46a9-a0ed-fb9d7def2ca5,090c475c-fb33-46a9-a0ed-fb9d7def2ca5,1,0,d10c3389-5bf0-4c73-ab92-786eb19d1676,d10c3389-5bf0-4c73-ab92-786eb19d1676,1,0,c824c20d-7503-4a77-81b8-2a68b20eab68,c824c20d-7503-4a77-81b8-2a68b20eab68,1,0,a0db92c6-b39e-41ab-82e3-161e32f67bda,a0db92c6-b39e-41ab-82e3-161e32f67bda,1,0,88f91187-65d3-4684-992d-20ca29d3755a,88f91187-65d3-4684-992d-20ca29d3755a,1,0,da725701-d4fb-40a4-a63b-feaa8559d8cf,da725701-d4fb-40a4-a63b-feaa8559d8cf,1,0,0a44cfc8-0b55-4aed-990f-e97831494a3c,0a44cfc8-0b55-4aed-990f-e97831494a3c,1,0,c9adbe7c-ca6e-4048-a498-9b48f75d9b45,c9adbe7c-ca6e-4048-a498-9b48f75d9b45,1,0,c7cb80d6-13d9-49af-acdd-6d10dffd1e17,c7cb80d6-13d9-49af-acdd-6d10dffd1e17,1,0,9a3f04d7-b956-4e87-ac28-63f7afba1771,9a3f04d7-b956-4e87-ac28-63f7afba1771,1,0,41b23a18-0c4e-455f-b249-2f2eba8119db,41b23a18-0c4e-455f-b249-2f2eba8119db,1,0,ff697cb8-ab88-4634-94e3-c06a401f71ff,ff697cb8-ab88-4634-94e3-c06a401f71ff,1,0,cf98131d-2b1a-4a07-a8dd-72af01934a8b,cf98131d-2b1a-4a07-a8dd-72af01934a8b,1,0,bef1eead-3f8b-48b7-99f3-46ba332fb60d,bef1eead-3f8b-48b7-99f3-46ba332fb60d,1,0,c1b3d4c8-8c53-4452-bec5-9742bb827d8f,c1b3d4c8-8c53-4452-bec5-9742bb827d8f,1,0,b6e1d584-6817-4f06-b5b2-57037a23ce6f,b6e1d584-6817-4f06-b5b2-57037a23ce6f,1,0,1b5d2ded-3f58-4b3e-8678-48191897e408,1b5d2ded-3f58-4b3e-8678-48191897e408,1,0,62fd5457-0cfd-4273-8965-4b5bf9170209,62fd5457-0cfd-4273-8965-4b5bf9170209,1,0,88701798-0c0e-4d33-a68b-3eddfc25d835,88701798-0c0e-4d33-a68b-3eddfc25d835,1,0,c0d704b5-32de-4bb8-9525-f7d1da828ae5,c0d704b5-32de-4bb8-9525-f7d1da828ae5,1,0,b5b5ee06-4de8-4776-98f0-3e8e1b31985a,b5b5ee06-4de8-4776-98f0-3e8e1b31985a,1,0,2f999502-68e5-4823-8f94-aec98b1a1b1d,2f999502-68e5-4823-8f94-aec98b1a1b1d,1,0,2d064409-7f2a-4d2e-9155-6b34e4373e89,2d064409-7f2a-4d2e-9155-6b34e4373e89,1,0,fc51a562-01bb-47c3-bac5-89f78f64a5f3,fc51a562-01bb-47c3-bac5-89f78f64a5f3,1,0,8a33a6cd-f56d-405b-9515-9fc04d30e27a,8a33a6cd-f56d-405b-9515-9fc04d30e27a,1,0,9b199470-723d-4b72-9fdc-2bed2b7bc483,9b199470-723d-4b72-9fdc-2bed2b7bc483,1,0,5bb9aff1-f4ee-4c02-8e3f-f070bfbb8339,5bb9aff1-f4ee-4c02-8e3f-f070bfbb8339,1,0,6a06f9ee-8832-4e9e-aeba-b4cb9573c048,6a06f9ee-8832-4e9e-aeba-b4cb9573c048,1,0,38fa770e-f38d-4fdf-bb7a-56cfe76a8ab2,38fa770e-f38d-4fdf-bb7a-56cfe76a8ab2,1,0,afc4ce2a-60b6-48d0-ada0-2f651d050888,afc4ce2a-60b6-48d0-ada0-2f651d050888,1,0,5f289266-fc3c-4345-b7ab-cf863e2a6ccd,5f289266-fc3c-4345-b7ab-cf863e2a6ccd,1,0,5932f0d8-9012-4382-8c72-b1a5f4fbc937,5932f0d8-9012-4382-8c72-b1a5f4fbc937,1,0,66f1ff23-8fec-4be4-914c-43b7dee1c2a2,66f1ff23-8fec-4be4-914c-43b7dee1c2a2,1,0,56c3471e-459a-46ba-96ea-9f872b3ad54a,56c3471e-459a-46ba-96ea-9f872b3ad54a,1,0,2113195b-1553-4137-9e45-2cc62c72ee47,2113195b-1553-4137-9e45-2cc62c72ee47,1,0,1250f5b1-c766-434c-8d28-69b74a536294,1250f5b1-c766-434c-8d28-69b74a536294,1,0,80bc9b8b-7b17-4dbb-bca6-8465d6b01e0b,80bc9b8b-7b17-4dbb-bca6-8465d6b01e0b,1,0,6327e23d-6070-4b64-81c6-0d1a33eaae93,6327e23d-6070-4b64-81c6-0d1a33eaae93,1,0,4d086a1f-34e0-43f9-9401-d82e55746a9d,4d086a1f-34e0-43f9-9401-d82e55746a9d,1,0,5a4c543a-27d5-423b-a4d0-3952ea2817af,5a4c543a-27d5-423b-a4d0-3952ea2817af,1,0,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,1,0,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,1,0,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,1,0,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,1,0,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,1,0,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,1,0,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,1,0,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,1,0,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,1,0,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,1,0,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,1,0,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,1,0,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,1,0,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,1,0,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,1,0,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,1,0,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,1,0,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,1,0,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,1,0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,1,0,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,1,0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,1,0,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,1,0,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,1,0,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,1,0,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,1,0,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,1,0,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,1,0,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,1,0,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,1,0,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,1,0,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,1,0,a9a51e79-4c79-4a43-931b-c0321c1cd65b,a9a51e79-4c79-4a43-931b-c0321c1cd65b,1,0,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,1,0,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,1,0,22f2696e-0ac1-4a74-bca9-987b267b2b59,22f2696e-0ac1-4a74-bca9-987b267b2b59,1,0,d705cacc-3485-46d7-9ff4-48c3c0757c81,d705cacc-3485-46d7-9ff4-48c3c0757c81,1,0,98f043ea-633c-4a03-a56f-efbc9e6ef288,98f043ea-633c-4a03-a56f-efbc9e6ef288,1,0,2033b92a-0750-478a-a12d-cf4f74d0a9da,2033b92a-0750-478a-a12d-cf4f74d0a9da,1,0,92fa2196-d8e5-45f9-9d2e-59d837b163ea,92fa2196-d8e5-45f9-9d2e-59d837b163ea,1,0,25dc2290-e283-4449-81c1-1ce15b58067f,25dc2290-e283-4449-81c1-1ce15b58067f,1,0,c534a865-a17f-41e7-88b9-c6af89c9d202,c534a865-a17f-41e7-88b9-c6af89c9d202,1,0,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,1,0,0127937c-94c0-43fe-9630-cc2ec6904ad8,0127937c-94c0-43fe-9630-cc2ec6904ad8,1,0,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,1,0,8df5b3cd-7788-4198-a530-e88be83f1cdf,8df5b3cd-7788-4198-a530-e88be83f1cdf,1,0,ffaeea66-66d5-4741-a9b5-875afebfce7f,ffaeea66-66d5-4741-a9b5-875afebfce7f,1,0,8f6b6576-1d21-46c1-905c-f1685f0eee7a,8f6b6576-1d21-46c1-905c-f1685f0eee7a,1,0,06827a85-a9d1-472e-8087-906ff94a4adc,06827a85-a9d1-472e-8087-906ff94a4adc,1,0,bb3954de-5eaa-4ec0-931b-a1a9f233c120,bb3954de-5eaa-4ec0-931b-a1a9f233c120,1,0,10689022-cbbb-4134-901f-1e778fac2693,10689022-cbbb-4134-901f-1e778fac2693,1,0,f14e363f-512b-4658-afb5-10c3be5ff870,f14e363f-512b-4658-afb5-10c3be5ff870,1,0,4d211427-4494-45d4-ae84-38235f35eaef,4d211427-4494-45d4-ae84-38235f35eaef,1,0,f7784993-d95c-4652-9894-3cf67aeabeb8,f7784993-d95c-4652-9894-3cf67aeabeb8,1,0,485d8b29-79b1-4798-a742-75546ddb7262,485d8b29-79b1-4798-a742-75546ddb7262,1,0,e248de85-8f76-4471-ab3d-d35514b69b78,e248de85-8f76-4471-ab3d-d35514b69b78,1,0,8928ce42-2b12-402f-8115-98b5655db556,8928ce42-2b12-402f-8115-98b5655db556,1,0,9b62c109-7b52-4803-83e6-a5413cd00984,9b62c109-7b52-4803-83e6-a5413cd00984,1,0,cddb4bb0-22ec-49ae-b332-62d7307b93fe,cddb4bb0-22ec-49ae-b332-62d7307b93fe,1,0,72876709-806e-4406-b9c1-b8117f4d750a,72876709-806e-4406-b9c1-b8117f4d750a,1,0,b1efafef-74cc-4d36-a32c-b472712f11f3,b1efafef-74cc-4d36-a32c-b472712f11f3,1,0,ceb05584-1ecd-4681-8575-c0452f95b685,ceb05584-1ecd-4681-8575-c0452f95b685,1,0,03d08c14-f814-4e12-8f96-020c36cca2bf,03d08c14-f814-4e12-8f96-020c36cca2bf,1,0,a1a7aab6-cf35-42ce-97bb-c112638a2748,a1a7aab6-cf35-42ce-97bb-c112638a2748,1,0,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,1,0,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,1,0,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,1,0,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,1,0,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,1,0,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,1,0,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,1,0,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,1,0,9f36d26e-aa71-44d5-ac27-9aaa643555c3,9f36d26e-aa71-44d5-ac27-9aaa643555c3,1,0,87b8b5d7-d3d6-450a-adb1-5c875257ec80,87b8b5d7-d3d6-450a-adb1-5c875257ec80,1,0,e3640efe-e46c-4588-b251-dda23bf0641d,e3640efe-e46c-4588-b251-dda23bf0641d,1,0,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,1,0,522a4bff-34d3-46b2-8c66-0b30d881a86e,522a4bff-34d3-46b2-8c66-0b30d881a86e,1,0,3d7908b1-bd82-475e-8488-fafcbe3458ee,3d7908b1-bd82-475e-8488-fafcbe3458ee,1,0,8a6cdb21-4eff-46dc-b928-738199f54581,8a6cdb21-4eff-46dc-b928-738199f54581,1,0,1bac040b-83e4-402f-a9bf-d6a7b10c91e0,1bac040b-83e4-402f-a9bf-d6a7b10c91e0,1,0,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,1,0,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,1,0,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,1,0,0f9c08c2-e7fa-4ea0-a935-f927feb01131,0f9c08c2-e7fa-4ea0-a935-f927feb01131,1,0,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,1,0,62a6b1c9-8288-4fa1-a17d-241b85a5e4b0,62a6b1c9-8288-4fa1-a17d-241b85a5e4b0,1,0,57069b56-f732-41c0-9a75-cbdb1e88556c,57069b56-f732-41c0-9a75-cbdb1e88556c,1,0,cf80ff0d-9add-4fa5-bba2-00d43fce5ed8,cf80ff0d-9add-4fa5-bba2-00d43fce5ed8,1,0,d927f1f0-df5f-44a1-bbfd-152ebf1559dd,d927f1f0-df5f-44a1-bbfd-152ebf1559dd,1,0,7ce7aec1-fa24-4dd7-8754-8124e78521bf,7ce7aec1-fa24-4dd7-8754-8124e78521bf,1,0,8b115575-9d8b-42f8-9ec8-0825a4397c7f,8b115575-9d8b-42f8-9ec8-0825a4397c7f,1,0,40fa5847-28f0-41ff-bfb8-ec33c8626d33,40fa5847-28f0-41ff-bfb8-ec33c8626d33,1,0,6d042890-27b2-4efc-935e-8190bb57c037,6d042890-27b2-4efc-935e-8190bb57c037,1,0,23e79add-7f1c-422a-9df1-8f76ebf805df,23e79add-7f1c-422a-9df1-8f76ebf805df,1,0,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,1,0,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,1,0,5299d417-02c6-4f73-9c0c-8c22d267ab99,5299d417-02c6-4f73-9c0c-8c22d267ab99,1,0,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,1,0,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,1,0,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,1,0,5dcd8e28-b058-405a-bac4-defab7d4b789,5dcd8e28-b058-405a-bac4-defab7d4b789,1,0,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,1,0,4a2c2478-03ad-4521-9356-09ee07fce972,4a2c2478-03ad-4521-9356-09ee07fce972,1,0,077af11c-fd3c-4e87-b169-5f3137464f77,077af11c-fd3c-4e87-b169-5f3137464f77,1,0,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,1,0,da8f7f30-eb80-44db-a451-348306c90cd8,da8f7f30-eb80-44db-a451-348306c90cd8,1,0,879304f7-9507-4fb8-9177-355428d6bba9,879304f7-9507-4fb8-9177-355428d6bba9,1,0,efb50581-cc7e-47ac-bfa2-86da2860bf1d,efb50581-cc7e-47ac-bfa2-86da2860bf1d,1,0,fd07f403-1116-4102-a1bf-35abb03ad493,fd07f403-1116-4102-a1bf-35abb03ad493,1,0,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,1,0,0722315c-9217-4ecf-80ff-d1ee89f84a53,0722315c-9217-4ecf-80ff-d1ee89f84a53,1,0,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,1,0,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,1,0,a2f943a4-05a3-4eb6-9a10-74b6859469a6,a2f943a4-05a3-4eb6-9a10-74b6859469a6,1,0,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,1,0,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,1,0,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,1,0,747f1c23-3c03-456e-864e-fc714484b7d6,747f1c23-3c03-456e-864e-fc714484b7d6,1,0,9847676d-f44d-46a0-83e2-4a43a835caf8,9847676d-f44d-46a0-83e2-4a43a835caf8,1,0,43c18cae-21a9-413b-a350-d5cf826980f0,43c18cae-21a9-413b-a350-d5cf826980f0,1,0,16773cdb-b979-42d5-a2a5-d4b79e8737bd,16773cdb-b979-42d5-a2a5-d4b79e8737bd,1,0,c28a190a-f487-4e99-b8f8-6928268086f8,c28a190a-f487-4e99-b8f8-6928268086f8,1,0,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,1,0,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,1,0,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,1,0,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,1,0,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,1,0,f321e378-6d50-4567-8434-813f367d3a65,f321e378-6d50-4567-8434-813f367d3a65,1,0,27246fd8-a8a3-4244-b49a-c0372a812167,27246fd8-a8a3-4244-b49a-c0372a812167,1,0,7d91ff3c-1ec2-41d0-9d38-fa8f8534c55c,7d91ff3c-1ec2-41d0-9d38-fa8f8534c55c,1,0,6da15c1d-e144-472e-9a3a-2797c7df16e4,6da15c1d-e144-472e-9a3a-2797c7df16e4,1,0,350a7b29-4ba3-43c4-b77d-47085f53d760,350a7b29-4ba3-43c4-b77d-47085f53d760,1,0,a151715d-c89e-4e4c-b8fd-d7d6ad71e603,a151715d-c89e-4e4c-b8fd-d7d6ad71e603,1,0,f6d6f1b9-3956-4fdb-bbb0-5d81f083a072,f6d6f1b9-3956-4fdb-bbb0-5d81f083a072,1,0,a5dd4200-0f25-452d-9014-3b1506c31557,a5dd4200-0f25-452d-9014-3b1506c31557,1,0,c48c091c-0d46-4d1f-bc84-72b0537c7ec2,c48c091c-0d46-4d1f-bc84-72b0537c7ec2,1,0,122a94c7-bb89-4f11-b583-b56808c1df47,122a94c7-bb89-4f11-b583-b56808c1df47,1,0,f4371f32-95a5-40f4-bc5e-a5b9a12a86eb,f4371f32-95a5-40f4-bc5e-a5b9a12a86eb,1,0,5f434c45-a5ff-4a07-8662-6a592298c7e9,5f434c45-a5ff-4a07-8662-6a592298c7e9,1,0,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,1,0,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,1,0,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,1,0,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,1,0,5d338e31-a56b-45f0-8a62-0270ca543f6a,5d338e31-a56b-45f0-8a62-0270ca543f6a,1,0,afd8251f-548b-4bb6-8ad0-4f412bec7cb6,afd8251f-548b-4bb6-8ad0-4f412bec7cb6,1,0,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,1,0,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,1,0,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,1,0,c11d967b-1250-4345-90b0-011a96c5ae5e,c11d967b-1250-4345-90b0-011a96c5ae5e,1,0,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,1,0,24eed105-f612-4340-ad79-388a7b39b58c,24eed105-f612-4340-ad79-388a7b39b58c,1,0,8e4bd2ac-d555-490e-87ab-1b0cdd6f72e9,8e4bd2ac-d555-490e-87ab-1b0cdd6f72e9,1,0,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,1,0,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,1,0,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,1,0,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,1,0,65678df4-a323-451f-98ba-305a74fc5805,65678df4-a323-451f-98ba-305a74fc5805,1,0,6a2add61-edb7-4561-bae9-06b3741e7726,6a2add61-edb7-4561-bae9-06b3741e7726,1,0,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,1,0,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,1,0,b572b1d0-4404-421c-9950-1cc1342ca5f3,b572b1d0-4404-421c-9950-1cc1342ca5f3,1,0,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,1,0,02082174-7276-4256-b9bb-9872065a01c4,02082174-7276-4256-b9bb-9872065a01c4,1,0,ddaba839-5ed2-4707-8cb8-ebd5784f642a,ddaba839-5ed2-4707-8cb8-ebd5784f642a,1,0,86c679c0-3531-4622-9a1f-3d9d6ccdd431,86c679c0-3531-4622-9a1f-3d9d6ccdd431,1,0,cba9e94c-e328-42ef-bcd0-92db3f0c048b,cba9e94c-e328-42ef-bcd0-92db3f0c048b,1,0,b1230b96-f4c8-4311-bfc0-df33bcc41394,b1230b96-f4c8-4311-bfc0-df33bcc41394,1,0,670c62c1-1a33-4dec-9540-5b4c1fe29074,670c62c1-1a33-4dec-9540-5b4c1fe29074,1,0,cc664d81-d0af-4d25-ae29-64f422e51bf2,cc664d81-d0af-4d25-ae29-64f422e51bf2,1,0,ae3876e2-bd06-415b-9d9a-b77d787be09e,ae3876e2-bd06-415b-9d9a-b77d787be09e,1,0,0cf49621-afc5-4c8d-a1b5-f8c30db9f415,0cf49621-afc5-4c8d-a1b5-f8c30db9f415,1,0,4718392b-477c-496b-9d28-ddbdaa7a04f2,4718392b-477c-496b-9d28-ddbdaa7a04f2,1,0,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,1,0,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,1,0,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,1,0,1260b5dd-0a74-43df-bdbb-215b253da28e,1260b5dd-0a74-43df-bdbb-215b253da28e,1,0,e37a7cf1-a7b5-4b6e-b818-0915598c8505,e37a7cf1-a7b5-4b6e-b818-0915598c8505,1,0,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,1,0,f3abaf8e-0230-43db-aaf0-716fc02047eb,f3abaf8e-0230-43db-aaf0-716fc02047eb,1,0,b76c3bd6-924a-4378-acbe-6f17232b201b,b76c3bd6-924a-4378-acbe-6f17232b201b,1,0,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,1,0,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,1,0,45eec13d-e5e5-4a2e-ad6c-2780bde15ef2,45eec13d-e5e5-4a2e-ad6c-2780bde15ef2,1,0,3b1d0974-6031-4841-b632-aadd4ff13b2c,3b1d0974-6031-4841-b632-aadd4ff13b2c,1,0,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,1,0,9d358304-3fd0-4ec6-9400-cc498ff2f751,9d358304-3fd0-4ec6-9400-cc498ff2f751,1,0,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,1,0,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,1,0,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,1,0,74067eee-6cd4-4ae3-becc-457ecb51dc9a,74067eee-6cd4-4ae3-becc-457ecb51dc9a,1,0,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,1,0,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,1,0,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,1,0,077e2c42-bc3b-48bf-bbc2-41effe20f613,077e2c42-bc3b-48bf-bbc2-41effe20f613,1,0,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,1,0,f5bb88eb-c239-4ae3-a297-dfbbd679e008,f5bb88eb-c239-4ae3-a297-dfbbd679e008,1,0,c888ccc1-9116-4b88-b950-aeabd54191c0,c888ccc1-9116-4b88-b950-aeabd54191c0,1,0,ff4d92a7-5fa3-4a46-a6f5-47c3952edb22,ff4d92a7-5fa3-4a46-a6f5-47c3952edb22,1,0,bb350b39-1f4d-460a-98c9-8d2308cf22f0,bb350b39-1f4d-460a-98c9-8d2308cf22f0,1,0,eaeb5aa8-8edf-4f74-8011-2d476f543bf6,eaeb5aa8-8edf-4f74-8011-2d476f543bf6,1,0,343b979a-97e3-4eac-a314-3bd3eea9c15c,343b979a-97e3-4eac-a314-3bd3eea9c15c,1,0,b2f17ef1-3f6f-4029-b3e2-28d6b79c5b76,b2f17ef1-3f6f-4029-b3e2-28d6b79c5b76,1,0,7adced5f-3a5f-419a-926c-0452aad86c86,7adced5f-3a5f-419a-926c-0452aad86c86,1,0,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,1,0,7433b2a9-f634-4af7-ac85-6aa1280ea239,7433b2a9-f634-4af7-ac85-6aa1280ea239,1,0,9f32e85c-2ed6-41db-b0ec-6d8596940e80,9f32e85c-2ed6-41db-b0ec-6d8596940e80,1,0,f259b6b4-d582-429f-a16f-027a6bcb7438,f259b6b4-d582-429f-a16f-027a6bcb7438,1,0,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,1,0,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,1,0,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,1,0,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,1,0,f4afd271-64de-4a6d-b0ef-f27db4d66d32,f4afd271-64de-4a6d-b0ef-f27db4d66d32,1,0,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,1,0,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,1,0,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,1,0,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,1,0,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,1,0,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,1,0,2181d197-028b-40b2-bf02-3d85dad1af30,2181d197-028b-40b2-bf02-3d85dad1af30,1,0,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,1,0,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,1,0,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,1,0,aa0c32ae-da52-4df9-8b77-99ea31f8df81,aa0c32ae-da52-4df9-8b77-99ea31f8df81,1,0,d7dcd391-3a0e-4aa9-9b53-467a1de67593,d7dcd391-3a0e-4aa9-9b53-467a1de67593,1,0,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,1,0,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,1,0,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,1,0,0248a6c4-7ce5-4898-bb1d-9ad9509e6795,0248a6c4-7ce5-4898-bb1d-9ad9509e6795,1,0,6a5b9e7f-c368-40d8-812a-64f68ea1ef9d,6a5b9e7f-c368-40d8-812a-64f68ea1ef9d,1,0,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,1,0,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,1,0,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,1,0,00e48a23-eb5b-4a29-b36c-218ab9760f23,00e48a23-eb5b-4a29-b36c-218ab9760f23,1,0,bc039475-c872-4b99-9248-c74aae75f0e1,bc039475-c872-4b99-9248-c74aae75f0e1,1,0,331db120-ba88-4eb3-a8ec-10691be82e2d,331db120-ba88-4eb3-a8ec-10691be82e2d,1,0,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,1,0,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,1,0,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,1,0,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,1,0,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,1,0,b0e0a273-2613-4d5e-9901-df7893af4c74,b0e0a273-2613-4d5e-9901-df7893af4c74,1,0,4ad1ef06-d8b4-46da-b536-d23c40e85497,4ad1ef06-d8b4-46da-b536-d23c40e85497,1,0,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,1,0,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,1,0,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,1,0,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,1,0,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,1,0,c0bc4cc4-b5ca-47c2-b589-c0d25bb63f1e,c0bc4cc4-b5ca-47c2-b589-c0d25bb63f1e,1,0,35823167-b658-4563-8d01-b0aab05aa619,35823167-b658-4563-8d01-b0aab05aa619,1,0,9ee03c48-c338-4655-9095-d490231df2a3,9ee03c48-c338-4655-9095-d490231df2a3,1,0,94928ba3-6bbf-4bd3-94cf-9c51b50e005f,94928ba3-6bbf-4bd3-94cf-9c51b50e005f,1,0,3924c17c-6ee3-4406-8023-0a79a242e389,3924c17c-6ee3-4406-8023-0a79a242e389,1,0,84a159ed-bc5f-4497-94d1-94b187b0bffe,84a159ed-bc5f-4497-94d1-94b187b0bffe,1,0,0a126b0d-28c8-4ed4-836f-e39e17693ad0,0a126b0d-28c8-4ed4-836f-e39e17693ad0,1,0,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,1,0,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,1,0,f95adb50-fa0b-434c-93dd-b7fd211220b7,f95adb50-fa0b-434c-93dd-b7fd211220b7,1,0,e590825f-10c6-4fdd-98cd-3da01da2ed4f,e590825f-10c6-4fdd-98cd-3da01da2ed4f,1,0,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,1,0,b938ff17-e31c-4762-a96f-e1288f746a1d,b938ff17-e31c-4762-a96f-e1288f746a1d,1,0,d6a5083f-ca9a-42ed-b202-2983e4ba21c2,d6a5083f-ca9a-42ed-b202-2983e4ba21c2,1,0,bd69bf55-dee0-4553-8f90-5fd025c0f773,bd69bf55-dee0-4553-8f90-5fd025c0f773,1,0,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,1,0,bea697f4-46a8-4698-ac60-64326e442f2b,bea697f4-46a8-4698-ac60-64326e442f2b,1,0,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,1,0,f415296e-fceb-4835-abe9-17bb17a5d5e5,f415296e-fceb-4835-abe9-17bb17a5d5e5,1,0,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,1,0,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,1,0,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,1,0,c8679d82-075c-4556-8231-c004d144fe61,c8679d82-075c-4556-8231-c004d144fe61,1,0,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,1,0,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,1,0,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,1,0,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,1,0,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,1,0,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,1,0,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,1,0,b0ca1b85-e1de-4b7c-8261-7f9e8a6a72eb,b0ca1b85-e1de-4b7c-8261-7f9e8a6a72eb,1,0,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,1,0,91d7687b-7627-473f-a08d-433f9d385107,91d7687b-7627-473f-a08d-433f9d385107,1,0,2276a1d4-b4d9-4643-8342-36143ce4eb26,2276a1d4-b4d9-4643-8342-36143ce4eb26,1,0,83db1b00-e9e3-41da-8a59-47589dcfd618,83db1b00-e9e3-41da-8a59-47589dcfd618,1,0,91d2d798-1498-4c52-aa7b-99db4b992876,91d2d798-1498-4c52-aa7b-99db4b992876,1,0,e85a03d3-e7c7-4058-992a-515a557d9e52,e85a03d3-e7c7-4058-992a-515a557d9e52,1,0,195ea1f8-3e38-4254-a33d-c87424b8f7dc,195ea1f8-3e38-4254-a33d-c87424b8f7dc,1,0,d3a1d247-8f4a-45af-9861-7e313a100209,d3a1d247-8f4a-45af-9861-7e313a100209,1,0,837f27c1-26d7-4f24-a691-55dd9ed04ec5,837f27c1-26d7-4f24-a691-55dd9ed04ec5,1,0,9e2ddfbb-8d6b-4b82-8a2b-62c2ea990b10,9e2ddfbb-8d6b-4b82-8a2b-62c2ea990b10,1,0,5005655f-22b2-49e6-be4f-b15d768d10b2,5005655f-22b2-49e6-be4f-b15d768d10b2,1,0,208040c8-e98b-4c15-a2ec-38d44bfcfa6c,208040c8-e98b-4c15-a2ec-38d44bfcfa6c,1,0,f6811ee2-769e-488d-9ca0-70f1fe521ca9,f6811ee2-769e-488d-9ca0-70f1fe521ca9,1,0,83385f31-2cdf-44a1-85c3-461e4ad5fd45,83385f31-2cdf-44a1-85c3-461e4ad5fd45,1,0,b55b06db-604e-4fb9-9253-638c747bd8f9,b55b06db-604e-4fb9-9253-638c747bd8f9,1,0,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,1,0,9aa0c1ef-45b4-405b-ad6f-ebcf876e6318,9aa0c1ef-45b4-405b-ad6f-ebcf876e6318,1,0,deb69010-80b0-4e28-acc7-8c50e8e6f873,deb69010-80b0-4e28-acc7-8c50e8e6f873,1,0,1a9177fe-6699-42b3-9588-eed9c6008c2d,1a9177fe-6699-42b3-9588-eed9c6008c2d,1,0,93848cf6-7a87-42c7-b685-0bc418a2037c,93848cf6-7a87-42c7-b685-0bc418a2037c,1,0,4f49412a-fbbe-4ee1-9c2b-affe5266bba7,4f49412a-fbbe-4ee1-9c2b-affe5266bba7,1,0,ae698468-f42a-4400-aee6-fd849740e634,ae698468-f42a-4400-aee6-fd849740e634,1,0,0b88b50d-6aa1-4364-82bd-1c0c0da93a58,0b88b50d-6aa1-4364-82bd-1c0c0da93a58,1,0,ddec19a2-2a76-4eeb-9cbb-6bc2b4a32bc8,ddec19a2-2a76-4eeb-9cbb-6bc2b4a32bc8,1,0,6438435e-97cc-4bd2-98dc-e21cee55bb0f,6438435e-97cc-4bd2-98dc-e21cee55bb0f,1,0,31b93291-a58f-4176-8318-58200e8bc56e,31b93291-a58f-4176-8318-58200e8bc56e,1,0,293be1bc-49cb-4a99-add8-2a3a46829718,293be1bc-49cb-4a99-add8-2a3a46829718,1,0,00579e31-e97d-4d79-ba25-b8d500a17e7f,00579e31-e97d-4d79-ba25-b8d500a17e7f,1,0,5001bea4-c8f9-4950-9eda-d33125e3bb46,5001bea4-c8f9-4950-9eda-d33125e3bb46,1,0,4ac6d0dd-0007-46b8-bfcc-93c0f85b6b85,4ac6d0dd-0007-46b8-bfcc-93c0f85b6b85,1,0,bc2dd611-b589-4519-b274-40db5c66b378,bc2dd611-b589-4519-b274-40db5c66b378,1,0,e815010d-e03d-46e4-b482-c1556902cc26,e815010d-e03d-46e4-b482-c1556902cc26,1,0,d4ab930a-ddaa-4552-afed-2618af822365,d4ab930a-ddaa-4552-afed-2618af822365,1,0,2388e3f4-b23b-488f-9ea5-d9434efca195,2388e3f4-b23b-488f-9ea5-d9434efca195,1,0,dd03e170-4186-495b-ae1c-fc66385d7ccf,dd03e170-4186-495b-ae1c-fc66385d7ccf,1,0,81fbb02e-76b2-4bca-bb3b-871e4e969a3c,81fbb02e-76b2-4bca-bb3b-871e4e969a3c,1,0,cdef5df6-f3a1-4950-b197-4f375914f885,cdef5df6-f3a1-4950-b197-4f375914f885,1,0,c1caff49-dc4b-4b3e-be47-122ea8b70416,c1caff49-dc4b-4b3e-be47-122ea8b70416,1,0,a1185a4c-7351-48b0-b662-61f61a1ad715,a1185a4c-7351-48b0-b662-61f61a1ad715,1,0,bf5faaef-3a03-40bc-8d3a-644c0874b9ce,bf5faaef-3a03-40bc-8d3a-644c0874b9ce,1,0,4ee0c7a4-cc26-438d-8908-f6a900c99d8b,4ee0c7a4-cc26-438d-8908-f6a900c99d8b,1,0,71d03545-df45-4c70-aa0d-3b916f2a9041,71d03545-df45-4c70-aa0d-3b916f2a9041,1,0,da9b0d3d-27dd-4a85-b0df-ec2f54d884f6,da9b0d3d-27dd-4a85-b0df-ec2f54d884f6,1,0,28a25822-2306-409a-a7c8-6f7e42bf25e8,28a25822-2306-409a-a7c8-6f7e42bf25e8,1,0,89cb31da-a980-4207-a537-85cd47f08d32,89cb31da-a980-4207-a537-85cd47f08d32,1,0,a45fa0c3-c363-4465-861f-13cedfeb79dd,a45fa0c3-c363-4465-861f-13cedfeb79dd,1,0,a72517c3-8c91-4e40-81ac-83c762789e87,a72517c3-8c91-4e40-81ac-83c762789e87,1,0,0233b335-7e26-4661-9850-8ab09d3178e3,0233b335-7e26-4661-9850-8ab09d3178e3,1,0,d942d536-5d01-4571-b910-abd973996a38,d942d536-5d01-4571-b910-abd973996a38,1,0,b82a7103-b872-49c3-b632-81d5a0051136,b82a7103-b872-49c3-b632-81d5a0051136,1,0,4b17ac35-78cb-4d01-bb08-659c0a93e8ce,4b17ac35-78cb-4d01-bb08-659c0a93e8ce,1,0,20c2053c-8ebd-4c07-8d95-956b424d047c,20c2053c-8ebd-4c07-8d95-956b424d047c,1,0,7c9dee81-7e85-4d26-84c3-66b0d770ac5a,7c9dee81-7e85-4d26-84c3-66b0d770ac5a,1,0,08fe5e70-ac6b-427a-b6f2-0e2f7848fa6b,08fe5e70-ac6b-427a-b6f2-0e2f7848fa6b,1,0,bef6081e-f377-41d6-83a1-b0e218a3fb46,bef6081e-f377-41d6-83a1-b0e218a3fb46,1,0,9b67bfd5-ef23-4205-b7ba-9466517e9999,9b67bfd5-ef23-4205-b7ba-9466517e9999,1,0,20082776-ce24-41c5-ae11-6fa9bc54db59,20082776-ce24-41c5-ae11-6fa9bc54db59,1,0,ea2c4c8e-23cc-4884-812e-1e959da48afc,ea2c4c8e-23cc-4884-812e-1e959da48afc,1,0,c61e4c12-178d-47aa-a070-333fe5450168,c61e4c12-178d-47aa-a070-333fe5450168,1,0,9474b4f1-b1bb-4fcf-acdb-a149a09b8490,9474b4f1-b1bb-4fcf-acdb-a149a09b8490,1,0,63fd620c-59a5-493c-a39e-457fad6fe35f,63fd620c-59a5-493c-a39e-457fad6fe35f,1,0,46b0a5b3-1fa7-44ff-a941-c6de47d36e77,46b0a5b3-1fa7-44ff-a941-c6de47d36e77,1,0,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,1,0,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,1,0,89888993-3b05-475e-ac76-3cd7ced93250,89888993-3b05-475e-ac76-3cd7ced93250,1,0,129f704b-cc63-4a4e-b6a7-9e53de4537a2,129f704b-cc63-4a4e-b6a7-9e53de4537a2,1,0,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,1,0,592f55e1-b004-44ef-878a-6c2016ccbeb0,592f55e1-b004-44ef-878a-6c2016ccbeb0,1,0,19add2bd-eede-4a05-901b-cf8ce49a638f,19add2bd-eede-4a05-901b-cf8ce49a638f,1,0,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,1,0,c7f544c6-488e-4178-af0d-d2ae07a8b89a,c7f544c6-488e-4178-af0d-d2ae07a8b89a,1,0,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,1,0,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,1,0,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,1,0,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,1,0,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,1,0,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,1,0,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,1,0,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,1,0,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,1,0,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,1,0,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1,0,9043894d-f89a-459f-a4ea-77fe3633aa91,9043894d-f89a-459f-a4ea-77fe3633aa91,1,0,e417e2ab-5e25-40a9-8dc2-9552a4fe1a38,e417e2ab-5e25-40a9-8dc2-9552a4fe1a38,1,0,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,1,0,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,1,0,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,1,0,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,1,0,8c4c7982-36cc-4dc9-b055-9954f61e6365,8c4c7982-36cc-4dc9-b055-9954f61e6365,1,0,ba51c7f5-0074-4c99-a27d-ddfd4bfcc068,ba51c7f5-0074-4c99-a27d-ddfd4bfcc068,1,0,5f3d5a05-a581-462d-96a2-2750ba0e0481,5f3d5a05-a581-462d-96a2-2750ba0e0481,1,0,477ab478-b336-4bac-898f-e20e3a4039b5,477ab478-b336-4bac-898f-e20e3a4039b5,1,0,a4d767a1-d2e6-4e0a-ab35-9207eef54998,a4d767a1-d2e6-4e0a-ab35-9207eef54998,1,0,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,1,0,cc3a7f15-4db6-445e-b282-f44d0460b7d3,cc3a7f15-4db6-445e-b282-f44d0460b7d3,1,0,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,1,0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,1,0,4f86b052-b81e-49b8-9fa8-82b2ecbc8e01,4f86b052-b81e-49b8-9fa8-82b2ecbc8e01,1,0,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,1,0,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,1,0,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,1,0,e4216976-2747-4078-81d4-8ffab668c1f7,e4216976-2747-4078-81d4-8ffab668c1f7,1,0,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,1,0,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,1,0,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,1,0,3b9c03bc-8517-498f-8052-e53854fb0753,3b9c03bc-8517-498f-8052-e53854fb0753,1,0,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,1,0,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,1,0,6c66ff27-19af-4728-95a8-463fd1c4dcd3,6c66ff27-19af-4728-95a8-463fd1c4dcd3,1,0,9ed2c756-80a1-4559-8494-b7a9b82a4519,9ed2c756-80a1-4559-8494-b7a9b82a4519,1,0,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,1,0,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,1,0,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,1,0,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,1,0,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,1,0,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,1,0,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,1,0,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,1,0,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,1,0,a57f6dc1-59d7-4311-8acd-65ce57a9f386,a57f6dc1-59d7-4311-8acd-65ce57a9f386,1,0,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,1,0,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,1,0,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,1,0,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,1,0,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,1,0,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,1,0,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,1,0,387d3bbf-cddd-4506-b14f-89c1f37adbbc,387d3bbf-cddd-4506-b14f-89c1f37adbbc,1,0,16392cf6-dd83-4df0-a54b-6efc29778a89,16392cf6-dd83-4df0-a54b-6efc29778a89,1,0,e693cdd0-8ead-4ba5-adec-86bab74ee7cd,e693cdd0-8ead-4ba5-adec-86bab74ee7cd,1,0,10db9f99-c7d1-4b16-9ea2-9bfc2aa4ddb5,10db9f99-c7d1-4b16-9ea2-9bfc2aa4ddb5,1,0,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,1,0,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,1,0,a1130128-cc48-4555-93a2-99e7f74f77dc,a1130128-cc48-4555-93a2-99e7f74f77dc,1,0,af52cd7d-374a-4c46-a74c-305e154dc6f2,af52cd7d-374a-4c46-a74c-305e154dc6f2,1,0,9b4b7424-1af7-4d80-8404-8819fcfeae75,9b4b7424-1af7-4d80-8404-8819fcfeae75,1,0,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,1,0,8947286f-ba4a-44e7-b805-2f096028dc4f,8947286f-ba4a-44e7-b805-2f096028dc4f,1,0,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,1,0,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,1,0,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,1,0,251ca8fe-09eb-45ca-be8b-0d8faf927009,251ca8fe-09eb-45ca-be8b-0d8faf927009,1,0,e353db15-71c5-4b68-9ffb-9800800a59dc,e353db15-71c5-4b68-9ffb-9800800a59dc,1,0,976d9ba7-d9c7-4a9e-ad5d-53cb5bca8984,976d9ba7-d9c7-4a9e-ad5d-53cb5bca8984,1,0,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,1,0,e05b6f44-8244-4e94-a6d3-57450f8b47dc,e05b6f44-8244-4e94-a6d3-57450f8b47dc,1,0,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,1,0,19b98b60-deb1-4642-8159-2a11332558e2,19b98b60-deb1-4642-8159-2a11332558e2,1,0,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,1,0,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,1,0,f60cb71a-f451-426a-aa3a-aa266b8da149,f60cb71a-f451-426a-aa3a-aa266b8da149,1,0,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,1,0,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,1,0,9059defa-047f-4dac-9749-3d0a6a77308a,9059defa-047f-4dac-9749-3d0a6a77308a,1,0,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,1,0,973609a2-5b5d-45c4-9606-a13d0de1a09b,973609a2-5b5d-45c4-9606-a13d0de1a09b,1,0,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,1,0,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,1,0,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,1,0,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,1,0,7ad16fb4-17eb-4812-8015-9447d92e08ce,7ad16fb4-17eb-4812-8015-9447d92e08ce,1,0,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,1,0,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,1,0,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,1,0,48cefa96-46c7-4870-a096-951dcbae479a,48cefa96-46c7-4870-a096-951dcbae479a,1,0,d74e01cc-941b-4974-8771-0bd2e0d86724,d74e01cc-941b-4974-8771-0bd2e0d86724,1,0,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,1,0,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,1,0,5e4ee280-3dd2-4f68-be6c-fb5343438817,5e4ee280-3dd2-4f68-be6c-fb5343438817,1,0,75d1b6df-ede3-4172-987f-fe1551f686ee,75d1b6df-ede3-4172-987f-fe1551f686ee,1,0,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,1,0,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,1,0,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,1,0,aae09896-3b22-4d7d-9059-e47660f8b88b,aae09896-3b22-4d7d-9059-e47660f8b88b,1,0,8bd56034-6d56-4c2f-8e7f-4c0fff49ac39,8bd56034-6d56-4c2f-8e7f-4c0fff49ac39,1,0,845530cd-36fb-44c3-b30a-730985c9ca2d,845530cd-36fb-44c3-b30a-730985c9ca2d,1,0,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,1,0,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,1,0,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,1,0,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,1,0,6527be82-a665-4f8a-818b-a35b96b3484b,6527be82-a665-4f8a-818b-a35b96b3484b,1,0,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,1,0,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,1,0,83e30f0b-67b2-411b-9624-ac4c4bd7f94a,83e30f0b-67b2-411b-9624-ac4c4bd7f94a,1,0,c79ba5a5-e6d9-4a3f-ab23-eca876607f7f,c79ba5a5-e6d9-4a3f-ab23-eca876607f7f,1,0,ce5549bd-ba99-4259-86a3-36521bad59f5,ce5549bd-ba99-4259-86a3-36521bad59f5,1,0,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,1,0,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,1,0,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,1,0,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,1,0,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,1,0,3f3f1b41-57a9-4a82-bdfa-89a6653479ab,3f3f1b41-57a9-4a82-bdfa-89a6653479ab,1,0,fd12fbe2-56a2-4c9e-a072-989d826a5ea3,fd12fbe2-56a2-4c9e-a072-989d826a5ea3,1,0,f38b6034-5246-42a7-8f3c-51eaf3e5399c,f38b6034-5246-42a7-8f3c-51eaf3e5399c,1,0,08552af7-3c44-42c6-94c5-63a2316127fc,08552af7-3c44-42c6-94c5-63a2316127fc,1,0,41f6f6d1-b7cf-4477-907b-ce69fc08c799,41f6f6d1-b7cf-4477-907b-ce69fc08c799,1,0,9f1a61dd-b04f-48ae-b0c0-17cf23bdb04b,9f1a61dd-b04f-48ae-b0c0-17cf23bdb04b,1,0,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,1,0,a300ecc3-8031-4a50-a17d-b08cf3a72139,a300ecc3-8031-4a50-a17d-b08cf3a72139,1,0,e7e78b7e-b103-40d6-8064-f84e2d86ca3d,e7e78b7e-b103-40d6-8064-f84e2d86ca3d,1,0,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,1,0,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,1,0,52f3e20c-1cf7-4284-a083-6539782f4bc3,52f3e20c-1cf7-4284-a083-6539782f4bc3,1,0,657b8663-713c-4a80-81e1-8c0166742a35,657b8663-713c-4a80-81e1-8c0166742a35,1,0,866438d1-1223-4768-9c96-e6cb12f1a4d5,866438d1-1223-4768-9c96-e6cb12f1a4d5,1,0,d416cc2a-425f-4c01-a550-5a755ed78cc8,d416cc2a-425f-4c01-a550-5a755ed78cc8,1,0,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,1,0,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,1,0,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,1,0,9039f720-5728-4918-87d5-8b2d07cabcfd,9039f720-5728-4918-87d5-8b2d07cabcfd,1,0,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,1,0,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,1,0,766c9bee-b0fc-4a7f-b88e-cd8c4aad73b8,766c9bee-b0fc-4a7f-b88e-cd8c4aad73b8,1,0,aaaa7d41-3399-41b5-b882-58af38121494,aaaa7d41-3399-41b5-b882-58af38121494,1,0,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,1,0,3705a086-46e6-4090-a52a-535908eea8a5,3705a086-46e6-4090-a52a-535908eea8a5,1,0,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,1,0,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,1,0,a6587758-f7af-4f85-81b4-4312c725824e,a6587758-f7af-4f85-81b4-4312c725824e,1,0,5d336d1e-24f9-404a-9671-3bcdc7c48a25,5d336d1e-24f9-404a-9671-3bcdc7c48a25,1,0,d508b3e9-4dac-40a3-9a0b-1cc76b4196ea,d508b3e9-4dac-40a3-9a0b-1cc76b4196ea,1,0,63470706-f14b-4733-87c2-d1173f5d7e7a,63470706-f14b-4733-87c2-d1173f5d7e7a,1,0,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,1,0,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,1,0,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,1,0,76cdcc51-0e6a-4f9c-a115-1864998c2add,76cdcc51-0e6a-4f9c-a115-1864998c2add,1,0,71c3e5d3-7504-433f-9d48-7c287b2b863b,71c3e5d3-7504-433f-9d48-7c287b2b863b,1,0,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,1,0,0d8c215d-1210-47a2-897d-a3257b9f849a,0d8c215d-1210-47a2-897d-a3257b9f849a,1,0,ea2e9a4e-eca1-4a6e-b7a6-8922a11334aa,ea2e9a4e-eca1-4a6e-b7a6-8922a11334aa,1,0,c971e0ba-53b8-4454-92f7-40b0d639058a,c971e0ba-53b8-4454-92f7-40b0d639058a,1,0,9d8496ea-fc0c-410d-994d-7480350d71d3,9d8496ea-fc0c-410d-994d-7480350d71d3,1,0,0f0456a8-ca04-4de4-9d9b-e8b0fdb8b860,0f0456a8-ca04-4de4-9d9b-e8b0fdb8b860,1,0,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,1,0,5b62e0d1-8dba-47db-8dbb-517ad935fa0d,5b62e0d1-8dba-47db-8dbb-517ad935fa0d,1,0,e7a63151-fc1a-4563-8768-26d854ab012b,e7a63151-fc1a-4563-8768-26d854ab012b,1,0,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,1,0,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,1,0,73c7750f-8291-4e19-8551-635cd6b94215,73c7750f-8291-4e19-8551-635cd6b94215,1,0,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,1,0,a1463001-f3d8-4064-95e4-cf49aedc2a8c,a1463001-f3d8-4064-95e4-cf49aedc2a8c,1,0,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,1,0,249b6436-bd44-4950-b118-7f40f7aaf794,249b6436-bd44-4950-b118-7f40f7aaf794,1,0,6a9f1485-21a4-41e8-b8a7-26340eff5085,6a9f1485-21a4-41e8-b8a7-26340eff5085,1,0,65dd4904-0837-4de5-a5e5-601151055d94,65dd4904-0837-4de5-a5e5-601151055d94,1,0,99c5e87a-f096-4315-8fbe-f596ea9c176f,99c5e87a-f096-4315-8fbe-f596ea9c176f,1,0,9dd57f32-90a1-4a1d-bc2a-c1b12461d963,9dd57f32-90a1-4a1d-bc2a-c1b12461d963,1,0,ce6d1259-af90-482b-b19a-405512321bd9,ce6d1259-af90-482b-b19a-405512321bd9,1,0,9b76ded4-814a-4267-99c5-2c8fb05ee352,9b76ded4-814a-4267-99c5-2c8fb05ee352,1,0,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,1,0,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,1,0,eb276904-cad7-4401-bb78-2d13946291f1,eb276904-cad7-4401-bb78-2d13946291f1,1,0,171a64b6-39d2-455f-b304-1c6ea8d85494,171a64b6-39d2-455f-b304-1c6ea8d85494,1,0,79ff04ac-4625-469b-916e-938f04de4dd2,79ff04ac-4625-469b-916e-938f04de4dd2,1,0,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,1,0,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,1,0,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,1,0,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,1,0,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,1,0,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,1,0,1e633034-6dcc-4564-9f40-348c32143314,1e633034-6dcc-4564-9f40-348c32143314,1,0,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,1,0,0b92cced-d818-400c-82b6-7726e912a478,0b92cced-d818-400c-82b6-7726e912a478,1,0,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,1,0,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,1,0,4766c40e-6330-4c1d-a64f-0c8c672886a4,4766c40e-6330-4c1d-a64f-0c8c672886a4,1,0,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,1,0,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,1,0,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,1,0,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1,0,7a944c45-9b3d-411f-b2ef-de3c896092bb,7a944c45-9b3d-411f-b2ef-de3c896092bb,1,0,d2762764-b5c0-4aeb-8e89-3371972f22d8,d2762764-b5c0-4aeb-8e89-3371972f22d8,1,0,54f3902b-f29a-4f04-8c9d-68c318fcd076,54f3902b-f29a-4f04-8c9d-68c318fcd076,1,0,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,1,0,323997ca-488d-4d84-aa44-da60b6b4d414,323997ca-488d-4d84-aa44-da60b6b4d414,1,0,50d3e00e-1a83-4bd5-91db-0561560caf42,50d3e00e-1a83-4bd5-91db-0561560caf42,1,0,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1,0,c8ba4901-7f70-4353-b039-d75f1cb3f5b7,c8ba4901-7f70-4353-b039-d75f1cb3f5b7,1,0,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,1,0,9f4d5fe5-9bda-4ba9-a313-db1ab0ea14d1,9f4d5fe5-9bda-4ba9-a313-db1ab0ea14d1,1,0,44afff59-0590-4929-93b8-7b49735f21b5,44afff59-0590-4929-93b8-7b49735f21b5,1,0,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,1,0,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,1,0,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,1,0,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,1,0,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,1,0,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,1,0,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,1,0,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,1,0,9892f922-8745-4164-a200-94b5edc1ea0a,9892f922-8745-4164-a200-94b5edc1ea0a,1,0,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,1,0,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,1,0,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,1,0,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,1,0,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,1,0,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,1,0,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,1,0,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,1,0,3e4361e9-2baf-407b-9320-b2a265b44e46,3e4361e9-2baf-407b-9320-b2a265b44e46,1,0,a5902ed4-a8f1-460e-aced-0094b2c384a3,a5902ed4-a8f1-460e-aced-0094b2c384a3,1,0,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,1,0,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,1,0,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,1,0,26986f8d-d56d-4641-9184-2632d0881cca,26986f8d-d56d-4641-9184-2632d0881cca,1,0,92bec607-7217-42f6-8eb9-ace759672336,92bec607-7217-42f6-8eb9-ace759672336,1,0,144676de-f369-49f1-bb21-d60e073936df,144676de-f369-49f1-bb21-d60e073936df,1,0,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,1,0,4d660fec-4a76-470e-bba9-3d031941b289,4d660fec-4a76-470e-bba9-3d031941b289,1,0,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,1,0,644cf757-bff9-4e2e-b72b-1e736c42d4c3,644cf757-bff9-4e2e-b72b-1e736c42d4c3,1,0,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,1,0,a2a51b70-9570-4f53-9d30-e9a9b099a475,a2a51b70-9570-4f53-9d30-e9a9b099a475,1,0,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,1,0,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,1,0,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,1,0,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,1,0,fdcbe67c-55fb-444d-bed8-cee956ca3530,fdcbe67c-55fb-444d-bed8-cee956ca3530,1,0,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,1,0,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,1,0,6ff5b3cb-efff-430d-bf0a-957405f116ca,6ff5b3cb-efff-430d-bf0a-957405f116ca,1,0,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,1,0,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,1,0,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,1,0,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,1,0,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,1,0,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,1,0,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,1,0,b8b267e3-75af-4140-b515-d99e8e748e84,b8b267e3-75af-4140-b515-d99e8e748e84,1,0,8014684f-e1f1-4163-9083-459a009c0aac,8014684f-e1f1-4163-9083-459a009c0aac,1,0,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,1,0,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,1,0,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,1,0,40c8b547-35d0-4dbd-8fa1-ba108c3022b1,40c8b547-35d0-4dbd-8fa1-ba108c3022b1,1,0,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,1,0,c0218ef0-4aa1-4ff1-963b-e6ab1001ae9e,c0218ef0-4aa1-4ff1-963b-e6ab1001ae9e,1,0,e55d259f-cfaa-46f9-92c4-687e1ff3b89d,e55d259f-cfaa-46f9-92c4-687e1ff3b89d,1,0,cf13e2d9-72a0-47c0-bae2-f674024bbdb2,cf13e2d9-72a0-47c0-bae2-f674024bbdb2,1,0,62d4d073-80df-41e6-a915-43a4f5575206,62d4d073-80df-41e6-a915-43a4f5575206,1,0,145ecede-baae-4725-832a-5387794922ed,145ecede-baae-4725-832a-5387794922ed,1,0,540be4e1-6eae-48e2-a645-8bd0a1259c65,540be4e1-6eae-48e2-a645-8bd0a1259c65,1,0,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,1,0,a1e494f8-96a4-41bd-9234-b87e8d8742c5,a1e494f8-96a4-41bd-9234-b87e8d8742c5,1,0,5c6b9fb5-7d29-4161-a81b-7c618ca07a47,5c6b9fb5-7d29-4161-a81b-7c618ca07a47,1,0,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,1,0,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,1,0,83ead93b-4ff6-487d-934e-25088944fccc,83ead93b-4ff6-487d-934e-25088944fccc,1,0,764c76cc-0473-4633-868d-02f96aa43c10,764c76cc-0473-4633-868d-02f96aa43c10,1,0,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,1,0,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,1,0,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,1,0,9416a741-5106-454e-b953-81f3d99d5e71,9416a741-5106-454e-b953-81f3d99d5e71,1,0,30f6aedf-946f-400c-822d-5fa375b8fb1d,30f6aedf-946f-400c-822d-5fa375b8fb1d,1,0,46e313f7-54da-4884-89e8-cdba6ae30d30,46e313f7-54da-4884-89e8-cdba6ae30d30,1,0,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,1,0,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,1,0,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,1,0,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,1,0,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,1,0,61789ea5-aad2-4b3b-a1c7-3ff7409379eb,61789ea5-aad2-4b3b-a1c7-3ff7409379eb,1,0,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,1,0,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1,0,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,1,0,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,1,0,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,1,0,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,1,0,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,1,0,5a088468-4065-4e0c-9b84-1162de8d3fdd,5a088468-4065-4e0c-9b84-1162de8d3fdd,1,0,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,1,0,f3ae1a2c-e0ca-461b-ba5a-76a6423c6325,f3ae1a2c-e0ca-461b-ba5a-76a6423c6325,1,0,b233d29c-3979-4ef6-b7f0-89ca88f65e82,b233d29c-3979-4ef6-b7f0-89ca88f65e82,1,0,684ca876-644e-43f5-b96a-1561fb5b1935,684ca876-644e-43f5-b96a-1561fb5b1935,1,0,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,1,0,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,1,0,86a9d7ab-7a96-4c58-8073-ca4b2b99cceb,86a9d7ab-7a96-4c58-8073-ca4b2b99cceb,1,0,1ae1a239-0d88-4467-af33-32bcfe6cf61d,1ae1a239-0d88-4467-af33-32bcfe6cf61d,1,0,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,1,0,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,1,0,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,1,0,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,1,0,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,1,0,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,1,0,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,1,0,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,1,0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,1,0,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,1,0,259cb8f5-9e78-4b2f-941b-ccb4b1112c8b,259cb8f5-9e78-4b2f-941b-ccb4b1112c8b,1,0,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,1,0,73c1a829-0191-486b-97a0-7f333c6f8011,73c1a829-0191-486b-97a0-7f333c6f8011,1,0,db28f23f-a771-46c0-96e8-5e4389b28b8b,db28f23f-a771-46c0-96e8-5e4389b28b8b,1,0,5504f5d1-35d8-4a47-a0e1-003fe00395c1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,1,0,56242b05-d722-4d4a-82d9-517e0e169d0b,56242b05-d722-4d4a-82d9-517e0e169d0b,1,0,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,1,0,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,1,0,52fd1e04-44b6-4405-a2de-ec5c0cf66b64,52fd1e04-44b6-4405-a2de-ec5c0cf66b64,1,0,9a647b38-73da-4491-997b-773059cfd1c9,9a647b38-73da-4491-997b-773059cfd1c9,1,0,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,1,0,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,1,0,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,1,0,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,1,0,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,1,0,ca797560-8802-4bdc-b21f-7a7fd795beae,ca797560-8802-4bdc-b21f-7a7fd795beae,1,0,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,1,0,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,1,0,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,1,0,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,1,0,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,1,0,c1c62215-41b8-40bc-a806-1347db5b03e9,c1c62215-41b8-40bc-a806-1347db5b03e9,1,0,a24322f3-c7a5-4b25-bad6-9c75712a3e58,a24322f3-c7a5-4b25-bad6-9c75712a3e58,1,0,679d2b3b-a354-4dec-b49d-ab1163756e3a,679d2b3b-a354-4dec-b49d-ab1163756e3a,1,0,665e96bc-8ec1-4008-b9bd-db95a234b9b8,665e96bc-8ec1-4008-b9bd-db95a234b9b8,1,0,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,1,0,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,1,0,9bf55587-1ffe-42bc-b8e8-3f956956f689,9bf55587-1ffe-42bc-b8e8-3f956956f689,1,0,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,1,0,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,1,0,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,1,0,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,1,0,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,1,0,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,1,0,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,1,0,4bb0f7c3-62f3-4352-9bc8-e243dd18fe4a,4bb0f7c3-62f3-4352-9bc8-e243dd18fe4a,1,0,bc106ef9-3eeb-40d4-aa59-ae1855ba1744,bc106ef9-3eeb-40d4-aa59-ae1855ba1744,1,0,73d8b319-9bea-4638-a602-23c12f37c227,73d8b319-9bea-4638-a602-23c12f37c227,1,0,a43e9de0-2921-4c58-a5f8-7446258be967,a43e9de0-2921-4c58-a5f8-7446258be967,1,0,307656e3-df7f-46e7-946c-bbd439265c95,307656e3-df7f-46e7-946c-bbd439265c95,1,0,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,1,0,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,1,0,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,1,0,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,1,0,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,1,0,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,1,0,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,1,0,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,1,0,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,1,0,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,1,0,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,1,0,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,1,0,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,1,0,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,1,0,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,1,0,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,1,0,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,1,0,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,1,0,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,1,0,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,1,0,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,1,0,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,1,0,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,1,0,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,1,0,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,1,0,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,1,0,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,1,0,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,1,0,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,1,0,d99991b8-3a81-4e18-b0ad-05fc3e3a199b,d99991b8-3a81-4e18-b0ad-05fc3e3a199b,1,0,dd383422-dddb-4a81-9326-015fd345b5c1,dd383422-dddb-4a81-9326-015fd345b5c1,1,0,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,1,0,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,1,0,aa299fc6-051f-487c-ada4-451e08c4763c,aa299fc6-051f-487c-ada4-451e08c4763c,1,0,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,1,0,800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b,800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b,1,0,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,1,0,0f314b6b-5ed1-46ed-bdfd-cf53330c2783,0f314b6b-5ed1-46ed-bdfd-cf53330c2783,1,0,322645d4-e3fb-467b-a55d-d8e74cff2ea3,322645d4-e3fb-467b-a55d-d8e74cff2ea3,1,0,5ea29362-0ab7-4ca3-865e-bf93db5ca24b,5ea29362-0ab7-4ca3-865e-bf93db5ca24b,1,0,8363bd46-1ea5-44f0-858a-05bc03f6020e,8363bd46-1ea5-44f0-858a-05bc03f6020e,1,0,0f039952-09d3-49c8-b909-e8333a3fc8f9,0f039952-09d3-49c8-b909-e8333a3fc8f9,1,0,d8fc4644-5351-443c-8b5d-5de2c4b855d1,d8fc4644-5351-443c-8b5d-5de2c4b855d1,1,0,64ff6058-c6f3-4682-b9a1-11ec438fa447,64ff6058-c6f3-4682-b9a1-11ec438fa447,1,0,9cd2fc77-a4b0-457e-a6b0-63dbf521bf90,9cd2fc77-a4b0-457e-a6b0-63dbf521bf90,1,0,a321b6db-391b-4c65-8d27-ce486d10055e,a321b6db-391b-4c65-8d27-ce486d10055e,1,0,71dfde27-3762-4dd0-9252-6e703ce1b101,71dfde27-3762-4dd0-9252-6e703ce1b101,1,0,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,1,0,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,1,0,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,1,0,7fe61c5d-30bc-440d-9e40-12ff3b296616,7fe61c5d-30bc-440d-9e40-12ff3b296616,1,0,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,1,0,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,1,0,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,1,0,13dee5d8-f165-48de-9ccb-3ef0239f4b27,13dee5d8-f165-48de-9ccb-3ef0239f4b27,1,0,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,1,0,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,1,0,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,1,0,8a13c899-1659-48cf-9aa2-07ca99547b7b,8a13c899-1659-48cf-9aa2-07ca99547b7b,1,0,eb3f959c-94a4-4e77-b9f9-e81954254079,eb3f959c-94a4-4e77-b9f9-e81954254079,1,0,99387869-f8b1-4269-bd26-e39380d17b69,99387869-f8b1-4269-bd26-e39380d17b69,1,0,4b2acdb9-fefd-4735-9dfd-d7d141967f3c,4b2acdb9-fefd-4735-9dfd-d7d141967f3c,1,0,bc07d643-a044-4882-b95b-2173a197fd0e,bc07d643-a044-4882-b95b-2173a197fd0e,1,0,826c2821-147d-4aaf-910c-acfbdb58a29f,826c2821-147d-4aaf-910c-acfbdb58a29f,1,0,aeea0075-bdeb-41b7-b9cc-1da7b500455f,aeea0075-bdeb-41b7-b9cc-1da7b500455f,1,0,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,1,0,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,1,0,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,1,0,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,1,0,36d6b0e1-5e10-408a-8eb1-09839e57690f,36d6b0e1-5e10-408a-8eb1-09839e57690f,1,0,6423b849-7ca4-4501-8856-445157d7e5df,6423b849-7ca4-4501-8856-445157d7e5df,1,0,0819e2b0-1eb0-41b3-ab89-0974bd926fb6,0819e2b0-1eb0-41b3-ab89-0974bd926fb6,1,0,e814287f-1c13-4f74-9507-d22a62394fd2,e814287f-1c13-4f74-9507-d22a62394fd2,1,0,417ac987-7369-45af-b670-fdffb048f33d,417ac987-7369-45af-b670-fdffb048f33d,1,0,640a5d72-dbc7-421b-afdb-cc3a4622ae04,640a5d72-dbc7-421b-afdb-cc3a4622ae04,1,0,79da84c1-5ac2-4472-8eb9-f0484b9582c2,79da84c1-5ac2-4472-8eb9-f0484b9582c2,1,0,2d0b161b-7d69-4ec4-a483-79bd458cb62c,2d0b161b-7d69-4ec4-a483-79bd458cb62c,1,0,f178bc1b-ebea-4fa9-8861-fe0d91f103e4,f178bc1b-ebea-4fa9-8861-fe0d91f103e4,1,0,e33a9c94-7e98-4b38-ba20-4546a90b2937,e33a9c94-7e98-4b38-ba20-4546a90b2937,1,0,1610e73c-58df-41cc-8349-51b920806821,1610e73c-58df-41cc-8349-51b920806821,1,0,ae37f465-1ee5-4f06-a834-deea9e9e0eb3,ae37f465-1ee5-4f06-a834-deea9e9e0eb3,1,0,c6ccf82f-f130-4037-9e89-1e0365b996a4,c6ccf82f-f130-4037-9e89-1e0365b996a4,1,0,c532963e-0d92-44b9-9cfc-43ed2744ccf9,c532963e-0d92-44b9-9cfc-43ed2744ccf9,1,0,6aff2855-24d4-4f90-b617-53326efdd1bd,6aff2855-24d4-4f90-b617-53326efdd1bd,1,0,0107a9c7-4c85-49c4-918a-925d85d57a0b,0107a9c7-4c85-49c4-918a-925d85d57a0b,1,0,6e1efa55-969b-4c2b-8af2-b11d672db5f0,6e1efa55-969b-4c2b-8af2-b11d672db5f0,1,0,e5b578a1-e33b-4d49-8064-427aa928a844,e5b578a1-e33b-4d49-8064-427aa928a844,1,0,f74e97ad-fef6-4122-a056-86f2d59dfdaf,f74e97ad-fef6-4122-a056-86f2d59dfdaf,1,0,df1ef691-1e86-4a80-8671-53b3d4504bfb,df1ef691-1e86-4a80-8671-53b3d4504bfb,1,0,474b9918-23da-4289-91a9-9115526c9b5d,474b9918-23da-4289-91a9-9115526c9b5d,1,0,1cf7be60-fd84-430d-b1b5-5619c51b8b3f,1cf7be60-fd84-430d-b1b5-5619c51b8b3f,1,0,60aa9d44-5986-490e-8093-f65e194b3607,60aa9d44-5986-490e-8093-f65e194b3607,1,0,a36dee5e-7184-4caf-bf46-3977b165093b,a36dee5e-7184-4caf-bf46-3977b165093b,1,0,aa3c61a7-c905-4b5a-a44d-e2ac5d79158a,aa3c61a7-c905-4b5a-a44d-e2ac5d79158a,1,0,182916b2-972b-4e39-93ba-d45aa7a195f5,182916b2-972b-4e39-93ba-d45aa7a195f5,1,0,2b654a53-7ce8-421f-aaf5-aa1451d91415,2b654a53-7ce8-421f-aaf5-aa1451d91415,1,0,30e55306-ea5c-4ef4-9903-ea030afa3d85,30e55306-ea5c-4ef4-9903-ea030afa3d85,1,0,234c1a72-8349-472a-8373-2a25ce6252f2,234c1a72-8349-472a-8373-2a25ce6252f2,1,0,b1ccb9f7-11ff-4ad2-8806-d64de84662f0,b1ccb9f7-11ff-4ad2-8806-d64de84662f0,1,0,539e0db9-be24-4086-9632-af20553ee50f,539e0db9-be24-4086-9632-af20553ee50f,1,0,862e2759-5311-4c68-8977-86133bcf8c0e,862e2759-5311-4c68-8977-86133bcf8c0e,1,0,b9adeb51-a009-4e83-85f8-bfa1547429d6,b9adeb51-a009-4e83-85f8-bfa1547429d6,1,0,7ac85789-9c69-40b6-9130-94c40ed440d4,7ac85789-9c69-40b6-9130-94c40ed440d4,1,0,0f77d06f-f736-451e-9e6b-28868e48f3ed,0f77d06f-f736-451e-9e6b-28868e48f3ed,1,0,ac9f4c2e-316b-4f96-8fe6-fb5a5a7e48ed,ac9f4c2e-316b-4f96-8fe6-fb5a5a7e48ed,1,0,da808c0e-b1b0-4d46-8c63-2bbe7d0dca9d,da808c0e-b1b0-4d46-8c63-2bbe7d0dca9d,1,0,b848d70a-9d08-4b1a-8df1-17697432516d,b848d70a-9d08-4b1a-8df1-17697432516d,1,0,9a30b92d-0c5b-4e11-a741-2b6efa8ac229,9a30b92d-0c5b-4e11-a741-2b6efa8ac229,1,0,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,1,0,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,1,0,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,1,0,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,1,0,e8bec681-d269-41ba-9184-556cbcc27d74,e8bec681-d269-41ba-9184-556cbcc27d74,1,0,b8aaef91-f72c-4127-a494-771c13694ca4,b8aaef91-f72c-4127-a494-771c13694ca4,1,0,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,1,0,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,1,0,3e090261-4aa2-4ece-9f77-62df83c890b3,3e090261-4aa2-4ece-9f77-62df83c890b3,1,0,9292034c-24e8-49a7-9b77-7974e117847d,9292034c-24e8-49a7-9b77-7974e117847d,1,0,3327b7d4-62fc-44cc-83b4-c449bfa4e706,3327b7d4-62fc-44cc-83b4-c449bfa4e706,1,0,43ecee25-68eb-48cf-bbaa-aee71052438f,43ecee25-68eb-48cf-bbaa-aee71052438f,1,0,93799f8b-0188-4546-8815-35e733bcc2b1,93799f8b-0188-4546-8815-35e733bcc2b1,1,0,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,1,0,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,1,0,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,1,0,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,1,0,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,1,0,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,1,0,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,1,0,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,1,0,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,1,0,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,1,0,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,1,0,1b4feda1-e555-4b85-b236-b21153a7246f,1b4feda1-e555-4b85-b236-b21153a7246f,1,0,61d3cef4-2c42-417d-a762-a2d2f5a28924,61d3cef4-2c42-417d-a762-a2d2f5a28924,1,0,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,1,0,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,1,0,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,1,0,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,1,0,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,1,0,7ab6acda-6732-4582-8092-d43f9a98a28d,7ab6acda-6732-4582-8092-d43f9a98a28d,1,0,5ab1d405-bfc3-4440-8cdd-3a63013b064d,5ab1d405-bfc3-4440-8cdd-3a63013b064d,1,0,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,1,0,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,1,0,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,1,0,6bcba052-4d81-409d-b1a2-eed6be6fb024,6bcba052-4d81-409d-b1a2-eed6be6fb024,1,0,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,1,0,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,1,0,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,1,0,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,1,0,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,1,0,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,1,0,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,1,0,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,1,0,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,1,0,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,1,0,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,1,0,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,1,0,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,1,0,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,1,0,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,1,0,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,1,0,093332f5-3eb4-478c-ac95-59dcdc96765a,093332f5-3eb4-478c-ac95-59dcdc96765a,1,0,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,1,0,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,1,0,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,1,0,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,1,0,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,1,0,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,1,0,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,1,0,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,1,0,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,1,0,e72e59c0-391d-497e-9407-063e0edf573e,e72e59c0-391d-497e-9407-063e0edf573e,1,0,ae8a1e69-ee1c-4efa-8d63-0279b18617f6,ae8a1e69-ee1c-4efa-8d63-0279b18617f6,1,0,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,1,0,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,1,0,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,1,0,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,1,0,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,1,0,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,1,0,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,1,0,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,1,0,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,1,0,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,1,0,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,1,0,82e8ac21-c2aa-47de-89ae-ea6cc10cc862,82e8ac21-c2aa-47de-89ae-ea6cc10cc862,1,0,13b27ec3-2be9-4959-92e5-94ba7bb64f03,13b27ec3-2be9-4959-92e5-94ba7bb64f03,1,0,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,1,0,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,1,0,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,1,0,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,1,0,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,1,0,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,1,0,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,1,0,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,1,0,245814f7-028c-4c13-98eb-15412e851f81,245814f7-028c-4c13-98eb-15412e851f81,1,0,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,1,0,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,1,0,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,1,0,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,1,0,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,1,0,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,1,0,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,1,0,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,1,0,11c5930d-f882-46bd-9e7b-63e5344f6604,11c5930d-f882-46bd-9e7b-63e5344f6604,1,0,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,1,0,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,1,0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,1,0,83f51efe-e2af-459a-b59f-2c036124ac23,83f51efe-e2af-459a-b59f-2c036124ac23,1,0,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,1,0,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,1,0,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,1,0,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,1,0,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,1,0,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,1,0,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,1,0,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,1,0,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,1,0,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,1,0,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,1,0,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,1,0,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,1,0,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,1,0,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,1,0,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,1,0,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,1,0,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,1,0,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,1,0,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,1,0,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,1,0,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,1,0,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,1,0,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,1,0,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,1,0,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,1,0,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,1,0,f9950ab5-1077-4033-bbbf-53899a1bcf33,f9950ab5-1077-4033-bbbf-53899a1bcf33,1,0,8f16763b-86f0-4ad0-b786-cce7dcb3460e,8f16763b-86f0-4ad0-b786-cce7dcb3460e,1,0,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,1,0,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,1,0,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,1,0,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,1,0,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,1,0,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,1,0,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1,0,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,1,0,7ebf99c3-33d2-4e4c-ac45-ca4ed0c3c100,7ebf99c3-33d2-4e4c-ac45-ca4ed0c3c100,1,0,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,1,0,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,1,0,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,1,0,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,1,0,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,1,0,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,1,0,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,1,0,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,1,0,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,1,0,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,1,0,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,1,0,35828c88-f1ec-42e7-b189-78748931ee4a,35828c88-f1ec-42e7-b189-78748931ee4a,1,0,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,1,0,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1,0,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,1,0,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,1,0,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,1,0,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,1,0,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,1,0,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,1,0,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,1,0,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,1,0,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,1,0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,1,0,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,1,0,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,1,0,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,1,0,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,1,0,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,1,0,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,1,0,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,1,0,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,1,0,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,1,0,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,1,0,67a04d72-afea-487a-b629-e4b7dfc1df32,67a04d72-afea-487a-b629-e4b7dfc1df32,1,0,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,1,0,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,1,0,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,1,0,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,1,0,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,1,0,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,1,0,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,1,0,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,1,0,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,1,0,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,1,0,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,1,0,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,1,0,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,1,0,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,1,0,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,1,0,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,1,0,8f09cbed-6f24-461f-9b35-31c64310e74a,8f09cbed-6f24-461f-9b35-31c64310e74a,1,0,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,1,0,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,1,0,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,1,0,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,1,0,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,1,0,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,1,0,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,1,0,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,1,0,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,1,0,211d226f-dac6-43d5-8720-952da4339e35,211d226f-dac6-43d5-8720-952da4339e35,1,0,df67cdcd-20ff-46d4-902b-dc4d81ee46bd,df67cdcd-20ff-46d4-902b-dc4d81ee46bd,1,0,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,1,0,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,1,0,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,1,0,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,1,0,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,1,0,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,1,0,463b8966-a5f9-4a80-82b9-1608a1622e13,463b8966-a5f9-4a80-82b9-1608a1622e13,1,0,f02e807c-6cd3-4a4f-8dad-73bd56ee98ff,f02e807c-6cd3-4a4f-8dad-73bd56ee98ff,1,0,eefd00fe-3241-498f-aeb4-d429a86ab563,eefd00fe-3241-498f-aeb4-d429a86ab563,1,0,802d3489-318f-467d-a9f4-d7c644edac60,802d3489-318f-467d-a9f4-d7c644edac60,1,0,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,1,0,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,1,0,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,1,0,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,1,0,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,1,0,01cb357c-af28-4855-afae-45b6df19b344,01cb357c-af28-4855-afae-45b6df19b344,1,0,26e58429-1e08-454a-b4d7-2470390149fb,26e58429-1e08-454a-b4d7-2470390149fb,1,0,daa42bf5-9c32-4913-bc27-38f77ccc1a9f,daa42bf5-9c32-4913-bc27-38f77ccc1a9f,1,0,7620b61a-b0d1-4c71-bc80-72c48e17b96d,7620b61a-b0d1-4c71-bc80-72c48e17b96d,1,0,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,1,0,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,1,0,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,1,0,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,1,0,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,1,0,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,1,0,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,1,0,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,1,0,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,1,0,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,1,0,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,1,0,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,1,0,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,1,0,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,1,0,aa509aa3-dd45-41f3-82c7-59662c2e2c47,aa509aa3-dd45-41f3-82c7-59662c2e2c47,1,0,c4552529-e69e-4c5c-bd66-04b2f7dac281,c4552529-e69e-4c5c-bd66-04b2f7dac281,1,0,381b49ba-793a-4418-9fd4-598844fb72a6,381b49ba-793a-4418-9fd4-598844fb72a6,1,0,1aee302d-df31-49ea-b542-436dc1d79ae1,1aee302d-df31-49ea-b542-436dc1d79ae1,1,0,593509da-d33c-49ff-a62c-a28cbc4651c1,593509da-d33c-49ff-a62c-a28cbc4651c1,1,0,5e346a0b-a322-4565-adb9-70131fb05fa3,5e346a0b-a322-4565-adb9-70131fb05fa3,1,0,9a69c559-194b-4f74-9879-82740260f5f6,9a69c559-194b-4f74-9879-82740260f5f6,1,0,93bf1dcf-670d-4c8b-bdbf-e43c2edf8056,93bf1dcf-670d-4c8b-bdbf-e43c2edf8056,1,0,8a06f980-78f3-42f4-9d96-da2e0f0f36a7,8a06f980-78f3-42f4-9d96-da2e0f0f36a7,1,0,fee2aa74-7a81-4ab2-a457-2edf8ac1aa2d,fee2aa74-7a81-4ab2-a457-2edf8ac1aa2d,1,0,2e19fb7b-270f-4181-b4a1-640280bbbc5c,2e19fb7b-270f-4181-b4a1-640280bbbc5c,1,0,cf69b045-665d-4f6c-827f-5044beacd125,cf69b045-665d-4f6c-827f-5044beacd125,1,0,aa773eef-0c4a-49be-9f5e-9131bc041415,aa773eef-0c4a-49be-9f5e-9131bc041415,1,0,9b31e474-01d4-4c3b-a633-3a2ff3917d62,9b31e474-01d4-4c3b-a633-3a2ff3917d62,1,0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1,0,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,1,0,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,1,0,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,1,0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,1,0,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,1,0,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,1,0,b3f188f4-d83e-4e97-b7d3-fc384b46a80a,b3f188f4-d83e-4e97-b7d3-fc384b46a80a,1,0,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,1,0,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,1,0,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,1,0,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,1,0,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,1,0,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,1,0,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,1,0,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,1,0,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,1,0,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,1,0,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,1,0,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,1,0,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,1,0,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,1,0,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,1,0,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,1,0,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,1,0,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,1,0,37e3d914-643e-4963-b4a0-7bc6727c0c9b,37e3d914-643e-4963-b4a0-7bc6727c0c9b,1,0,b6902500-3e03-4e83-a077-00500abc00b6,b6902500-3e03-4e83-a077-00500abc00b6,1,0,d253aa54-a447-44aa-bb13-82fd1ce22af4,d253aa54-a447-44aa-bb13-82fd1ce22af4,1,0,8936f114-7a0e-4a4c-8752-ccacab410778,8936f114-7a0e-4a4c-8752-ccacab410778,1,0,55649242-42fd-468f-a1e4-f6cd8871f7a4,55649242-42fd-468f-a1e4-f6cd8871f7a4,1,0,980e0883-cd8f-48c8-896f-ef185650f5c2,980e0883-cd8f-48c8-896f-ef185650f5c2,1,0,06ca1680-e641-499c-94ad-2d5ce5561747,06ca1680-e641-499c-94ad-2d5ce5561747,1,0,35bbf75b-99d0-447b-acb0-a3d2c98bea56,35bbf75b-99d0-447b-acb0-a3d2c98bea56,1,0,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,1,0,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,1,0,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,1,0,d3b09b09-df2d-40e5-86ce-84dab4898231,d3b09b09-df2d-40e5-86ce-84dab4898231,1,0,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,1,0,cd869887-0b0e-43db-8b51-04fe4a1341d5,cd869887-0b0e-43db-8b51-04fe4a1341d5,1,0,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,1,0,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,1,0,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,1,0,cd8fd85f-f02e-4f11-b4b4-40670febfaca,cd8fd85f-f02e-4f11-b4b4-40670febfaca,1,0,3f023afb-c02a-42ee-9afe-0f47ef3fe721,3f023afb-c02a-42ee-9afe-0f47ef3fe721,1,0,d7fe80d3-7fcf-427e-a991-5384f0c3947e,d7fe80d3-7fcf-427e-a991-5384f0c3947e,1,0,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,1,0,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,1,0,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,1,0,16939af9-e459-43da-8e0d-5d5891af6e0c,16939af9-e459-43da-8e0d-5d5891af6e0c,1,0,1d736a09-6c8f-433a-bf5b-201996bf4c62,1d736a09-6c8f-433a-bf5b-201996bf4c62,1,0,157988ad-d482-41df-b3e3-f2a0383d7130,157988ad-d482-41df-b3e3-f2a0383d7130,1,0,33af87a9-db69-41da-a33a-0435da2155e3,33af87a9-db69-41da-a33a-0435da2155e3,1,0,c95831b4-7d1d-4a9a-b5d0-caa03c4f4eca,c95831b4-7d1d-4a9a-b5d0-caa03c4f4eca,1,0,81b63f1d-2c65-4efb-8599-8a4d97b612ab,81b63f1d-2c65-4efb-8599-8a4d97b612ab,1,0,4b13a2c6-a6ce-47a0-8d9e-1a5dbe8d4b00,4b13a2c6-a6ce-47a0-8d9e-1a5dbe8d4b00,1,0,d1dde981-615a-461f-b0c5-a85f51003a2c,d1dde981-615a-461f-b0c5-a85f51003a2c,1,0,f5970c48-63d7-4064-bdfc-482b72939347,f5970c48-63d7-4064-bdfc-482b72939347,1,0,5c8039c0-34d8-4443-bd8f-dfe3dc2977a8,5c8039c0-34d8-4443-bd8f-dfe3dc2977a8,1,0,210972af-8687-4526-b288-60e7ee76cd61,210972af-8687-4526-b288-60e7ee76cd61,1,0,335f379a-2974-44ce-a668-e7ffe2ce6263,335f379a-2974-44ce-a668-e7ffe2ce6263,1,0,7edd75a2-9d03-4330-9185-28d0f0d4a2e4,7edd75a2-9d03-4330-9185-28d0f0d4a2e4,1,0,f7cc4f9e-cf9a-41f5-865f-d64108b981a5,f7cc4f9e-cf9a-41f5-865f-d64108b981a5,1,0,b58f8947-344c-4902-832c-d8004da55c34,b58f8947-344c-4902-832c-d8004da55c34,1,0,35cccc1d-3d67-4d39-aa79-2c30a5347587,35cccc1d-3d67-4d39-aa79-2c30a5347587,1,0,b6ee01eb-31ab-4f39-b4ff-37a04e3c7f35,b6ee01eb-31ab-4f39-b4ff-37a04e3c7f35,1,0,0776dfb2-67e0-4e11-9f94-abde790ff7e2,0776dfb2-67e0-4e11-9f94-abde790ff7e2,1,0,9c92b833-7406-48e2-9f59-69d575a3898f,9c92b833-7406-48e2-9f59-69d575a3898f,1,0,0cc5334f-8147-455c-8262-540324415812,0cc5334f-8147-455c-8262-540324415812,1,0,f3c4e6db-7c4e-4027-8bfd-f7854d566fc1,f3c4e6db-7c4e-4027-8bfd-f7854d566fc1,1,0,0eeb2f75-7092-4487-891f-cdbc9aa978cb,0eeb2f75-7092-4487-891f-cdbc9aa978cb,1,0,4ac60443-c7cb-492f-98b4-7e48bf9bfaa6,4ac60443-c7cb-492f-98b4-7e48bf9bfaa6,1,0,22979d50-ea57-4fab-9673-1b537838aead,22979d50-ea57-4fab-9673-1b537838aead,1,0,14676ee5-c247-46c6-a37e-c4362de79bb9,14676ee5-c247-46c6-a37e-c4362de79bb9,1,0,9fa36fe3-814e-4472-94ee-5d9d2b230b24,9fa36fe3-814e-4472-94ee-5d9d2b230b24,1,0,4b59dc62-0352-45a8-b33b-c42f4eea75ee,4b59dc62-0352-45a8-b33b-c42f4eea75ee,1,0,ea8a50ce-f09c-49f7-be58-ff2864e4eaa3,ea8a50ce-f09c-49f7-be58-ff2864e4eaa3,1,0,2020d672-bef4-4b30-885e-7f41364e412b,2020d672-bef4-4b30-885e-7f41364e412b,1,0,c292ddbc-9402-4c43-93d8-f8efafa6456e,c292ddbc-9402-4c43-93d8-f8efafa6456e,1,0,0281cbd6-972d-4632-9a6a-f8791e2534ee,0281cbd6-972d-4632-9a6a-f8791e2534ee,1,0,bae01f18-b6f3-44e4-93c3-ffcb3ef01b98,bae01f18-b6f3-44e4-93c3-ffcb3ef01b98,1,0,98d66bf0-617a-40aa-97bd-896d37a966ab,98d66bf0-617a-40aa-97bd-896d37a966ab,1,0,1847bb2f-8309-4c49-b752-ef7ec16d4230,1847bb2f-8309-4c49-b752-ef7ec16d4230,1,0,ca23f432-e2a3-4385-8cc1-7e9c96f9d7a1,ca23f432-e2a3-4385-8cc1-7e9c96f9d7a1,1,0,e1856045-f394-45b8-9f0c-298812f1f514,e1856045-f394-45b8-9f0c-298812f1f514,1,0,eb175c1d-7fcb-4807-82e3-688639468116,eb175c1d-7fcb-4807-82e3-688639468116,1,0,4ed9c099-700f-409b-bd91-e24719046953,4ed9c099-700f-409b-bd91-e24719046953,1,0,85b935b4-5eec-40cf-9d99-02cb3f599492,85b935b4-5eec-40cf-9d99-02cb3f599492,1,0,5764a412-4a20-4b2e-9905-ce74a9cac3ae,5764a412-4a20-4b2e-9905-ce74a9cac3ae,1,0,c4330791-d8f7-400f-b270-dee567e7a695,c4330791-d8f7-400f-b270-dee567e7a695,1,0,aab8ec4d-51de-4c1a-9794-266c119332d1,aab8ec4d-51de-4c1a-9794-266c119332d1,1,0,77cb6e52-37a9-423c-8260-6998161adcb5,77cb6e52-37a9-423c-8260-6998161adcb5,1,0,de258ab8-2d16-4c69-9490-5819b7ae3d08,de258ab8-2d16-4c69-9490-5819b7ae3d08,1,0,f7aacf70-0b59-410a-9929-ab4ab8a2431c,f7aacf70-0b59-410a-9929-ab4ab8a2431c,1,0,5bb6ba7a-ed61-4cdd-b3db-ec9da292e7a4,5bb6ba7a-ed61-4cdd-b3db-ec9da292e7a4,1,0,b37a9edd-b6bc-40eb-b5de-f54968abc119,b37a9edd-b6bc-40eb-b5de-f54968abc119,1,0,52338832-b15a-4e56-b13d-141141677008,52338832-b15a-4e56-b13d-141141677008,1,0,e9616402-88cc-44ae-96ca-ba20cf7d38ad,e9616402-88cc-44ae-96ca-ba20cf7d38ad,1,0,1b8212d7-b834-460c-9a2b-68a5de889e5b,1b8212d7-b834-460c-9a2b-68a5de889e5b,1,0,a816deca-4863-44e2-a8ff-89bfa5fbb0ac,a816deca-4863-44e2-a8ff-89bfa5fbb0ac,1,0,157f3df0-97b7-461b-bd3e-1f2e12658adf,157f3df0-97b7-461b-bd3e-1f2e12658adf,1,0,d2d6968c-fbe6-4e09-9cdb-653ca9a97fcc,d2d6968c-fbe6-4e09-9cdb-653ca9a97fcc,1,0,ea6f491e-9ec9-456d-ae30-4a258d87dff6,ea6f491e-9ec9-456d-ae30-4a258d87dff6,1,0,6ccec21e-f26f-482c-9ce2-1f058fc492c1,6ccec21e-f26f-482c-9ce2-1f058fc492c1,1,0,d903569d-911d-4277-a26f-afe2bf67eb09,d903569d-911d-4277-a26f-afe2bf67eb09,1,0,b5ac7de5-565f-4637-b267-dde3637e336b,b5ac7de5-565f-4637-b267-dde3637e336b,1,0,d4a6ab09-259f-4476-834c-a2b57cdeac05,d4a6ab09-259f-4476-834c-a2b57cdeac05,1,0,a56ff7f4-2259-455f-b707-b98aacd7d0b2,a56ff7f4-2259-455f-b707-b98aacd7d0b2,1,0,8c9636c3-0a84-4575-b4c7-6d8bb588e1b0,8c9636c3-0a84-4575-b4c7-6d8bb588e1b0,1,0,76e03401-7c07-4037-a464-d7377852de1d,76e03401-7c07-4037-a464-d7377852de1d,1,0,dc8239e8-fddf-411e-b51a-4230b63236cd,dc8239e8-fddf-411e-b51a-4230b63236cd,1,0,3b861376-2864-4de8-ba59-2a2835d7eaf6,3b861376-2864-4de8-ba59-2a2835d7eaf6,1,0,02910dcd-9e66-4239-a421-8067faf59577,02910dcd-9e66-4239-a421-8067faf59577,1,0,76d5a67f-bb11-4937-a66d-cdce28165562,76d5a67f-bb11-4937-a66d-cdce28165562,1,0,b99a23a5-bfbf-46ec-8268-ff89afdfc63a,b99a23a5-bfbf-46ec-8268-ff89afdfc63a,1,0,cdb93924-62ce-4268-9915-e6c67c1b9cb8,cdb93924-62ce-4268-9915-e6c67c1b9cb8,1,0,1139b6c7-7b55-45b4-98cf-ccac3bfaaa6c,1139b6c7-7b55-45b4-98cf-ccac3bfaaa6c,1,0,33c39990-f4fc-4629-83ba-b43b05a40ca6,33c39990-f4fc-4629-83ba-b43b05a40ca6,1,0,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,1,0,208c7b8c-3df9-4441-8ebf-34ffa81572a2,208c7b8c-3df9-4441-8ebf-34ffa81572a2,1,0,8c17fd7c-74d7-496a-a843-42022afb0707,8c17fd7c-74d7-496a-a843-42022afb0707,1,0,091ccac1-9a63-4a89-bb0c-333b274b0c70,091ccac1-9a63-4a89-bb0c-333b274b0c70,1,0,849f00c3-2f18-414c-97f6-32a99173fab9,849f00c3-2f18-414c-97f6-32a99173fab9,1,0,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,1,0,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,1,0,6eac5f7b-0952-4c94-9028-529b14ffcd4f,6eac5f7b-0952-4c94-9028-529b14ffcd4f,1,0,a587cade-4c91-4769-9c6a-a4fb4fe94196,a587cade-4c91-4769-9c6a-a4fb4fe94196,1,0,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,1,0,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,1,0,167455d1-6658-409f-834c-f6ccfe7b25de,167455d1-6658-409f-834c-f6ccfe7b25de,1,0,1300c46e-24d4-45cf-a899-3d26b5cf0b50,1300c46e-24d4-45cf-a899-3d26b5cf0b50,1,0,4cde6fdc-85fa-4c00-896c-51a68f5f10a5,4cde6fdc-85fa-4c00-896c-51a68f5f10a5,1,0,f41de07b-cba3-4bb8-9ec0-64ec59753f84,f41de07b-cba3-4bb8-9ec0-64ec59753f84,1,0,f78a5650-4d6c-4c17-95e0-e95cf8d9ad4b,f78a5650-4d6c-4c17-95e0-e95cf8d9ad4b,1,0,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,1,0,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,1,0,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,1,0,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,1,0,2a6e1f2b-7378-456b-9657-9e971eaff716,2a6e1f2b-7378-456b-9657-9e971eaff716,1,0,c3cdea20-3055-4b4e-a531-a02d4f3ed294,c3cdea20-3055-4b4e-a531-a02d4f3ed294,1,0,46417026-c44a-4a06-af41-9cf6495a33b4,46417026-c44a-4a06-af41-9cf6495a33b4,1,0,363c15f3-660e-4e19-b3cc-37c5d05e8d22,363c15f3-660e-4e19-b3cc-37c5d05e8d22,1,0,eeb4b6f1-2476-467d-9862-6fe9d3013b2c,eeb4b6f1-2476-467d-9862-6fe9d3013b2c,1,0,59d5cd7d-7f53-4015-89d9-bb8ad89f8c04,59d5cd7d-7f53-4015-89d9-bb8ad89f8c04,1,0,9d7f7dde-fea8-4064-abe2-bb7d04500cb2,9d7f7dde-fea8-4064-abe2-bb7d04500cb2,1,0,3af45dae-f563-4d23-a87a-11b4d9d5d7a7,3af45dae-f563-4d23-a87a-11b4d9d5d7a7,1,0,fe102b7b-b61f-4572-b2d0-c0af11bfb7d7,fe102b7b-b61f-4572-b2d0-c0af11bfb7d7,1,0,2cfa0db8-f0e6-4513-ab19-52dccff302bc,2cfa0db8-f0e6-4513-ab19-52dccff302bc,1,0,b9fece39-6e5d-44c0-af5c-ad13cfb71560,b9fece39-6e5d-44c0-af5c-ad13cfb71560,1,0,a9c30e99-c265-471d-9115-50ac2bb05191,a9c30e99-c265-471d-9115-50ac2bb05191,1,0,d388c9ca-1dbd-45b9-ac33-5ffa8cb11499,d388c9ca-1dbd-45b9-ac33-5ffa8cb11499,1,0,efebb079-b913-4249-b128-e0ffc7ab43dd,efebb079-b913-4249-b128-e0ffc7ab43dd,1,0,52077ee4-fef1-451f-8338-86563ff5cf60,52077ee4-fef1-451f-8338-86563ff5cf60,1,0,8e6780f8-8d0e-47d1-ac26-47bf5d906f61,8e6780f8-8d0e-47d1-ac26-47bf5d906f61,1,0,fd4a26c1-31e0-4216-92e0-1e090ec4f094,fd4a26c1-31e0-4216-92e0-1e090ec4f094,1,0,637148a3-0f54-4d41-91dd-a0aa6e191015,637148a3-0f54-4d41-91dd-a0aa6e191015,1,0,9a86e2fe-a9bc-4f0a-a16e-a97944fe8539,9a86e2fe-a9bc-4f0a-a16e-a97944fe8539,1,0,b6f745d7-1326-494e-b442-e4118955b5db,b6f745d7-1326-494e-b442-e4118955b5db,1,0,86755cbc-efd8-43e7-bba8-975c0a51f38f,86755cbc-efd8-43e7-bba8-975c0a51f38f,1,0,44dba9ff-fb54-4cc9-9da2-b00db76060e4,44dba9ff-fb54-4cc9-9da2-b00db76060e4,1,0,a6a0c38d-52a1-4a36-b29a-fb9cc084465f,a6a0c38d-52a1-4a36-b29a-fb9cc084465f,1,0,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,1,0,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,1,0,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,1,0,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,1,0,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,1,0,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,1,0,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,1,0,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,1,0,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,1,0,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,1,0,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,1,0,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,1,0,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,1,0,9a5b9bf4-71b8-41f2-8e23-8c396357f0a5,9a5b9bf4-71b8-41f2-8e23-8c396357f0a5,1,0,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,1,0,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,1,0,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,1,0,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,1,0,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,1,0,cc8e3172-491d-45d8-a7eb-fc6c400845cb,cc8e3172-491d-45d8-a7eb-fc6c400845cb,1,0,d7cfc87f-ac09-44aa-91d9-6511c408c5cb,d7cfc87f-ac09-44aa-91d9-6511c408c5cb,1,0,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,1,0,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,1,0,51d83895-5692-4479-9612-07c790d19dff,51d83895-5692-4479-9612-07c790d19dff,1,0,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,1,0,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,1,0,d854b528-8456-4453-9c2d-4f96caf10481,d854b528-8456-4453-9c2d-4f96caf10481,1,0,622d6de2-7404-41cc-961b-131d078d7ab4,622d6de2-7404-41cc-961b-131d078d7ab4,1,0,245f870e-a53a-4d86-aa0a-c0c7709b8acb,245f870e-a53a-4d86-aa0a-c0c7709b8acb,1,0,476f6bfa-b10c-4e0f-8499-23c652715b3f,476f6bfa-b10c-4e0f-8499-23c652715b3f,1,0,65c9754b-53f6-4616-a9d4-74826f7b0ced,65c9754b-53f6-4616-a9d4-74826f7b0ced,1,0,eca2b076-d218-4d1c-948b-7894edf9fa49,eca2b076-d218-4d1c-948b-7894edf9fa49,1,0,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,1,0,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,1,0,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,1,0,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,1,0,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,1,0,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1,0,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,1,0,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,1,0,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,1,0,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,1,0,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,1,0,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,1,0,40a59681-f31d-4fb9-9301-67c1430590e0,40a59681-f31d-4fb9-9301-67c1430590e0,1,0,ae3358ad-ea3a-4b73-a305-02a152863978,ae3358ad-ea3a-4b73-a305-02a152863978,1,0,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,1,0,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,1,0,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,1,0,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,1,0,9c3bc502-bcb1-4c90-ae43-53c798958339,9c3bc502-bcb1-4c90-ae43-53c798958339,1,0,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,1,0,cfc0adf6-87b4-4c8a-91e2-46c2616b319b,cfc0adf6-87b4-4c8a-91e2-46c2616b319b,1,0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,1,0,5eb4ca7f-027a-4860-a167-e6b424527e7a,5eb4ca7f-027a-4860-a167-e6b424527e7a,1,0,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,1,0,6871015f-d959-4a77-a091-a23cb4ebd8f9,6871015f-d959-4a77-a091-a23cb4ebd8f9,1,0,e5e1631b-a494-4e73-b356-b4330b84cc88,e5e1631b-a494-4e73-b356-b4330b84cc88,1,0,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,1,0,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,1,0,4dbf114a-5402-40b0-9cab-19601aa8328e,4dbf114a-5402-40b0-9cab-19601aa8328e,1,0,a0856ca2-6a66-4108-b6d4-82443cdccca6,a0856ca2-6a66-4108-b6d4-82443cdccca6,1,0,378b0708-a0a1-4c82-b55a-796acb27e696,378b0708-a0a1-4c82-b55a-796acb27e696,1,0,8e462c0e-c67a-45e9-9871-1f976b01632d,8e462c0e-c67a-45e9-9871-1f976b01632d,1,0,c5335e1f-3e47-46b7-b695-0653f825d855,c5335e1f-3e47-46b7-b695-0653f825d855,1,0,d7faad11-1e35-460c-8943-49370f328c03,d7faad11-1e35-460c-8943-49370f328c03,1,0,e4726010-85c5-4ccc-b574-4b3b55f0d391,e4726010-85c5-4ccc-b574-4b3b55f0d391,1,0,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,1,0,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,1,0,1f4f839a-4e19-45b8-a988-13ee604c269c,1f4f839a-4e19-45b8-a988-13ee604c269c,1,0,b3aa97e1-baef-45f4-9179-052f35527a5e,b3aa97e1-baef-45f4-9179-052f35527a5e,1,0,d613941f-ed4c-4957-b469-ea6b0d2a121d,d613941f-ed4c-4957-b469-ea6b0d2a121d,1,0,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0d8d08e3-194f-416c-a1e0-aa92b40b7911,1,0,af0178fe-eb3a-485b-9acf-35c8702aa330,af0178fe-eb3a-485b-9acf-35c8702aa330,1,0,201d323b-4c0c-4c93-ae43-43a378ec0d9e,201d323b-4c0c-4c93-ae43-43a378ec0d9e,1,0,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,1,0,c513ceb0-0855-43ce-a311-c9bea88e2563,c513ceb0-0855-43ce-a311-c9bea88e2563,1,0,974bfc13-85c2-454a-b562-e72384eb4c31,974bfc13-85c2-454a-b562-e72384eb4c31,1,0,69cd6adc-b129-4fbc-804d-8d5aaef77280,69cd6adc-b129-4fbc-804d-8d5aaef77280,1,0,3431a3de-cb9d-46dc-b597-3203831796a9,3431a3de-cb9d-46dc-b597-3203831796a9,1,0,f3866271-04ed-4963-852e-cf41e9e18e1d,f3866271-04ed-4963-852e-cf41e9e18e1d,1,0,b77e5ec2-35cd-43ae-957f-af35214fa621,b77e5ec2-35cd-43ae-957f-af35214fa621,1,0,4a04d83d-cadd-4f36-9ec8-f926259c18ba,4a04d83d-cadd-4f36-9ec8-f926259c18ba,1,0,85e670c0-1616-4611-984c-3d40e890b2e9,85e670c0-1616-4611-984c-3d40e890b2e9,1,0,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,1,0,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1,0,f1693207-2637-412a-972f-2bc79b9c7fc8,f1693207-2637-412a-972f-2bc79b9c7fc8,1,0,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,1,0,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,1,0,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,1,0,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,1,0,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,1,0,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,1,0,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,1,0,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,1,0,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,1,0,55bce105-51c0-452e-9eec-b960fe740db2,55bce105-51c0-452e-9eec-b960fe740db2,1,0,776c171d-5dd5-4965-94dc-c2fe6792d5f2,776c171d-5dd5-4965-94dc-c2fe6792d5f2,1,0,86bb1105-702a-47be-906a-1821a69b1b6c,86bb1105-702a-47be-906a-1821a69b1b6c,1,0,40653767-9542-44e9-a84b-ffee75584638,40653767-9542-44e9-a84b-ffee75584638,1,0,49bd152e-479a-46fe-b3af-26ed9181dc34,49bd152e-479a-46fe-b3af-26ed9181dc34,1,0,0a742dd2-1ff4-42de-b303-f2bb01b36fe2,0a742dd2-1ff4-42de-b303-f2bb01b36fe2,1,0,69e13959-51ad-4ac2-9cfc-17ac28b78c78,69e13959-51ad-4ac2-9cfc-17ac28b78c78,1,0,f890ca1b-f2c2-4630-9002-301b759ca6d9,f890ca1b-f2c2-4630-9002-301b759ca6d9,1,0,08c8a9bf-7b89-4d0e-a496-4c7efeca0577,08c8a9bf-7b89-4d0e-a496-4c7efeca0577,1,0,f6c2b015-9cfc-40d2-a93f-b0e88db4a23f,f6c2b015-9cfc-40d2-a93f-b0e88db4a23f,1,0,103f3d8f-e47a-4772-bdd7-dd5f8508d22b,103f3d8f-e47a-4772-bdd7-dd5f8508d22b,1,0,ba8ea271-8716-49ef-8b10-f4b5798c1f62,ba8ea271-8716-49ef-8b10-f4b5798c1f62,1,0,3633c30c-9479-4801-89cc-a5734a41e465,3633c30c-9479-4801-89cc-a5734a41e465,1,0,f295c68d-7e29-48b8-a95a-56e96d9843c1,f295c68d-7e29-48b8-a95a-56e96d9843c1,1,0,7ebe16ee-8e5d-4b05-89b5-9539f73be90c,7ebe16ee-8e5d-4b05-89b5-9539f73be90c,1,0,ea5d0221-fb1e-4626-862a-9c1209365d8f,ea5d0221-fb1e-4626-862a-9c1209365d8f,1,0,12bce69b-933c-4ce4-9d29-a47f3db0226e,12bce69b-933c-4ce4-9d29-a47f3db0226e,1,0,82dcd6a3-c35b-421c-a8f9-77855ad2abca,82dcd6a3-c35b-421c-a8f9-77855ad2abca,1,0,ad0b1720-282e-49d4-af80-324a887963c3,ad0b1720-282e-49d4-af80-324a887963c3,1,0,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,1,0,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,1,0,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,1,0,fcb97a46-d5fd-4bb5-b899-17723a9fe346,fcb97a46-d5fd-4bb5-b899-17723a9fe346,1,0,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,1,0,fbaa5b0a-56dc-4bf1-b1b2-e48073f63d13,fbaa5b0a-56dc-4bf1-b1b2-e48073f63d13,1,0,2e54b3e8-6672-48d5-802a-23d5144fed79,2e54b3e8-6672-48d5-802a-23d5144fed79,1,0,2a7c4ae2-aab3-48b3-b04f-7be6989939e8,2a7c4ae2-aab3-48b3-b04f-7be6989939e8,1,0,a92acf0e-9132-4456-9a82-1543d98ca453,a92acf0e-9132-4456-9a82-1543d98ca453,1,0,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,1,0,daad5f66-3bb4-4389-bca1-bf528ad993a3,daad5f66-3bb4-4389-bca1-bf528ad993a3,1,0,ad043f15-b2c9-4a05-82b9-6428708584b2,ad043f15-b2c9-4a05-82b9-6428708584b2,1,0,d2fd8650-d13a-411d-8206-61b16016bd82,d2fd8650-d13a-411d-8206-61b16016bd82,1,0,643f4f37-fa02-4976-8701-7a5a44b0109a,643f4f37-fa02-4976-8701-7a5a44b0109a,1,0,278a0559-07b2-4ee3-a821-c0395f9a33c1,278a0559-07b2-4ee3-a821-c0395f9a33c1,1,0,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,1,0,54d9f5bb-599c-4d4b-b616-1445e7461813,54d9f5bb-599c-4d4b-b616-1445e7461813,1,0,7d0dbd52-8bb0-4d72-87fa-2d7066e5e189,7d0dbd52-8bb0-4d72-87fa-2d7066e5e189,1,0,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,1,0,a1a44832-6026-47ae-affd-5b6d52e84307,a1a44832-6026-47ae-affd-5b6d52e84307,1,0,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,1,0,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,1,0,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,1,0,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,1,0,b67a509d-bb0f-427e-b447-4d4617078d6a,b67a509d-bb0f-427e-b447-4d4617078d6a,1,0,968ecfca-cf06-4952-83c1-a151e46c78a9,968ecfca-cf06-4952-83c1-a151e46c78a9,1,0,4945c734-a47d-44e9-8a7f-94b31911c1ce,4945c734-a47d-44e9-8a7f-94b31911c1ce,1,0,20a194e9-06cf-4013-bfa4-bc15554a54d0,20a194e9-06cf-4013-bfa4-bc15554a54d0,1,0,ab4f3d3d-bb5a-4dbc-b699-808458036b00,ab4f3d3d-bb5a-4dbc-b699-808458036b00,1,0,09761456-2273-437f-9316-0391cfaa81b3,09761456-2273-437f-9316-0391cfaa81b3,1,0,93922abc-98b9-4b3d-a5c8-7294378a69e1,93922abc-98b9-4b3d-a5c8-7294378a69e1,1,0,3c0a9c45-8e57-43fa-8ae3-26b15571f2cd,3c0a9c45-8e57-43fa-8ae3-26b15571f2cd,1,0,85223d37-2503-4783-94dc-fe6265e718d5,85223d37-2503-4783-94dc-fe6265e718d5,1,0,0918cd76-56e5-4314-8a1c-c21d023ba6f8,0918cd76-56e5-4314-8a1c-c21d023ba6f8,1,0,9db21c2e-79fa-44e4-902e-416abfccb54a,9db21c2e-79fa-44e4-902e-416abfccb54a,1,0,fb082db3-197b-4d1e-b9ea-362624d547ee,fb082db3-197b-4d1e-b9ea-362624d547ee,1,0,c09dcf00-a45a-4487-99c5-d3a37956ec88,c09dcf00-a45a-4487-99c5-d3a37956ec88,1,0,531a5a0c-6ac9-4e93-8caa-42d9aad0bc82,531a5a0c-6ac9-4e93-8caa-42d9aad0bc82,1,0,2714e1b6-6b02-43a1-bc94-2934b429ed35,2714e1b6-6b02-43a1-bc94-2934b429ed35,1,0,e33c73b2-ef0b-49b7-a65f-ab2c814ad256,e33c73b2-ef0b-49b7-a65f-ab2c814ad256,1,0,4c7016da-9991-4917-8eaa-e760cc9e29d1,4c7016da-9991-4917-8eaa-e760cc9e29d1,1,0,febb3770-5c11-4ada-9e49-a27950bdaddf,febb3770-5c11-4ada-9e49-a27950bdaddf,1,0,d7b57669-e538-4e54-ab1b-8428f0586466,d7b57669-e538-4e54-ab1b-8428f0586466,1,0,223e4ccf-5638-4576-bd88-7c54be68de47,223e4ccf-5638-4576-bd88-7c54be68de47,1,0,e3bae40b-5316-4392-8c82-b601922a6582,e3bae40b-5316-4392-8c82-b601922a6582,1,0,26806602-54be-4b2f-96ae-3e2a31616a4e,26806602-54be-4b2f-96ae-3e2a31616a4e,1,0,738fc48f-5160-4786-84bb-053c188662ce,738fc48f-5160-4786-84bb-053c188662ce,1,0,6e883b67-f74c-4791-8fb3-446534e3a6db,6e883b67-f74c-4791-8fb3-446534e3a6db,1,0,24fed307-445d-44b5-8964-9d08d1003061,24fed307-445d-44b5-8964-9d08d1003061,1,0,8e4c2dbe-15b7-4e04-9f07-892d70741a97,8e4c2dbe-15b7-4e04-9f07-892d70741a97,1,0,67691860-e374-451f-aee3-05a35df2a477,67691860-e374-451f-aee3-05a35df2a477,1,0,9c484a15-039e-416d-af97-4c2bd90fd873,9c484a15-039e-416d-af97-4c2bd90fd873,1,0,534855e3-4cf2-471c-b982-7138917050c9,534855e3-4cf2-471c-b982-7138917050c9,1,0,4c72b944-d000-4920-aec8-54029f88ddf4,4c72b944-d000-4920-aec8-54029f88ddf4,1,0,b4033d05-05c2-4617-80d9-abfa389c47f4,b4033d05-05c2-4617-80d9-abfa389c47f4,1,0,0f46b124-1575-4984-9bc1-b5e4696efc74,0f46b124-1575-4984-9bc1-b5e4696efc74,1,0,a0183a0b-1459-4b32-924c-6ea156f02125,a0183a0b-1459-4b32-924c-6ea156f02125,1,0,fc2dc619-41e0-4cce-a080-d5c8de5029a8,fc2dc619-41e0-4cce-a080-d5c8de5029a8,1,0,9609e5fb-fd11-463c-8679-9b10fc0993ed,9609e5fb-fd11-463c-8679-9b10fc0993ed,1,0,f438b941-2aae-4c67-81dc-340f6acc25b1,f438b941-2aae-4c67-81dc-340f6acc25b1,1,0,48075630-2041-48c3-9eb0-d2107cfcb249,48075630-2041-48c3-9eb0-d2107cfcb249,1,0,7d7e7e13-eb42-420d-9bfc-14fab901c3c1,7d7e7e13-eb42-420d-9bfc-14fab901c3c1,1,0,aa29e1be-4e99-4136-8dc1-0124908979ad,aa29e1be-4e99-4136-8dc1-0124908979ad,1,0,0d76799d-7fc7-446b-88fb-dca839de00a5,0d76799d-7fc7-446b-88fb-dca839de00a5,1,0,cb5674c3-0d91-4948-bafd-d9ef44a2a69d,cb5674c3-0d91-4948-bafd-d9ef44a2a69d,1,0,ea4a869c-861c-412c-a3be-de1c57d1a251,ea4a869c-861c-412c-a3be-de1c57d1a251,1,0,eeafcc8c-fbe2-4bb4-8b8a-cf663208258d,eeafcc8c-fbe2-4bb4-8b8a-cf663208258d,1,0,6a3bd39a-59cb-4763-b49f-7ab67167a8b7,6a3bd39a-59cb-4763-b49f-7ab67167a8b7,1,0,6c1d8f6c-db33-46dc-8824-aceacb4bf9c1,6c1d8f6c-db33-46dc-8824-aceacb4bf9c1,1,0,50ac390d-324f-40bd-b3df-0468a63b94b6,50ac390d-324f-40bd-b3df-0468a63b94b6,1,0,80337710-2c60-45c4-ae1f-bb42731fb611,80337710-2c60-45c4-ae1f-bb42731fb611,1,0,9dcf467e-7701-4c7b-b747-95f4d9b9295c,9dcf467e-7701-4c7b-b747-95f4d9b9295c,1,0,dd07b255-25af-466e-a224-c561a8ca567b,dd07b255-25af-466e-a224-c561a8ca567b,1,0,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,1,0,1e9e115a-e65b-4346-b0d3-47cf1dbe75f2,1e9e115a-e65b-4346-b0d3-47cf1dbe75f2,1,0,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,1,0,67993b79-6aca-4641-b2e2-0a15f44e47d5,67993b79-6aca-4641-b2e2-0a15f44e47d5,1,0,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,1,0,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,1,0,cd59707e-b9e4-4038-8203-ae22a8060e8d,cd59707e-b9e4-4038-8203-ae22a8060e8d,1,0,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,1,0,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,1,0,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,1,0,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,1,0,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,1,0,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,1,0,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,1,0,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,1,0,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,1,0,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,1,0,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,1,0,65f3ad72-ed03-482b-a2f1-05053eef408a,65f3ad72-ed03-482b-a2f1-05053eef408a,1,0,e177e258-7d0c-4fe1-80e5-3b89de9e23d9,e177e258-7d0c-4fe1-80e5-3b89de9e23d9,1,0,3f25ac9f-c6b4-4ccc-bec4-a90c99403823,3f25ac9f-c6b4-4ccc-bec4-a90c99403823,1,0,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,1,0,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,1,0,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,1,0,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,1,0,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,1,0,0d89036c-af6e-4709-847c-0dab74a33d72,0d89036c-af6e-4709-847c-0dab74a33d72,1,0,7d223aab-d4f6-41d5-a701-6fe03517cf50,7d223aab-d4f6-41d5-a701-6fe03517cf50,1,0,631cdd15-eb1f-4903-9073-4de3911ba2e6,631cdd15-eb1f-4903-9073-4de3911ba2e6,1,0,6b10ab0a-8d4e-4847-9ce7-663fb4770c35,6b10ab0a-8d4e-4847-9ce7-663fb4770c35,1,0,42630eee-ce93-40a8-b96e-3eb759f48976,42630eee-ce93-40a8-b96e-3eb759f48976,1,0,174e0187-cf34-4949-8dc2-a1f9aece78dc,174e0187-cf34-4949-8dc2-a1f9aece78dc,1,0,5d9f2db6-704d-45cb-96c3-e59e47ad4fea,5d9f2db6-704d-45cb-96c3-e59e47ad4fea,1,0,e4dbeb50-292f-452f-a0da-a55e5ea936e4,e4dbeb50-292f-452f-a0da-a55e5ea936e4,1,0,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,1,0,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,1,0,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,1,0,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,1,0,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,1,0,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,1,0,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,1,0,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,1,0,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,1,0,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,1,0,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,1,0,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,1,0,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,1,0,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,1,0,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,1,0,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,1,0,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,1,0,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,1,0,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,1,0,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,1,0,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,1,0,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,1,0,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,1,0,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,1,0,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,1,0,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,1,0,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,1,0,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,1,0,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,1,0,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,1,0,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,1,0,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,1,0,5b379a72-8605-4e88-84cb-14272a3b8f5f,5b379a72-8605-4e88-84cb-14272a3b8f5f,1,0,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,1,0,ec44f92a-06bf-4a53-a7ba-fbe9846a68a6,ec44f92a-06bf-4a53-a7ba-fbe9846a68a6,1,0,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,1,0,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,1,0,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,1,0,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,1,0,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,1,0,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,1,0,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,1,0,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,1,0,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,1,0,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,1,0,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,1,0,612f3b95-d7db-4b33-92b5-4873205b424b,612f3b95-d7db-4b33-92b5-4873205b424b,1,0,d7afa1a6-0ac9-4527-8f1c-5317ce259b52,d7afa1a6-0ac9-4527-8f1c-5317ce259b52,1,0,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,1,0,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,1,0,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,1,0,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,1,0,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,1,0,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,1,0,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,1,0,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,1,0,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,1,0,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,1,0,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,1,0,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,1,0,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,1,0,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,1,0,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,1,0,58cdbd20-a7f4-4c4c-8a4e-638714cc2699,58cdbd20-a7f4-4c4c-8a4e-638714cc2699,1,0,616cd2cc-eaf4-4586-bca1-c044429b491a,616cd2cc-eaf4-4586-bca1-c044429b491a,1,0,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,1,0,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,1,0,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,1,0,81d900be-ddc1-417f-ae2c-1aacf040de9a,81d900be-ddc1-417f-ae2c-1aacf040de9a,1,0,c65f69ce-be78-4e8d-b91d-293c4108ce77,c65f69ce-be78-4e8d-b91d-293c4108ce77,1,0,521a5717-0b38-401d-bd72-30cee219bd14,521a5717-0b38-401d-bd72-30cee219bd14,1,0,977c30dc-6f27-4931-9fd5-d12ed147e3ec,977c30dc-6f27-4931-9fd5-d12ed147e3ec,1,0,eea4f72e-dd1b-46c7-b270-876a482236b3,eea4f72e-dd1b-46c7-b270-876a482236b3,1,0,25e8d286-dfbb-4fdf-974b-fe3f6f76eac0,25e8d286-dfbb-4fdf-974b-fe3f6f76eac0,1,0,2d249dad-8b4f-462b-ab13-892639a6e071,2d249dad-8b4f-462b-ab13-892639a6e071,1,0,f6249bf4-d2e7-48f3-808f-d776915d14cb,f6249bf4-d2e7-48f3-808f-d776915d14cb,1,0,75f11ecd-c87a-4a14-a7ca-c755f63d7cf8,75f11ecd-c87a-4a14-a7ca-c755f63d7cf8,1,0,883cdeb0-e747-4157-bbe7-0ebc423a82af,883cdeb0-e747-4157-bbe7-0ebc423a82af,1,0,ba62ac73-91da-4dad-abc7-3cf8acf7e315,ba62ac73-91da-4dad-abc7-3cf8acf7e315,1,0,6a71416d-dba1-4883-9264-597ecf9d6270,6a71416d-dba1-4883-9264-597ecf9d6270,1,0,ce3fc202-7893-4d1b-9c8f-1b3349a5c147,ce3fc202-7893-4d1b-9c8f-1b3349a5c147,1,0,6593baab-fce0-49ed-867e-be242bfc08d7,6593baab-fce0-49ed-867e-be242bfc08d7,1,0,403390cf-d3f8-4dfa-b83d-e2fca4ee0dff,403390cf-d3f8-4dfa-b83d-e2fca4ee0dff,1,0,57aed64d-da61-4c18-af21-dab3afdc5c03,57aed64d-da61-4c18-af21-dab3afdc5c03,1,0,452822b4-a590-44db-ab77-d8c01f7300e7,452822b4-a590-44db-ab77-d8c01f7300e7,1,0,e1132cbb-7045-47e2-bbc7-6e92e4dff131,e1132cbb-7045-47e2-bbc7-6e92e4dff131,1,0,62a71ba7-3226-4d10-8cc9-ac9908a00ae7,62a71ba7-3226-4d10-8cc9-ac9908a00ae7,1,0,f5ad6743-b19b-44c4-b3d1-2e39d74a4abd,f5ad6743-b19b-44c4-b3d1-2e39d74a4abd,1,0,85d7ea13-c521-44b8-9dce-5e57529a21db,85d7ea13-c521-44b8-9dce-5e57529a21db,1,0,4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d,4b89b7fb-31d9-43c7-9f7e-b0c31fa3331d,1,0,6ce1d71d-7548-4ee7-be78-21ae23d5a08d,6ce1d71d-7548-4ee7-be78-21ae23d5a08d,1,0,19b29d30-e395-42f2-b700-7474bb2cdcb7,19b29d30-e395-42f2-b700-7474bb2cdcb7,1,0,0c38782c-6559-4f1c-88af-aa022285ffbd,0c38782c-6559-4f1c-88af-aa022285ffbd,1,0,eed23203-924d-4092-a1a8-a7cdd72489e5,eed23203-924d-4092-a1a8-a7cdd72489e5,1,0,b0deb957-624b-4bcb-824c-76aedf1affe9,b0deb957-624b-4bcb-824c-76aedf1affe9,1,0,9934e608-593d-45d0-9df3-539f0c8fc385,9934e608-593d-45d0-9df3-539f0c8fc385,1,0,80da4126-4319-425f-8427-7d60652cf754,80da4126-4319-425f-8427-7d60652cf754,1,0,05236ace-bcdd-4eb8-a1fb-5843ee311d10,05236ace-bcdd-4eb8-a1fb-5843ee311d10,1,0,0f1b284c-6c9e-4799-bc47-3326c4b7bec2,0f1b284c-6c9e-4799-bc47-3326c4b7bec2,1,0,449060fd-4711-4b9e-93e0-11b35c314fb3,449060fd-4711-4b9e-93e0-11b35c314fb3,1,0,e7efa9d5-ea93-4070-87bb-a4d95116d1b4,e7efa9d5-ea93-4070-87bb-a4d95116d1b4,1,0,0614d340-6524-4715-978d-87ab21377e72,0614d340-6524-4715-978d-87ab21377e72,1,0,d47daac5-ec3b-4d4e-8b01-045a37f7074d,d47daac5-ec3b-4d4e-8b01-045a37f7074d,1,0,9d6ed3b9-35cd-47c0-9dfc-732e5066a071,9d6ed3b9-35cd-47c0-9dfc-732e5066a071,1,0,912cbd30-1ed5-4888-a4b6-98e9215b28e9,912cbd30-1ed5-4888-a4b6-98e9215b28e9,1,0,abf093ce-be63-487d-8be4-be282aa475be,abf093ce-be63-487d-8be4-be282aa475be,1,0,7a910ad6-b922-4716-8140-1540d76296b2,7a910ad6-b922-4716-8140-1540d76296b2,1,0,3fa9aa34-382c-49fa-87d8-34bedcde5836,3fa9aa34-382c-49fa-87d8-34bedcde5836,1,0,5189beb9-b939-4f97-aca0-c2f3492ac8b9,5189beb9-b939-4f97-aca0-c2f3492ac8b9,1,0,0b139d7a-b583-4082-b9f2-8f3fb444bd51,0b139d7a-b583-4082-b9f2-8f3fb444bd51,1,0,b8931f98-c1d7-4e9b-be43-065064e7ba95,b8931f98-c1d7-4e9b-be43-065064e7ba95,1,0,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,1,0,60848308-931c-4da3-aa4b-37f6fb4b194f,60848308-931c-4da3-aa4b-37f6fb4b194f,1,0,0761c32c-1de6-4c40-9178-64aeb46b6622,0761c32c-1de6-4c40-9178-64aeb46b6622,1,0,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,1,0,54b14504-503b-45f6-9b5d-785b49829425,54b14504-503b-45f6-9b5d-785b49829425,1,0,80d3ee33-1cdc-4af6-85c2-787094526592,80d3ee33-1cdc-4af6-85c2-787094526592,1,0,c8b28660-6cb0-4ef5-85c2-a75da863ba96,c8b28660-6cb0-4ef5-85c2-a75da863ba96,1,0,1cd607b4-49fc-460e-a014-6afe50083b47,1cd607b4-49fc-460e-a014-6afe50083b47,1,0,a215e767-36e9-4408-9d18-7b4be757022a,a215e767-36e9-4408-9d18-7b4be757022a,1,0,a3e262bc-9f0d-480d-a1d1-c2326105d22d,a3e262bc-9f0d-480d-a1d1-c2326105d22d,1,0,8eae0c79-288b-4773-90bb-49299ad45628,8eae0c79-288b-4773-90bb-49299ad45628,1,0,2faa5594-f1b4-4312-b674-82fdf9623105,2faa5594-f1b4-4312-b674-82fdf9623105,1,0,185c1ad3-b5db-49b6-9342-d08e1bf64903,185c1ad3-b5db-49b6-9342-d08e1bf64903,1,0,3c69a4ad-001d-4421-88f6-412e15d710d6,3c69a4ad-001d-4421-88f6-412e15d710d6,1,0,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,1,0,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,1,0,6a68a08a-ea37-4573-ab9f-ec822f6d250b,6a68a08a-ea37-4573-ab9f-ec822f6d250b,1,0,00e87d04-8104-420b-b2c6-7304889a75b2,00e87d04-8104-420b-b2c6-7304889a75b2,1,0,bde86820-f7bb-463b-97d0-bfa5f8323af0,bde86820-f7bb-463b-97d0-bfa5f8323af0,1,0,b9b24093-810c-4158-846d-e2c7aea54d36,b9b24093-810c-4158-846d-e2c7aea54d36,1,0,289a6aac-dc4e-4fae-8815-853e78d450bb,289a6aac-dc4e-4fae-8815-853e78d450bb,1,0,557e7d89-83ed-45d0-86cc-6e355f14025d,557e7d89-83ed-45d0-86cc-6e355f14025d,1,0,d681b26b-dd8d-46d7-986e-10f05c37a1e4,d681b26b-dd8d-46d7-986e-10f05c37a1e4,1,0,4d3c216e-c04f-4884-8681-1c861c50ce7d,4d3c216e-c04f-4884-8681-1c861c50ce7d,1,0,4a41eee0-c973-4824-a07c-9fcf731f055e,4a41eee0-c973-4824-a07c-9fcf731f055e,1,0,ee756c33-f408-4449-a6bb-3186a0421362,ee756c33-f408-4449-a6bb-3186a0421362,1,0,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,1,0,6ff66622-4d20-4696-9fe9-4b4faeb21d96,6ff66622-4d20-4696-9fe9-4b4faeb21d96,1,0,46237eec-c206-4d21-883c-27599b9ed38c,46237eec-c206-4d21-883c-27599b9ed38c,1,0,92cbfe14-35c5-440b-9a13-ef8c8ab0630a,92cbfe14-35c5-440b-9a13-ef8c8ab0630a,1,0,8ce759ff-f579-461c-bb1e-9ac2b01e88df,8ce759ff-f579-461c-bb1e-9ac2b01e88df,1,0,8b451909-2c15-48f2-b869-65e7031cc542,8b451909-2c15-48f2-b869-65e7031cc542,1,0,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,1,0,7b377fca-4466-476f-9eb2-0b00141103d6,7b377fca-4466-476f-9eb2-0b00141103d6,1,0,9ce5eceb-f366-4035-956e-62721358b154,9ce5eceb-f366-4035-956e-62721358b154,1,0,8b5358e9-5810-45a7-a49e-fe7fe63c73f3,8b5358e9-5810-45a7-a49e-fe7fe63c73f3,1,0,23afa5f6-9c3f-4f79-885b-b20785fc5e45,23afa5f6-9c3f-4f79-885b-b20785fc5e45,1,0,379a8bf7-b760-43d6-b5c4-6393b00e294f,379a8bf7-b760-43d6-b5c4-6393b00e294f,1,0,e44b737f-9076-4070-94ba-ed0b00e60393,e44b737f-9076-4070-94ba-ed0b00e60393,1,0,5582e533-b908-40c9-8c81-876906f0d47e,5582e533-b908-40c9-8c81-876906f0d47e,1,0,71656b8b-2d9b-4ac9-884d-72f47b9c69b7,71656b8b-2d9b-4ac9-884d-72f47b9c69b7,1,0,e0797541-88c2-4ad9-9ff4-d56899e6a6ee,e0797541-88c2-4ad9-9ff4-d56899e6a6ee,1,0,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,1,0,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,1,0,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1,0,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,1,0,28080e64-cd09-410d-9e3e-3ffdb43d3ace,28080e64-cd09-410d-9e3e-3ffdb43d3ace,1,0,9cfd3d38-4e0e-40f4-ae77-7a997646e4b2,9cfd3d38-4e0e-40f4-ae77-7a997646e4b2,1,0,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,1,0,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,1,0,149e72b8-cc03-4b4f-8ca4-07987600c34d,149e72b8-cc03-4b4f-8ca4-07987600c34d,1,0,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,1,0,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,1,0,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,1,0,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,1,0,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,1,0,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,1,0,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,1,0,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,1,0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,1,0,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,1,0,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,1,0,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,1,0,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,1,0,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,1,0,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,1,0,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,1,0,d3443b92-32f5-4ac0-8356-062647efe3d8,d3443b92-32f5-4ac0-8356-062647efe3d8,1,0,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,1,0,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,1,0,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,1,0,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,1,0,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,1,0,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,1,0,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,1,0,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,1,0,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,1,0,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,1,0,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,1,0,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,1,0,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,1,0,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,1,0,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,1,0,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,1,0,b7295e8e-0aa4-4a49-81ea-0594a358e9ca,b7295e8e-0aa4-4a49-81ea-0594a358e9ca,1,0,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,1,0,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,1,0,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,1,0,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,1,0,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,1,0,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,1,0,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,1,0,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,1,0,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,1,0,aa63c001-c3da-4179-8fd8-fe2ff510511e,aa63c001-c3da-4179-8fd8-fe2ff510511e,1,0,b2e894b0-6443-4a52-95b6-6b564f809680,b2e894b0-6443-4a52-95b6-6b564f809680,1,0,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,1,0,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,1,0,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,1,0,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,1,0,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,1,0,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,1,0,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,1,0,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,1,0,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,1,0,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,1,0,ec966ef2-b291-4937-a164-5c2b461871f8,ec966ef2-b291-4937-a164-5c2b461871f8,1,0,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,1,0,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,1,0,df81cc63-26f2-4e66-bf0b-fd083a6a7d7b,df81cc63-26f2-4e66-bf0b-fd083a6a7d7b,1,0,8a8848b8-345a-452d-bf95-28f9c91c7e95,8a8848b8-345a-452d-bf95-28f9c91c7e95,1,0,440ecfe8-72fd-447b-8680-c4a8c43f2c72,440ecfe8-72fd-447b-8680-c4a8c43f2c72,1,0,5afe3a0f-1bbc-4f04-87b3-f98d54b65a42,5afe3a0f-1bbc-4f04-87b3-f98d54b65a42,1,0,ee9e8f50-4d4f-43aa-99eb-cda2308c903e,ee9e8f50-4d4f-43aa-99eb-cda2308c903e,1,0,4ff043c1-6c0b-4889-a684-23da5a35b9c2,4ff043c1-6c0b-4889-a684-23da5a35b9c2,1,0,6fe56ecb-c969-4c03-8e6b-65395c29e817,6fe56ecb-c969-4c03-8e6b-65395c29e817,1,0,48627a8d-b108-43b8-a58e-fd98e4220639,48627a8d-b108-43b8-a58e-fd98e4220639,1,0,2a8eb62d-2795-48ab-ae02-68527996f411,2a8eb62d-2795-48ab-ae02-68527996f411,1,0,d3bf09be-0f21-4dc3-a525-1c4dc75928ea,d3bf09be-0f21-4dc3-a525-1c4dc75928ea,1,0,5ca880c5-7c34-4c31-a2b8-46265ddea7d4,5ca880c5-7c34-4c31-a2b8-46265ddea7d4,1,0,a9441693-87ca-4157-98e1-63375852755c,a9441693-87ca-4157-98e1-63375852755c,1,0,6303ea55-e8ed-4acc-9717-941eefafc2a9,6303ea55-e8ed-4acc-9717-941eefafc2a9,1,0,5b4e1b83-fc10-4acc-bef7-81c73dbbc453,5b4e1b83-fc10-4acc-bef7-81c73dbbc453,1,0,d0b17206-3949-4513-a47f-02e1a8ba369a,d0b17206-3949-4513-a47f-02e1a8ba369a,1,0,cb4f20d4-13e6-4c27-b491-da7931f4bf05,cb4f20d4-13e6-4c27-b491-da7931f4bf05,1,0,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,1,0,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,1,0,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,1,0,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,1,0,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,1,0,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,1,0,2abbd53a-0ead-42af-8df6-fde663aea300,2abbd53a-0ead-42af-8df6-fde663aea300,1,0,24611bf9-5492-443a-935c-a0058e86493f,24611bf9-5492-443a-935c-a0058e86493f,1,0,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,1,0,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,1,0,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,1,0,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,1,0,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,1,0,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,1,0,f7e73257-fae1-465a-ae74-faaa0273a416,f7e73257-fae1-465a-ae74-faaa0273a416,1,0,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,1,0,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,1,0,13beb01d-dd08-4a6d-863b-651e70bbf51f,13beb01d-dd08-4a6d-863b-651e70bbf51f,1,0,94bc76ae-72a0-418f-98c4-ae0a0326a2da,94bc76ae-72a0-418f-98c4-ae0a0326a2da,1,0,784475ff-eec5-462a-a511-ba31f8374c2e,784475ff-eec5-462a-a511-ba31f8374c2e,1,0,b5b56a64-5550-4da9-8872-d42ab871d21c,b5b56a64-5550-4da9-8872-d42ab871d21c,1,0,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,1,0,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,1,0,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,1,0,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,1,0,27e0b5d9-1a4c-45b8-8969-d1d1c39129c1,27e0b5d9-1a4c-45b8-8969-d1d1c39129c1,1,0,626cbb27-6af2-4a9a-959e-15af4417e489,626cbb27-6af2-4a9a-959e-15af4417e489,1,0,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,1,0,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,1,0,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,1,0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,1,0,356a8091-4c0b-41d0-b8d2-963b3a807469,356a8091-4c0b-41d0-b8d2-963b3a807469,1,0,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,1,0,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,1,0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,1,0,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,1,0,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,1,0,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,1,0,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,1,0,f00e93bf-6e3b-4819-a4e1-33471a6d0fff,f00e93bf-6e3b-4819-a4e1-33471a6d0fff,1,0,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,1,0,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,1,0,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,1,0,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1,0,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,1,0,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,1,0,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,1,0,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,1,0,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,1,0,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,1,0,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,1,0,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,1,0,ee008096-1ae8-4a64-9d3d-14cb15c8be70,ee008096-1ae8-4a64-9d3d-14cb15c8be70,1,0,a0a85b22-63ee-4a05-8b0d-1feb9ee07b0a,a0a85b22-63ee-4a05-8b0d-1feb9ee07b0a,1,0,a4754a7b-971f-4517-963e-b7cb9d57f86d,a4754a7b-971f-4517-963e-b7cb9d57f86d,1,0,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,1,0,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,1,0,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,1,0,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,1,0,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,1,0,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,1,0,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,1,0,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,1,0,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,1,0,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,1,0,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,1,0,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,1,0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,1,0,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,1,0,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,1,0,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,1,0,2bc2ca58-6cc0-4d4b-8672-f9328c86c2c1,2bc2ca58-6cc0-4d4b-8672-f9328c86c2c1,1,0,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,1,0,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,1,0,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,1,0,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,1,0,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,1,0,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,1,0,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,1,0,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,1,0,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,1,0,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,1,0,733d4494-01e2-46f5-a49b-f289267a90c9,733d4494-01e2-46f5-a49b-f289267a90c9,1,0,1e14d062-1d5a-4939-8ce6-4d9514990376,1e14d062-1d5a-4939-8ce6-4d9514990376,1,0,f86f24d2-9a83-47ae-9d95-b49a0a295770,f86f24d2-9a83-47ae-9d95-b49a0a295770,1,0,8368e1fa-da0c-4a9b-9d50-a122933c7899,8368e1fa-da0c-4a9b-9d50-a122933c7899,1,0,37986729-a275-4e86-8613-faee9a4f2525,37986729-a275-4e86-8613-faee9a4f2525,1,0,5814cb3a-8f7c-45b4-a590-b69d4912120f,5814cb3a-8f7c-45b4-a590-b69d4912120f,1,0,f06c8396-65ec-4ece-aed0-d45b2d8969b5,f06c8396-65ec-4ece-aed0-d45b2d8969b5,1,0,1faeab7f-7bd7-496d-8882-4aab6c425854,1faeab7f-7bd7-496d-8882-4aab6c425854,1,0,af922fb8-a99c-4154-89fe-d30a4d13024a,af922fb8-a99c-4154-89fe-d30a4d13024a,1,0,24c2f463-2bbb-471f-a409-507afad52caf,24c2f463-2bbb-471f-a409-507afad52caf,1,0,cbb07013-9ae1-43ec-8142-a724d788cb67,cbb07013-9ae1-43ec-8142-a724d788cb67,1,0,2403ac84-b513-4aa0-9a68-8d1ad705ce24,2403ac84-b513-4aa0-9a68-8d1ad705ce24,1,0,952b49e0-e1a1-4130-8fb2-083e3988255c,952b49e0-e1a1-4130-8fb2-083e3988255c,1,0,367b227f-f66e-4cec-9fc3-850bca8bc6c8,367b227f-f66e-4cec-9fc3-850bca8bc6c8,1,0,1a3a8a3a-dc34-4491-883d-57c3fb69840a,1a3a8a3a-dc34-4491-883d-57c3fb69840a,1,0,7fcb9d79-1144-4099-8d7f-309d3bf045a5,7fcb9d79-1144-4099-8d7f-309d3bf045a5,1,0,db418313-8583-48a9-9fec-e2c5de4fdf76,db418313-8583-48a9-9fec-e2c5de4fdf76,1,0,6277a3b5-b158-4b58-a92b-5efdf2dabac0,6277a3b5-b158-4b58-a92b-5efdf2dabac0,1,0,2f26970e-b964-43e2-8d6d-999bbc577689,2f26970e-b964-43e2-8d6d-999bbc577689,1,0,65a50026-88e7-45dd-bb0c-f212218ca093,65a50026-88e7-45dd-bb0c-f212218ca093,1,0,ed9e5fbe-1db8-4fb9-a9fa-bb1927cae196,ed9e5fbe-1db8-4fb9-a9fa-bb1927cae196,1,0,1dd2b2c4-00aa-4029-ba32-fe82aa5c6cbe,1dd2b2c4-00aa-4029-ba32-fe82aa5c6cbe,1,0,5c17a594-eb0b-4cdf-af35-0eaba968e065,5c17a594-eb0b-4cdf-af35-0eaba968e065,1,0,2f4ea53a-c84d-4d5f-ae7a-817a20ccd96a,2f4ea53a-c84d-4d5f-ae7a-817a20ccd96a,1,0,b2a39c8a-d884-4dfe-a593-e6788dabbd6b,b2a39c8a-d884-4dfe-a593-e6788dabbd6b,1,0,3d0afdb2-ab8f-43c0-920a-88ed85545b2f,3d0afdb2-ab8f-43c0-920a-88ed85545b2f,1,0,17477f72-0622-445c-9cb7-2c5a5a65bbe0,17477f72-0622-445c-9cb7-2c5a5a65bbe0,1,0,01a1fd57-6c09-4a5b-9f75-da4366159423,01a1fd57-6c09-4a5b-9f75-da4366159423,1,0,71d79b25-3682-4f2c-b6b2-a307e3e72844,71d79b25-3682-4f2c-b6b2-a307e3e72844,1,0,45c1ed0d-202e-4289-820f-e1de0f544386,45c1ed0d-202e-4289-820f-e1de0f544386,1,0,e889e80f-97c9-43c6-8268-d652764fcafb,e889e80f-97c9-43c6-8268-d652764fcafb,1,0,4eb48d3a-e2d5-4db5-b08b-4b6ccc701f77,4eb48d3a-e2d5-4db5-b08b-4b6ccc701f77,1,0,95ccaaf2-f6ca-4540-8a39-3c90121c4236,95ccaaf2-f6ca-4540-8a39-3c90121c4236,1,0,7c920b8b-1dbf-4f7e-99af-1ca784a59a64,7c920b8b-1dbf-4f7e-99af-1ca784a59a64,1,0,f47a9bec-2a9f-4955-a432-acb63a5b0e46,f47a9bec-2a9f-4955-a432-acb63a5b0e46,1,0,1ba73b6b-cb72-4370-a268-279dcd7a54b9,1ba73b6b-cb72-4370-a268-279dcd7a54b9,1,0,49de6b63-a845-4b5a-9818-18a3e0bb6fe8,49de6b63-a845-4b5a-9818-18a3e0bb6fe8,1,0,b787818e-5572-4ef2-ba54-1e9b69569824,b787818e-5572-4ef2-ba54-1e9b69569824,1,0,1e13bd37-61b5-4901-a607-e00e5d1900a8,1e13bd37-61b5-4901-a607-e00e5d1900a8,1,0,395b43e4-c18b-4f68-b99c-aed8d4b8cac9,395b43e4-c18b-4f68-b99c-aed8d4b8cac9,1,0,231d7b21-c00c-4782-b610-d56593be436f,231d7b21-c00c-4782-b610-d56593be436f,1,0,79250d1a-77ff-4015-a5b5-83460b1611e2,79250d1a-77ff-4015-a5b5-83460b1611e2,1,0,60018ee0-71ec-4975-a95d-f6f188748ff2,60018ee0-71ec-4975-a95d-f6f188748ff2,1,0,68d35468-279a-43ef-9d71-fed44a792177,68d35468-279a-43ef-9d71-fed44a792177,1,0,77bec3d8-582a-4156-861b-4902008f014c,77bec3d8-582a-4156-861b-4902008f014c,1,0,2ad1caba-7a89-4389-934f-419970260961,2ad1caba-7a89-4389-934f-419970260961,1,0,bfc1a708-662d-4dc1-82b4-7b09bb1b0751,bfc1a708-662d-4dc1-82b4-7b09bb1b0751,1,0,f88c4a72-368c-4f45-bb2c-d18f214a5079,f88c4a72-368c-4f45-bb2c-d18f214a5079,1,0,611876ba-7e6e-40c3-89a9-bb9b19cd1bfb,611876ba-7e6e-40c3-89a9-bb9b19cd1bfb,1,0,9dc2e313-c086-4fd9-83e8-911859ef480d,9dc2e313-c086-4fd9-83e8-911859ef480d,1,0,8a14ced0-9e45-4b3a-a135-11413c3a33c2,8a14ced0-9e45-4b3a-a135-11413c3a33c2,1,0,af7377db-0b27-42f7-a639-e2feb4015412,af7377db-0b27-42f7-a639-e2feb4015412,1,0,e1a200e2-64f3-434c-ae0d-5f24b9d65c9b,e1a200e2-64f3-434c-ae0d-5f24b9d65c9b,1,0,ab7db146-f26a-418a-8c45-e2513bf84e08,ab7db146-f26a-418a-8c45-e2513bf84e08,1,0,ece3bd8d-6616-44d5-9c14-6b3557738872,ece3bd8d-6616-44d5-9c14-6b3557738872,1,0,663a80ba-b97e-4265-a627-4a7d273f9472,663a80ba-b97e-4265-a627-4a7d273f9472,1,0,bf3304c0-5078-478f-bbf8-6178264c5f26,bf3304c0-5078-478f-bbf8-6178264c5f26,1,0,fbf754c3-ab89-4704-b01a-67f8bcea0c7c,fbf754c3-ab89-4704-b01a-67f8bcea0c7c,1,0,3b0afd55-f08d-4d59-b6df-d7c4d1c52446,3b0afd55-f08d-4d59-b6df-d7c4d1c52446,1,0,4893ad50-df19-4d86-9469-40491ba733c9,4893ad50-df19-4d86-9469-40491ba733c9,1,0,25a65c1e-8e67-4135-843d-1e0da72dfd64,25a65c1e-8e67-4135-843d-1e0da72dfd64,1,0,5724fbd5-4d91-4e6d-ae24-8925a4d83c83,5724fbd5-4d91-4e6d-ae24-8925a4d83c83,1,0,29a6416e-b0f5-4111-8f86-1ba80244e73a,29a6416e-b0f5-4111-8f86-1ba80244e73a,1,0,0f49085a-9b83-4256-be60-f341b2ef132e,0f49085a-9b83-4256-be60-f341b2ef132e,1,0,f44c66d6-cfe2-482f-a921-de3db3cd09ea,f44c66d6-cfe2-482f-a921-de3db3cd09ea,1,0,5ec1b7af-f4bc-4ec1-8f43-85c4f9d146a0,5ec1b7af-f4bc-4ec1-8f43-85c4f9d146a0,1,0,c521bd61-386e-41c8-bcc3-29d54b63cc32,c521bd61-386e-41c8-bcc3-29d54b63cc32,1,0,d46e3424-6d30-4229-9a56-ab256517534a,d46e3424-6d30-4229-9a56-ab256517534a,1,0,09d3633d-8e8c-47f3-8f34-d70eb94577e1,09d3633d-8e8c-47f3-8f34-d70eb94577e1,1,0,fe868143-363b-4da1-889b-98d4dd10a1fd,fe868143-363b-4da1-889b-98d4dd10a1fd,1,0,b791a549-ae94-46f2-8f04-771fdeb4cc54,b791a549-ae94-46f2-8f04-771fdeb4cc54,1,0,4681cb63-c581-4c08-b18c-016d9b478ef2,4681cb63-c581-4c08-b18c-016d9b478ef2,1,0,041c364f-0498-494f-9e41-82cb416c0862,041c364f-0498-494f-9e41-82cb416c0862,1,0,913830c8-da01-4b7e-9d83-d406c2fefd49,913830c8-da01-4b7e-9d83-d406c2fefd49,1,0,ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171,ca8c4c19-9f92-45a7-b5bd-1ae06e3c9171,1,0,9f1c8979-2b3d-4a96-af6c-4577541696a3,9f1c8979-2b3d-4a96-af6c-4577541696a3,1,0,5adaafcf-3d67-418d-b47d-d0d8c65f1f46,5adaafcf-3d67-418d-b47d-d0d8c65f1f46,1,0,8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5,8a0f16a1-63c4-4ea4-a2f1-7b08e75efbd5,1,0,f68ec923-89c8-4c83-80a2-2d5e096dbbd8,f68ec923-89c8-4c83-80a2-2d5e096dbbd8,1,0,f278bdf8-543a-4427-b2f1-3670c61502ae,f278bdf8-543a-4427-b2f1-3670c61502ae,1,0,00ce0cd2-9840-49a0-b9df-dc64becd3e65,00ce0cd2-9840-49a0-b9df-dc64becd3e65,1,0,db6f11c0-8530-43c1-811a-48797be89ec1,db6f11c0-8530-43c1-811a-48797be89ec1,1,0,c2782a2b-f910-4d4d-ba1b-49ef7854bae0,c2782a2b-f910-4d4d-ba1b-49ef7854bae0,1,0,293cda8c-1cc8-42c0-a68f-d22163aed4f1,293cda8c-1cc8-42c0-a68f-d22163aed4f1,1,0,5e48841c-0a65-457f-8952-fa97aae3207d,5e48841c-0a65-457f-8952-fa97aae3207d,1,0,ee0275e4-a497-4623-9d2f-6308ea2e70ca,ee0275e4-a497-4623-9d2f-6308ea2e70ca,1,0,ec37d236-db36-44ef-afc2-267af1f40c1f,ec37d236-db36-44ef-afc2-267af1f40c1f,1,0,d835f08d-79c6-4e79-a7c1-f00dc05778b9,d835f08d-79c6-4e79-a7c1-f00dc05778b9,1,0,32371dfd-c890-4bed-bd68-45db299c9caf,32371dfd-c890-4bed-bd68-45db299c9caf,1,0,eeb298cf-8df3-41fe-bb48-9c83a24a8206,eeb298cf-8df3-41fe-bb48-9c83a24a8206,1,0,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,1,0,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,1,0,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,1,0,1d429511-9446-4102-95f4-df676125e14c,1d429511-9446-4102-95f4-df676125e14c,1,0,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,1,0,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,1,0,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,1,0,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,1,0,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,1,0,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,1,0,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,1,0,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,1,0,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,1,0,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,1,0,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,1,0,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,1,0,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,1,0,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,1,0,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,1,0,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,1,0,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,1,0,aa0e290d-21ab-4197-b8f3-cf1f97ab1b98,aa0e290d-21ab-4197-b8f3-cf1f97ab1b98,1,0,eefa9859-4168-4a10-923f-e4a713c99a3b,eefa9859-4168-4a10-923f-e4a713c99a3b,1,0,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,1,0,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,1,0,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,1,0,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,1,0,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,1,0,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,1,0,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,1,0,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,1,0,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,1,0,39bddcde-697c-4e77-adfd-e4a77529ea97,39bddcde-697c-4e77-adfd-e4a77529ea97,1,0,a3b15381-bf9b-4b26-96eb-392fa2cc8223,a3b15381-bf9b-4b26-96eb-392fa2cc8223,1,0,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,1,0,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,1,0,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,1,0,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,1,0,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,1,0,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,1,0,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,1,0,8e9eb604-5f15-4ef5-8906-5bcd57b3d099,8e9eb604-5f15-4ef5-8906-5bcd57b3d099,1,0,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,1,0,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,1,0,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,1,0,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,1,0,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,1,0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,1,0,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,1,0,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,1,0,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,1,0,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,1,0,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,1,0,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,1,0,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,1,0,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,1,0,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,1,0,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,1,0,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,1,0,42f4ad3c-3724-4032-82f0-10c8dbe6cc9f,42f4ad3c-3724-4032-82f0-10c8dbe6cc9f,1,0,bbd8b83d-413a-4ffc-8351-e0ec4f4ae619,bbd8b83d-413a-4ffc-8351-e0ec4f4ae619,1,0,c49cef0d-3b71-4e66-9e35-72b94920dae5,c49cef0d-3b71-4e66-9e35-72b94920dae5,1,0,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,1,0,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,1,0,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,1,0,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,1,0,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,1,0,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,1,0,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,1,0,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,1,0,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,1,0,b6206c73-cf17-4e74-a14d-f2a2ef2b2cc1,b6206c73-cf17-4e74-a14d-f2a2ef2b2cc1,1,0,b363f72f-3629-453c-9f7d-9828ef6de733,b363f72f-3629-453c-9f7d-9828ef6de733,1,0,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,1,0,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,1,0,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,1,0,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,1,0,c6c26c3c-de7a-4ed4-944d-ada62cf1ab8f,c6c26c3c-de7a-4ed4-944d-ada62cf1ab8f,1,0,a54872fc-4e7e-4829-8564-1b2e7f0ee134,a54872fc-4e7e-4829-8564-1b2e7f0ee134,1,0,fe10d76e-3f80-4529-83a8-74c452a781f6,fe10d76e-3f80-4529-83a8-74c452a781f6,1,0,e3d1a7f5-ba86-414e-b2d2-89cc9db51667,e3d1a7f5-ba86-414e-b2d2-89cc9db51667,1,0,13333d66-ff04-49ec-973a-1229da8c9f50,13333d66-ff04-49ec-973a-1229da8c9f50,1,0,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,1,0,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,1,0,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,1,0,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,1,0,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,1,0,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,1,0,77c8a065-a8aa-4f39-93b6-c88f4c38ec66,77c8a065-a8aa-4f39-93b6-c88f4c38ec66,1,0,366fa6da-d3bf-4bb0-9a55-a307f9edee6a,366fa6da-d3bf-4bb0-9a55-a307f9edee6a,1,0,dd0610c8-cd87-4fe2-8a1f-70157132785b,dd0610c8-cd87-4fe2-8a1f-70157132785b,1,0,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,1,0,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,1,0,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,1,0,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,1,0,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,1,0,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,1,0,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,1,0,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,1,0,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,1,0,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,1,0,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,1,0,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,1,0,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,1,0,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,1,0,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,1,0,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,1,0,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,1,0,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,1,0,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,1,0,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,1,0,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,1,0,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,1,0,02abb5e3-9d4e-4c45-af19-71796966ed19,02abb5e3-9d4e-4c45-af19-71796966ed19,1,0,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,1,0,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,1,0,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,1,0,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,1,0,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,1,0,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,1,0,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,1,0,50515bbc-43ee-4b00-bfc5-105b7981bd8f,50515bbc-43ee-4b00-bfc5-105b7981bd8f,1,0,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,1,0,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,1,0,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,1,0,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,1,0,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,1,0,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,1,0,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,1,0,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,1,0,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,1,0,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,1,0,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,1,0,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,1,0,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,1,0,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,1,0,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,1,0,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,1,0,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,1,0,d71ca3bc-e41a-44d9-afe4-c68f1211b3a1,d71ca3bc-e41a-44d9-afe4-c68f1211b3a1,1,0,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,1,0,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,1,0,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,1,0,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,1,0,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,1,0,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,1,0,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,1,0,6564ce89-134f-4726-8693-fd93aad46180,6564ce89-134f-4726-8693-fd93aad46180,1,0,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,1,0,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,1,0,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,1,0,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,1,0,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,1,0,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,1,0,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,1,0,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,1,0,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,1,0,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,1,0,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,1,0,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,1,0,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,1,0,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,1,0,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,1,0,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,1,0,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,1,0,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,1,0,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,1,0,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,1,0,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,1,0,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,1,0,7d5b2b73-27e6-4a61-9558-eb2410eb9f2f,7d5b2b73-27e6-4a61-9558-eb2410eb9f2f,1,0,d754ed75-2a32-4b86-a153-7b50c39f9836,d754ed75-2a32-4b86-a153-7b50c39f9836,1,0,b81f3ee1-66f7-4626-a35b-ef85388c678e,b81f3ee1-66f7-4626-a35b-ef85388c678e,1,0,2ad04793-c162-4915-a260-ca4da535cdac,2ad04793-c162-4915-a260-ca4da535cdac,1,0,78942e92-a31c-4824-a614-a6e07ae26171,78942e92-a31c-4824-a614-a6e07ae26171,1,0,6568d853-dfe5-4064-aa73-c1f546e951b4,6568d853-dfe5-4064-aa73-c1f546e951b4,1,0,7cee27a7-9827-47f8-96f3-d4f1f3dcabe9,7cee27a7-9827-47f8-96f3-d4f1f3dcabe9,1,0,9bfba5cd-551a-4685-99dd-ebfd9f7fd7d1,9bfba5cd-551a-4685-99dd-ebfd9f7fd7d1,1,0,bbe718b2-6b4c-4d78-a408-5369d356a1e6,bbe718b2-6b4c-4d78-a408-5369d356a1e6,1,0,4ecd85c4-5be7-4e6b-8c53-7dd32bd4d707,4ecd85c4-5be7-4e6b-8c53-7dd32bd4d707,1,0,eb7623df-b4e3-4272-9f92-42a9214f9f17,eb7623df-b4e3-4272-9f92-42a9214f9f17,1,0,a5f5bc90-e670-4ee7-95fe-067fe1b129f7,a5f5bc90-e670-4ee7-95fe-067fe1b129f7,1,0,f790f620-2247-4a04-b0ad-8aa591655948,f790f620-2247-4a04-b0ad-8aa591655948,1,0,6d9d9087-91ad-4368-9087-0af8f83fdc9e,6d9d9087-91ad-4368-9087-0af8f83fdc9e,1,0,61fdb27e-b449-40a7-8ecd-7e3e8ae3aa23,61fdb27e-b449-40a7-8ecd-7e3e8ae3aa23,1,0,c7e4e97f-fb85-4e95-bfdf-7706e867d89b,c7e4e97f-fb85-4e95-bfdf-7706e867d89b,1,0,b08fd921-c3d6-44eb-9401-fec5acab5d22,b08fd921-c3d6-44eb-9401-fec5acab5d22,1,0,f4f185af-5507-427c-b82b-515ea71f3fc1,f4f185af-5507-427c-b82b-515ea71f3fc1,1,0,1611855a-abf4-4269-aed3-3f78dce7bea5,1611855a-abf4-4269-aed3-3f78dce7bea5,1,0,c5bd277c-b258-43af-9c80-3e328b1581f5,c5bd277c-b258-43af-9c80-3e328b1581f5,1,0,96dac7e8-5113-4217-ac0a-fffea4acc410,96dac7e8-5113-4217-ac0a-fffea4acc410,1,0,d6fa2b86-1c3b-4c14-8a66-b6dbd40bca19,d6fa2b86-1c3b-4c14-8a66-b6dbd40bca19,1,0,f9cefef4-2182-42ca-93ef-b6a51d6555cc,f9cefef4-2182-42ca-93ef-b6a51d6555cc,1,0,71e1c7de-7367-424c-ae07-6ec04b408b83,71e1c7de-7367-424c-ae07-6ec04b408b83,1,0,b3956392-199c-4934-80d1-8cdab453d879,b3956392-199c-4934-80d1-8cdab453d879,1,0,5e26aeb7-617c-4983-b40d-5a61c77aa6a4,5e26aeb7-617c-4983-b40d-5a61c77aa6a4,1,0,d1bd7448-aa5f-43fc-9735-224f36960c3e,d1bd7448-aa5f-43fc-9735-224f36960c3e,1,0,94dbfc4c-d530-4fbd-b7cf-a58a56289b97,94dbfc4c-d530-4fbd-b7cf-a58a56289b97,1,0,6fa25c57-411d-4f9c-9c3e-c7ea1b1f7195,6fa25c57-411d-4f9c-9c3e-c7ea1b1f7195,1,0,1bfa15cf-222e-4e5b-beb7-7a50f8131799,1bfa15cf-222e-4e5b-beb7-7a50f8131799,1,0,8227471b-8ffb-4ba7-b4da-b21570582876,8227471b-8ffb-4ba7-b4da-b21570582876,1,0,ea7ab9fa-5119-4773-b17d-fc74c7479d3d,ea7ab9fa-5119-4773-b17d-fc74c7479d3d,1,0,3e0fe508-87fa-47af-a47f-c0630a186900,3e0fe508-87fa-47af-a47f-c0630a186900,1,0,09740271-b8a8-4949-a116-b64449d80036,09740271-b8a8-4949-a116-b64449d80036,1,0,c8fedc0b-33d6-46a5-b4fc-a3cd728f5fd7,c8fedc0b-33d6-46a5-b4fc-a3cd728f5fd7,1,0,25864028-1a53-4a8d-b6e4-189fa62c62f5,25864028-1a53-4a8d-b6e4-189fa62c62f5,1,0,e923beae-0bd8-4119-a802-fd6bfb729f10,e923beae-0bd8-4119-a802-fd6bfb729f10,1,0,67c1269a-79e6-44d9-9254-671c50fb3974,67c1269a-79e6-44d9-9254-671c50fb3974,1,0,5d455d2a-910d-48c7-bc74-ba5ad7855110,5d455d2a-910d-48c7-bc74-ba5ad7855110,1,0,7cf3feea-75e2-42cc-9c89-4a9182034910,7cf3feea-75e2-42cc-9c89-4a9182034910,1,0,930a0156-feb3-4e14-96a5-cd183a4891f4,930a0156-feb3-4e14-96a5-cd183a4891f4,1,0,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,1,0,e268a337-f576-4ec2-8a22-0500b79b2441,e268a337-f576-4ec2-8a22-0500b79b2441,1,0,eb33a8fa-75a6-4926-a025-05bc0abe4374,eb33a8fa-75a6-4926-a025-05bc0abe4374,1,0,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,1,0,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,1,0,bf480259-6e72-4ad1-ac41-0b0d41a75387,bf480259-6e72-4ad1-ac41-0b0d41a75387,1,0,a41f060a-f0f6-4940-960b-5056082b2c45,a41f060a-f0f6-4940-960b-5056082b2c45,1,0,5d45a926-513f-4bbc-a002-54a2db94b297,5d45a926-513f-4bbc-a002-54a2db94b297,1,0,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,1,0,073e14d4-5d43-428b-a9a7-985d173e94c7,073e14d4-5d43-428b-a9a7-985d173e94c7,1,0,61dc318a-c17d-402e-bf64-a0c0a63a1c93,61dc318a-c17d-402e-bf64-a0c0a63a1c93,1,0,c4b0c101-8cd9-441c-b94c-9dfa1ad58d45,c4b0c101-8cd9-441c-b94c-9dfa1ad58d45,1,0,2394775b-8910-4667-9c74-e1606e0b13bc,2394775b-8910-4667-9c74-e1606e0b13bc,1,0,43c88ffd-a036-4563-890b-bdc60180e841,43c88ffd-a036-4563-890b-bdc60180e841,1,0,af6e5e8e-6482-4820-a810-9e275ae039bf,af6e5e8e-6482-4820-a810-9e275ae039bf,1,0,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,1,0,7690620b-21d9-463a-8c22-60844927b4a0,7690620b-21d9-463a-8c22-60844927b4a0,1,0,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,1,0,b1db3255-38da-4684-b44e-4e2e9ee1dc35,b1db3255-38da-4684-b44e-4e2e9ee1dc35,1,0,4761f89b-7894-4dca-83b0-3be2d0828781,4761f89b-7894-4dca-83b0-3be2d0828781,1,0,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,1,0,7236d52f-9068-45ad-8b92-a7319e737e08,7236d52f-9068-45ad-8b92-a7319e737e08,1,0,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,1,0,9db23e96-d13a-4847-941a-462f64d0619d,9db23e96-d13a-4847-941a-462f64d0619d,1,0,7575fd54-c91b-4220-a2ef-2cf533f60426,7575fd54-c91b-4220-a2ef-2cf533f60426,1,0,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1,0,26e2c83b-8873-4ad3-9c50-e94421473a43,26e2c83b-8873-4ad3-9c50-e94421473a43,1,0,f0b2ec05-8e01-4ccf-b927-671329a9013b,f0b2ec05-8e01-4ccf-b927-671329a9013b,1,0,ab442b11-2482-4f80-ac82-01966e0657ec,ab442b11-2482-4f80-ac82-01966e0657ec,1,0,14fe4d39-81a1-470e-9724-6642ce34ad89,14fe4d39-81a1-470e-9724-6642ce34ad89,1,0,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,1,0,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,1,0,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,1,0,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,1,0,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,1,0,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,1,0,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,1,0,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,1,0,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,1,0,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,1,0,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,1,0,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,1,0,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,1,0,5a4abb96-8a18-4249-9fbb-7270fe2ba25b,5a4abb96-8a18-4249-9fbb-7270fe2ba25b,1,0,6852c584-d989-418d-8d18-255492891ef0,6852c584-d989-418d-8d18-255492891ef0,1,0,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,1,0,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,1,0,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,1,0,ff830967-faa9-415f-aa6e-8d27779f91f8,ff830967-faa9-415f-aa6e-8d27779f91f8,1,0,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,1,0,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,1,0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,1,0,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,1,0,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,1,0,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,1,0,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,1,0,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,1,0,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,1,0,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,1,0,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,1,0,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,1,0,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,1,0,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,1,0,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,1,0,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,1,0,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,1,0,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,1,0,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,1,0,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,1,0,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,1,0,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1,0,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,1,0,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,1,0,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,1,0,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,1,0,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1,0,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,1,0,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,1,0,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,1,0,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,1,0,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,1,0,efd4e0a3-2f98-40ef-8089-c853cd588fa6,efd4e0a3-2f98-40ef-8089-c853cd588fa6,1,0,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,1,0,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,1,0,bf30b754-84fb-4104-b52b-a4f7df6fba12,bf30b754-84fb-4104-b52b-a4f7df6fba12,1,0,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,1,0,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,1,0,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,1,0,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,1,0,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,1,0,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,1,0,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,1,0,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,1,0,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,1,0,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,1,0,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,1,0,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,1,0,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,1,0,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,1,0,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,1,0,abf8a23d-45c3-4feb-8df2-279b709d7722,abf8a23d-45c3-4feb-8df2-279b709d7722,1,0,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,1,0,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,1,0,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,1,0,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,1,0,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,1,0,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,1,0,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,1,0,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,1,0,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,1,0,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,1,0,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,1,0,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,1,0,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,1,0,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,1,0,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,1,0,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,1,0,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,1,0,8525d945-08aa-4928-8dca-4e172ea94328,8525d945-08aa-4928-8dca-4e172ea94328,1,0,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,1,0,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,1,0,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,1,0,82be906c-bb06-40ea-b908-54574b0b4848,82be906c-bb06-40ea-b908-54574b0b4848,1,0,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,1,0,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,1,0,1f8cb390-2cbb-4a88-96ee-b31695b73d78,1f8cb390-2cbb-4a88-96ee-b31695b73d78,1,0,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,1,0,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,1,0,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,1,0,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,1,0,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,1,0,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,1,0,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,1,0,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,1,0,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,1,0,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,1,0,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,1,0,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,1,0,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,1,0,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,1,0,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,1,0,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,1,0,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,1,0,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,1,0,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,1,0,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,1,0,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,1,0,b885dbb2-6e18-46a6-929c-3d6d392343ad,b885dbb2-6e18-46a6-929c-3d6d392343ad,1,0,d31e24cf-7493-45dc-ba81-3a00618e53bc,d31e24cf-7493-45dc-ba81-3a00618e53bc,1,0,03f32b08-1b71-47cb-ba1d-965037df4d64,03f32b08-1b71-47cb-ba1d-965037df4d64,1,0,4ec26e3d-6c38-4c90-9f91-c2235f8b4154,4ec26e3d-6c38-4c90-9f91-c2235f8b4154,1,0,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,1,0,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,1,0,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,1,0,19a0b881-302e-4d0e-ace0-29a9d8379a48,19a0b881-302e-4d0e-ace0-29a9d8379a48,1,0,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,1,0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,1,0,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,1,0,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,1,0,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,1,0,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,1,0,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,1,0,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,1,0,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,1,0,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,1,0,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,1,0,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,1,0,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,1,0,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,1,0,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,1,0,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,1,0,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,1,0,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,1,0,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,1,0,e9ab9d00-6e42-439b-8efc-fcacf727016d,e9ab9d00-6e42-439b-8efc-fcacf727016d,1,0,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,1,0,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,1,0,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,1,0,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,1,0,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,1,0,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,1,0,f9229c3e-4a47-49a4-8b14-908218012ff7,f9229c3e-4a47-49a4-8b14-908218012ff7,1,0,7c8b9203-2808-4a78-a2b1-b7a71b4f13f6,7c8b9203-2808-4a78-a2b1-b7a71b4f13f6,1,0,b9743978-ba6d-4892-bb32-f24d4a47dd50,b9743978-ba6d-4892-bb32-f24d4a47dd50,1,0,c43accb9-f33d-437f-b305-0595f8fe3032,c43accb9-f33d-437f-b305-0595f8fe3032,1,0,084a398b-836e-424c-af93-22aa39d5a15a,084a398b-836e-424c-af93-22aa39d5a15a,1,0,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,1,0,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,1,0,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,1,0,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,1,0,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,1,0,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,1,0,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,1,0,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,1,0,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,1,0,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,1,0,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,1,0,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,1,0,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,1,0,2b2bf0f7-0946-4492-bba0-27f007a70e64,2b2bf0f7-0946-4492-bba0-27f007a70e64,1,0,22c9a703-5ed3-4156-8fa6-476b1c1452f1,22c9a703-5ed3-4156-8fa6-476b1c1452f1,1,0,8be10d88-8c37-4444-9c89-6cbbe9913bda,8be10d88-8c37-4444-9c89-6cbbe9913bda,1,0,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,1,0,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,1,0,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,1,0,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,1,0,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,1,0,cb1d4a41-20a9-4d76-8798-d47d8858bff1,cb1d4a41-20a9-4d76-8798-d47d8858bff1,1,0,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,1,0,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,1,0,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,1,0,b4c026eb-4271-4366-b529-1cdfe2874563,b4c026eb-4271-4366-b529-1cdfe2874563,1,0,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,1,0,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,1,0,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,1,0,5198c6db-2100-4902-82c8-85c8ea555e78,5198c6db-2100-4902-82c8-85c8ea555e78,1,0,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,1,0,f0b1e9f4-2e07-44e6-88d2-c11457135781,f0b1e9f4-2e07-44e6-88d2-c11457135781,1,0,e010c0f9-f770-4fdc-8607-50838c0262ef,e010c0f9-f770-4fdc-8607-50838c0262ef,1,0,f935399f-3554-4c08-b0a6-eba13074e1b7,f935399f-3554-4c08-b0a6-eba13074e1b7,1,0,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,1,0,765f9584-fefa-4695-b130-dd54c3b0d79d,765f9584-fefa-4695-b130-dd54c3b0d79d,1,0,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,1,0,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,1,0,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,1,0,2c1c9284-ba8b-4282-a89c-429f02ea41f6,2c1c9284-ba8b-4282-a89c-429f02ea41f6,1,0,8c241467-76f7-4161-a8a1-5da4a6576b75,8c241467-76f7-4161-a8a1-5da4a6576b75,1,0,1d3b9eff-5d0b-437b-932f-0ec466e092b2,1d3b9eff-5d0b-437b-932f-0ec466e092b2,1,0,fd7e5257-024c-46de-9ff3-edd302fadba5,fd7e5257-024c-46de-9ff3-edd302fadba5,1,0,a4168057-d99f-4b55-b762-214f95ae3a30,a4168057-d99f-4b55-b762-214f95ae3a30,1,0,ab4fe549-1c07-42d9-b412-8b89ed115591,ab4fe549-1c07-42d9-b412-8b89ed115591,1,0,0335804e-efe5-4fb9-9ae9-2ddca73d77f3,0335804e-efe5-4fb9-9ae9-2ddca73d77f3,1,0,b49c589d-b45d-4aff-8899-72cfe433e9a6,b49c589d-b45d-4aff-8899-72cfe433e9a6,1,0,f71a8d47-6a6c-4b7e-90b3-5b7a3be3ccd3,f71a8d47-6a6c-4b7e-90b3-5b7a3be3ccd3,1,0,273ad3f7-c645-434d-93b0-e832134f3043,273ad3f7-c645-434d-93b0-e832134f3043,1,0,d320803b-1de4-4e66-b455-0afe39be5c41,d320803b-1de4-4e66-b455-0afe39be5c41,1,0,67e85b9a-a138-49ea-b474-04475f0f8c90,67e85b9a-a138-49ea-b474-04475f0f8c90,1,0,5d990585-02dd-4a13-8dfa-920df7d1dbb0,5d990585-02dd-4a13-8dfa-920df7d1dbb0,1,0,788a98e0-194f-466c-b4fa-bafd527aae26,788a98e0-194f-466c-b4fa-bafd527aae26,1,0,07820e9e-9d6b-4c37-909e-90dbd33e30c0,07820e9e-9d6b-4c37-909e-90dbd33e30c0,1,0,364218e0-87ba-4008-a3e3-e2351a5e04b8,364218e0-87ba-4008-a3e3-e2351a5e04b8,1,0,143f6db9-a4dc-4039-90d0-6161394a3e2f,143f6db9-a4dc-4039-90d0-6161394a3e2f,1,0,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,1,0,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,1,0,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,1,0,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,1,0,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,1,0,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,1,0,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,1,0,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,1,0,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,1,0,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,1,0,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,1,0,86249619-8981-4fc4-85fc-ce30e4b9d542,86249619-8981-4fc4-85fc-ce30e4b9d542,1,0,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,1,0,98aa8a80-29fa-4a54-8d0e-90d413d63da1,98aa8a80-29fa-4a54-8d0e-90d413d63da1,1,0,60af0c11-852e-4b45-afb7-251d75a87150,60af0c11-852e-4b45-afb7-251d75a87150,1,0,37e81463-a558-4b03-b0e4-82ac0e99c80c,37e81463-a558-4b03-b0e4-82ac0e99c80c,1,0,8be35c43-32e6-418d-b3d6-e53ef56babb7,8be35c43-32e6-418d-b3d6-e53ef56babb7,1,0,3e4f5fd0-af15-41ae-896e-458ce9fb7e4d,3e4f5fd0-af15-41ae-896e-458ce9fb7e4d,1,0,935d01e1-232b-480e-a6bf-c21c617c6348,935d01e1-232b-480e-a6bf-c21c617c6348,1,0,9bc7cc99-1237-4f9c-8a4e-f3ab459186ef,9bc7cc99-1237-4f9c-8a4e-f3ab459186ef,1,0,05c702a1-2c74-45d5-b2ee-fdd795b0945a,05c702a1-2c74-45d5-b2ee-fdd795b0945a,1,0,5ede72fd-2510-4c06-b625-be740bb04e29,5ede72fd-2510-4c06-b625-be740bb04e29,1,0,17f37228-b0cd-420d-bc82-b18dc04c03c9,17f37228-b0cd-420d-bc82-b18dc04c03c9,1,0,3f9b66ea-7db2-434d-8e3b-00df8eb11dbd,3f9b66ea-7db2-434d-8e3b-00df8eb11dbd,1,0,d43fb14b-2051-4ba5-8379-af6996e603b3,d43fb14b-2051-4ba5-8379-af6996e603b3,1,0,cfb01fef-b70d-41ac-82b9-d6d2e9644388,cfb01fef-b70d-41ac-82b9-d6d2e9644388,1,0,91dee0d3-14b5-4aa1-9058-8f949e7df923,91dee0d3-14b5-4aa1-9058-8f949e7df923,1,0,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,1,0,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,1,0,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,1,0,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,1,0,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,1,0,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,1,0,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,1,0,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,1,0,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,1,0,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,1,0,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,1,0,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,1,0,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,1,0,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,1,0,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,1,0,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,1,0,2f9c347d-ee82-49f2-a5eb-97f55374856f,2f9c347d-ee82-49f2-a5eb-97f55374856f,1,0,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,1,0,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,1,0,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,1,0,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,1,0,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,1,0,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,1,0,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,1,0,a89ee622-6942-411a-8566-f03d139c9e5b,a89ee622-6942-411a-8566-f03d139c9e5b,1,0,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,1,0,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,1,0,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,1,0,198ea989-5001-47ac-86b8-aa2585a5f7d7,198ea989-5001-47ac-86b8-aa2585a5f7d7,1,0,4abe448b-a225-4ac2-8cc9-c3c6c0e9b1ac,4abe448b-a225-4ac2-8cc9-c3c6c0e9b1ac,1,0,fb84c5f7-11da-4b17-979e-41e27a74e789,fb84c5f7-11da-4b17-979e-41e27a74e789,1,0,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,1,0,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,1,0,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,1,0,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,1,0,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,1,0,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,1,0,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,1,0,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,1,0,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,1,0,6de34ed8-5d6c-4bb6-af94-328e692b862e,6de34ed8-5d6c-4bb6-af94-328e692b862e,1,0,e705bde3-45c3-4ffd-a767-0320c6cc8b91,e705bde3-45c3-4ffd-a767-0320c6cc8b91,1,0,504280a1-a451-4547-ae71-e217f8fdf8f6,504280a1-a451-4547-ae71-e217f8fdf8f6,1,0,b071a9fe-0e9f-4ded-8dab-b1388fd12897,b071a9fe-0e9f-4ded-8dab-b1388fd12897,1,0,a2accd5e-e6f5-4d5f-8243-51aadfa88b00,a2accd5e-e6f5-4d5f-8243-51aadfa88b00,1,0,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,1,0,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,1,0,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,1,0,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,1,0,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,1,0,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,1,0,fad26b16-8638-496b-bd12-381fc6f5b71f,fad26b16-8638-496b-bd12-381fc6f5b71f,1,0,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,1,0,324a56c9-02d9-4177-af84-a817b8c41169,324a56c9-02d9-4177-af84-a817b8c41169,1,0,64ed8c1a-6446-4f0d-a2ef-c599e84c4909,64ed8c1a-6446-4f0d-a2ef-c599e84c4909,1,0,52fc85fb-309b-4739-bbd3-c3966657e973,52fc85fb-309b-4739-bbd3-c3966657e973,1,0,87081ab5-bdd5-4daa-88ef-8a2cba8c7d53,87081ab5-bdd5-4daa-88ef-8a2cba8c7d53,1,0,be3cfba8-e6f6-4202-ab0f-96c00fbf7462,be3cfba8-e6f6-4202-ab0f-96c00fbf7462,1,0,64ef1b5c-ec04-45eb-9998-bc573f4038d7,64ef1b5c-ec04-45eb-9998-bc573f4038d7,1,0,4fde5159-8f21-4151-8dbd-b2cd376d9392,4fde5159-8f21-4151-8dbd-b2cd376d9392,1,0,3ea799a6-6642-4388-b0a3-c2962e71ff51,3ea799a6-6642-4388-b0a3-c2962e71ff51,1,0,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,1,0,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,1,0,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,1,0,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,1,0,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,1,0,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,1,0,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,1,0,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,1,0,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,1,0,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,1,0,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,1,0,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,1,0,b369842d-c20e-4b68-9d0e-701707584b2f,b369842d-c20e-4b68-9d0e-701707584b2f,1,0,de23a2ca-4607-4488-be7b-23ea28875d02,de23a2ca-4607-4488-be7b-23ea28875d02,1,0,3ab0649b-239f-4466-b897-73c0ab628927,3ab0649b-239f-4466-b897-73c0ab628927,1,0,4c697110-8941-4d6d-ba03-f2b9e96ff82e,4c697110-8941-4d6d-ba03-f2b9e96ff82e,1,0,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,1,0,b172631b-da0d-42f4-ae6b-ae122a46cced,b172631b-da0d-42f4-ae6b-ae122a46cced,1,0,1a25e744-37ae-46ca-a328-ff8eced21a82,1a25e744-37ae-46ca-a328-ff8eced21a82,1,0,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,1,0,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,1,0,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,1,0,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,1,0,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,1,0,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,1,0,a0861dd3-ced5-485e-8719-0ad0bc3adc0d,a0861dd3-ced5-485e-8719-0ad0bc3adc0d,1,0,5a94a307-3f54-4753-8ef5-ce9f88417827,5a94a307-3f54-4753-8ef5-ce9f88417827,1,0,0f09b6b8-72ac-4461-96c4-683be403e2ff,0f09b6b8-72ac-4461-96c4-683be403e2ff,1,0,b73d0f07-9c6e-41b1-9acc-8e83dacd7528,b73d0f07-9c6e-41b1-9acc-8e83dacd7528,1,0,19d1d74a-de5f-475a-896c-a32b7d28f918,19d1d74a-de5f-475a-896c-a32b7d28f918,1,0,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,1,0,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,1,0,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,1,0,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,1,0,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,1,0,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,1,0,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,1,0,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,1,0,c343495b-5947-4fe7-a94b-d1f2b2455b4f,c343495b-5947-4fe7-a94b-d1f2b2455b4f,1,0,fbce7316-bb9a-40c1-af3c-352f4b559ab6,fbce7316-bb9a-40c1-af3c-352f4b559ab6,1,0,a3721457-b33b-4742-b6e1-531af10969d1,a3721457-b33b-4742-b6e1-531af10969d1,1,0,9619a603-e578-4f30-bcc6-adfddfa915c0,9619a603-e578-4f30-bcc6-adfddfa915c0,1,0,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,1,0,4a55351b-77e2-4c7c-a7d7-aac213d3c2a7,4a55351b-77e2-4c7c-a7d7-aac213d3c2a7,1,0,f79ac41b-6ab2-4afc-aa98-b70b72d78bb4,f79ac41b-6ab2-4afc-aa98-b70b72d78bb4,1,0,2c5a56d3-386e-45df-adc2-4471f52f9bdc,2c5a56d3-386e-45df-adc2-4471f52f9bdc,1,0,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,1,0,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,1,0,22474ca3-565b-4b67-a5b4-b0b959306d10,22474ca3-565b-4b67-a5b4-b0b959306d10,1,0,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1,0,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,1,0,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,1,0,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,1,0,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,1,0,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,1,0,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,1,0,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,1,0,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,1,0,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,1,0,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,1,0,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,1,0,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,1,0,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,1,0,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,1,0,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,1,0,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,1,0,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,1,0,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,1,0,3e44d463-f253-4a64-8d68-631fcb66935c,3e44d463-f253-4a64-8d68-631fcb66935c,1,0,653d6483-029b-4453-a7d0-3a3c6d9d0b05,653d6483-029b-4453-a7d0-3a3c6d9d0b05,1,0,ac507771-50bd-4f8b-b72f-5954562c9131,ac507771-50bd-4f8b-b72f-5954562c9131,1,0,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,1,0,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,1,0,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,1,0,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,1,0,950b3ee3-070f-4946-8b9b-0aa2058de986,950b3ee3-070f-4946-8b9b-0aa2058de986,1,0,bd04a870-0943-4bdb-9e30-50a69daa8a13,bd04a870-0943-4bdb-9e30-50a69daa8a13,1,0,573c2153-7069-4589-8a2a-4517edca877d,573c2153-7069-4589-8a2a-4517edca877d,1,0,0a2f03c1-87d7-4589-9c47-8dd67faa1759,0a2f03c1-87d7-4589-9c47-8dd67faa1759,1,0,d1475ede-879c-4085-9980-2edaaf0eb0e9,d1475ede-879c-4085-9980-2edaaf0eb0e9,1,0,54eac28f-da81-4939-b2f9-924d3c215de5,54eac28f-da81-4939-b2f9-924d3c215de5,1,0,20d34659-1bde-4af0-be2c-da922e4ace6e,20d34659-1bde-4af0-be2c-da922e4ace6e,1,0,dec45aee-a4a8-473c-904e-15d5ff31efc3,dec45aee-a4a8-473c-904e-15d5ff31efc3,1,0,8b9318e5-c6ce-4253-9759-8ddd42468775,8b9318e5-c6ce-4253-9759-8ddd42468775,1,0,be75d0b2-c9db-4dab-9e32-dbe26d667508,be75d0b2-c9db-4dab-9e32-dbe26d667508,1,0,299c014f-996a-4a99-a5be-a7cfd5ee45e4,299c014f-996a-4a99-a5be-a7cfd5ee45e4,1,0,2569b69d-006f-478e-83b7-9163048b34bb,2569b69d-006f-478e-83b7-9163048b34bb,1,0,1ee47933-8117-4d47-9245-476c0ed3a373,1ee47933-8117-4d47-9245-476c0ed3a373,1,0,31cac1e9-eb16-489c-9322-30d1e27a80b3,31cac1e9-eb16-489c-9322-30d1e27a80b3,1,0,0d100e33-7941-41c1-962d-7672c874e9c5,0d100e33-7941-41c1-962d-7672c874e9c5,1,0,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,1,0,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,1,0,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,1,0,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,1,0,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,1,0,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,1,0,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1,0,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,1,0,05507f2b-eed8-4da4-8efc-77d9d8e2daca,05507f2b-eed8-4da4-8efc-77d9d8e2daca,1,0,0440ed06-3f42-48a8-9431-fd608920b577,0440ed06-3f42-48a8-9431-fd608920b577,1,0,37be75c9-bf1a-437a-ab05-f9e3aac6f440,37be75c9-bf1a-437a-ab05-f9e3aac6f440,1,0,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,1,0,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,1,0,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,1,0,e3adb576-6b33-475b-976b-7a6783de3184,e3adb576-6b33-475b-976b-7a6783de3184,1,0,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,1,0,78f5a205-dffb-4009-897a-e8f36372f33c,78f5a205-dffb-4009-897a-e8f36372f33c,1,0,f7597041-f182-42fb-803a-2521c70d627d,f7597041-f182-42fb-803a-2521c70d627d,1,0,ce988b8a-d0c1-400a-9466-aa757501bb58,ce988b8a-d0c1-400a-9466-aa757501bb58,1,0,ab98d665-8da8-406e-9e0e-3e130ab393ef,ab98d665-8da8-406e-9e0e-3e130ab393ef,1,0,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,1,0,ea8beea1-7d80-4613-b2f9-79ee612e977a,ea8beea1-7d80-4613-b2f9-79ee612e977a,1,0,afd62a32-fdbb-429a-9a64-89c61a07e018,afd62a32-fdbb-429a-9a64-89c61a07e018,1,0,027cef43-99bd-48d3-a1a3-2102ac003742,027cef43-99bd-48d3-a1a3-2102ac003742,1,0,00197ea9-de76-4e2a-97bc-93e44053e35e,00197ea9-de76-4e2a-97bc-93e44053e35e,1,0,540a47b8-f6d4-4531-ac87-3f7cfbef4c8c,540a47b8-f6d4-4531-ac87-3f7cfbef4c8c,1,0,a51f7c6f-2631-4d23-becc-c0e8b711fddd,a51f7c6f-2631-4d23-becc-c0e8b711fddd,1,0,37806357-d92c-4bea-a5ef-77f138578fda,37806357-d92c-4bea-a5ef-77f138578fda,1,0,91b100e6-fbbe-4bb0-8d51-d12595a2a3e8,91b100e6-fbbe-4bb0-8d51-d12595a2a3e8,1,0,0a880538-f97f-448e-a4a9-82b0194dbe28,0a880538-f97f-448e-a4a9-82b0194dbe28,1,0,24b4dd9e-825f-471b-b15d-ae21a508d183,24b4dd9e-825f-471b-b15d-ae21a508d183,1,0,179868b7-d342-4df0-9386-c114d75faf3a,179868b7-d342-4df0-9386-c114d75faf3a,1,0,bbc4cc8c-31c2-4fcf-b86c-9ec65b2772b0,bbc4cc8c-31c2-4fcf-b86c-9ec65b2772b0,1,0,929e9199-dfd5-497d-ad77-6638d20c7336,929e9199-dfd5-497d-ad77-6638d20c7336,1,0,4d1546ee-30ff-4cf7-afd3-60b565e3cb53,4d1546ee-30ff-4cf7-afd3-60b565e3cb53,1,0,aaf51715-f468-4856-b9ae-fd66bc143633,aaf51715-f468-4856-b9ae-fd66bc143633,1,0,e9650eea-d35a-4abc-977c-fb9b2abba0e5,e9650eea-d35a-4abc-977c-fb9b2abba0e5,1,0,b00626a3-5438-40c4-8ca9-5609e9dfe476,b00626a3-5438-40c4-8ca9-5609e9dfe476,1,0,b537f309-f957-4804-9f0f-03a71aedf694,b537f309-f957-4804-9f0f-03a71aedf694,1,0,4d72bd30-8d60-4f84-9ad8-83489d9cb3fb,4d72bd30-8d60-4f84-9ad8-83489d9cb3fb,1,0,7e4afed8-5c56-4765-bcd0-a40e6121ba22,7e4afed8-5c56-4765-bcd0-a40e6121ba22,1,0,155660a1-8a63-4562-a715-d75a8af7176b,155660a1-8a63-4562-a715-d75a8af7176b,1,0,878fe826-fa99-44ad-9891-5eada9744017,878fe826-fa99-44ad-9891-5eada9744017,1,0,0d61712a-dfaf-46f1-b728-62993dd94fbe,0d61712a-dfaf-46f1-b728-62993dd94fbe,1,0,3a6cf496-09b9-4947-9df5-06d23b474558,3a6cf496-09b9-4947-9df5-06d23b474558,1,0,625b498a-33d1-4162-9525-fb7790cbb6a8,625b498a-33d1-4162-9525-fb7790cbb6a8,1,0,28223f7b-d15a-4f12-b57c-1f6d08a902f9,28223f7b-d15a-4f12-b57c-1f6d08a902f9,1,0,dd9eb5b7-5aed-4e51-9939-9ff14492d240,dd9eb5b7-5aed-4e51-9939-9ff14492d240,1,0,b2a14899-d589-4990-b85e-7bffb427e8af,b2a14899-d589-4990-b85e-7bffb427e8af,1,0,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0981d114-05bd-4ee1-a8fd-398fa6620d0b,1,0,3210ba40-382e-4917-ad0f-9bd88d23dc25,3210ba40-382e-4917-ad0f-9bd88d23dc25,1,0,835e3ead-d01f-410b-937a-902dd5e66aec,835e3ead-d01f-410b-937a-902dd5e66aec,1,0,40141982-d1d6-416f-844e-19143a407ff9,40141982-d1d6-416f-844e-19143a407ff9,1,0,f5c4d4ad-dda6-4dc3-b112-61f776006f3c,f5c4d4ad-dda6-4dc3-b112-61f776006f3c,1,0,466d9fd7-188e-4f3b-a673-35db9075d537,466d9fd7-188e-4f3b-a673-35db9075d537,1,0,1c2e2c7d-c9d2-46a6-81f9-30078ca511c7,1c2e2c7d-c9d2-46a6-81f9-30078ca511c7,1,0,09d3717a-d6f9-42fd-ae9e-df5658fa3981,09d3717a-d6f9-42fd-ae9e-df5658fa3981,1,0,9b26aa5f-1e77-4261-adf6-6f2f24f5af33,9b26aa5f-1e77-4261-adf6-6f2f24f5af33,1,0,b6b5e6c1-3967-4c2f-b8bc-0acc96afe240,b6b5e6c1-3967-4c2f-b8bc-0acc96afe240,1,0,de355360-f87a-4b0d-a37c-d0a091e7e984,de355360-f87a-4b0d-a37c-d0a091e7e984,1,0,8819399f-4803-413c-ad5e-7fa2c8878e5f,8819399f-4803-413c-ad5e-7fa2c8878e5f,1,0,99ff834a-f030-4af3-9b7d-f92a03f7c6f4,99ff834a-f030-4af3-9b7d-f92a03f7c6f4,1,0,afea5f32-22ff-4940-8156-3ec8b9c7bbb9,afea5f32-22ff-4940-8156-3ec8b9c7bbb9,1,0,fa01c28c-44d1-4fa9-b167-73d6cecb7730,fa01c28c-44d1-4fa9-b167-73d6cecb7730,1,0,d82c675e-7d38-417c-9cfc-6af0e86addfd,d82c675e-7d38-417c-9cfc-6af0e86addfd,1,0,319c4428-9463-4aa4-a87a-2749c49f4069,319c4428-9463-4aa4-a87a-2749c49f4069,1,0,497deeb7-0630-4f72-bcdb-ebacf8963d79,497deeb7-0630-4f72-bcdb-ebacf8963d79,1,0,ef471953-7c99-40f9-a31d-f50ed8ba3fc5,ef471953-7c99-40f9-a31d-f50ed8ba3fc5,1,0,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,1,0,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,1,0,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,1,0,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,1,0,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,1,0,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,1,0,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,1,0,fc65918a-2ad1-47b1-980d-5afe63579964,fc65918a-2ad1-47b1-980d-5afe63579964,1,0,7ece6efe-16a1-4294-8c28-3fa6427ba9f0,7ece6efe-16a1-4294-8c28-3fa6427ba9f0,1,0,61094d92-b1e6-45b9-9258-38a7bb1d6469,61094d92-b1e6-45b9-9258-38a7bb1d6469,1,0,4791b5d4-3568-4420-8c25-89ecce7c6353,4791b5d4-3568-4420-8c25-89ecce7c6353,1,0,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,1,0,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,1,0,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,1,0,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,1,0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,1,0,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1,0,00605607-03ab-43fc-ba08-9fc32f582d0a,00605607-03ab-43fc-ba08-9fc32f582d0a,1,0,5ab0a910-74ab-4af0-b5a3-40845a789fde,5ab0a910-74ab-4af0-b5a3-40845a789fde,1,0,bb659006-c11e-4427-8d86-229ba43ef679,bb659006-c11e-4427-8d86-229ba43ef679,1,0,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,1,0,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,1,0,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,1,0,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,1,0,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,1,0,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,1,0,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,1,0,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,1,0,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,1,0,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,1,0,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,1,0,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1,0,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,1,0,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,1,0,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,1,0,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,1,0,ec11342f-594f-416f-a10f-bd1bfa695c08,ec11342f-594f-416f-a10f-bd1bfa695c08,1,0,31c3ac44-204e-43fd-bca3-fd18fa091c58,31c3ac44-204e-43fd-bca3-fd18fa091c58,1,0,74f03c35-5da0-406e-a938-e8e5d49975ef,74f03c35-5da0-406e-a938-e8e5d49975ef,1,0,c9ab3890-6d16-431f-ab2b-b5058e6202a4,c9ab3890-6d16-431f-ab2b-b5058e6202a4,1,0,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,1,0,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,1,0,4090c6f7-1d25-4b17-9baa-18daa0640b0f,4090c6f7-1d25-4b17-9baa-18daa0640b0f,1,0,26125e58-dfc8-4bbb-a3a4-80616471746e,26125e58-dfc8-4bbb-a3a4-80616471746e,1,0,b1c699cd-efdc-461c-ad37-10bfd4bc9674,b1c699cd-efdc-461c-ad37-10bfd4bc9674,1,0,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,1,0,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,1,0,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,1,0,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,1,0,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,1,0,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,1,0,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,1,0,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,1,0,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,1,0,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,1,0,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,1,0,36b15776-5211-4afa-9b6c-c042121218c0,36b15776-5211-4afa-9b6c-c042121218c0,1,0,422a0e10-361f-46ba-b92e-3088d81e12a4,422a0e10-361f-46ba-b92e-3088d81e12a4,1,0,f37b7b25-abd2-4e19-9712-78aafceb4f43,f37b7b25-abd2-4e19-9712-78aafceb4f43,1,0,7cd4c6ea-5795-4bea-a159-1e66650c42fe,7cd4c6ea-5795-4bea-a159-1e66650c42fe,1,0,091fcffa-da7e-4375-bf0b-11cc4950b5ad,091fcffa-da7e-4375-bf0b-11cc4950b5ad,1,0,57e91491-73b6-43f7-b7f8-26efec56ce9e,57e91491-73b6-43f7-b7f8-26efec56ce9e,1,0,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,1,0,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,1,0,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,1,0,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,1,0,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,1,0,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,1,0,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,1,0,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,1,0,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,1,0,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,1,0,00696255-ea14-4fee-8633-0962f3c441d1,00696255-ea14-4fee-8633-0962f3c441d1,1,0,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,1,0,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,1,0,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,1,0,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,1,0,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,1,0,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,1,0,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,1,0,fef27478-ddfd-4ad9-8161-148761f29698,fef27478-ddfd-4ad9-8161-148761f29698,1,0,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,1,0,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,1,0,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,1,0,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,1,0,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,1,0,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,1,0,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,1,0,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,1,0,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1,0,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,1,0,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,1,0,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,1,0,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,1,0,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,1,0,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,1,0,dd6fdc0d-49bb-4fa1-aa17-bd9dc38a0992,dd6fdc0d-49bb-4fa1-aa17-bd9dc38a0992,1,0,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,1,0,5e86a443-bd0f-411d-b1b9-41bfa0cf1a2f,5e86a443-bd0f-411d-b1b9-41bfa0cf1a2f,1,0,fcaecd43-b938-4680-93be-963db5218f35,fcaecd43-b938-4680-93be-963db5218f35,1,0,63415525-46a2-4d70-bdab-665945a9185c,63415525-46a2-4d70-bdab-665945a9185c,1,0,27e37fde-daf0-47fa-865c-3cd86151f5be,27e37fde-daf0-47fa-865c-3cd86151f5be,1,0,b3b63074-984a-48d2-ba5b-d69dd0b8067e,b3b63074-984a-48d2-ba5b-d69dd0b8067e,1,0,fc4a9f03-c81f-4201-814c-c6d5a5029168,fc4a9f03-c81f-4201-814c-c6d5a5029168,1,0,abba612c-137a-4dff-89f3-445945c30859,abba612c-137a-4dff-89f3-445945c30859,1,0,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,1,0,9b0e9fec-8261-4e20-9556-754a46d11c12,9b0e9fec-8261-4e20-9556-754a46d11c12,1,0,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,1,0,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,1,0,d1ade16c-bd56-46e5-874f-3117c5653192,d1ade16c-bd56-46e5-874f-3117c5653192,1,0,339398c0-6407-483c-82f7-266ef08b8657,339398c0-6407-483c-82f7-266ef08b8657,1,0,4f0a8f8c-68cb-4afe-b487-64e7ceeef9ab,4f0a8f8c-68cb-4afe-b487-64e7ceeef9ab,1,0,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,1,0,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,1,0,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,1,0,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,1,0,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,1,0,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,1,0,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,1,0,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,1,0,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,1,0,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,1,0,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,1,0,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,1,0,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,1,0,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,1,0,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,1,0,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,1,0,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,1,0,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,1,0,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,1,0,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,1,0,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,1,0,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,1,0,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,1,0,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,1,0,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,1,0,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,1,0,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,1,0,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,1,0,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,1,0,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,1,0,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,1,0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,1,0,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,1,0,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,1,0,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,1,0,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,1,0,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,1,0,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,1,0,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,1,0,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,1,0,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,1,0,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,1,0,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,1,0,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,1,0,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,1,0,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,1,0,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,1,0,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,1,0,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,1,0,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,1,0,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,1,0,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,1,0,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,1,0,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,1,0,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,1,0,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,1,0,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,1,0,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,1,0,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,1,0,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,1,0,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,1,0,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,1,0,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,1,0,b3f7f763-bea9-4f59-9450-df95e5c3d89d,b3f7f763-bea9-4f59-9450-df95e5c3d89d,1,0,9111e28e-c1c7-414b-9288-61bd06a04d04,9111e28e-c1c7-414b-9288-61bd06a04d04,1,0,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,1,0,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,1,0,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,1,0,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,1,0,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,1,0,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1,0,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,1,0,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,1,0,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,1,0,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,1,0,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,1,0,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1,0,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,1,0,8fbf9432-77e8-4951-87a1-4368e3a5e117,8fbf9432-77e8-4951-87a1-4368e3a5e117,1,0,fbd5d6d8-05cd-43a3-85da-8dcbeee08333,fbd5d6d8-05cd-43a3-85da-8dcbeee08333,1,0,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,1,0,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,1,0,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,1,0,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,1,0,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,1,0,3afe11f6-7424-4b41-a42f-91db33756fa3,3afe11f6-7424-4b41-a42f-91db33756fa3,1,0,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,1,0,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,1,0,134bbd7c-cadd-4395-b7a4-0249dfe7d0b1,134bbd7c-cadd-4395-b7a4-0249dfe7d0b1,1,0,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,1,0,f908b81e-f5ba-46ca-b7c0-8cb43ab23901,f908b81e-f5ba-46ca-b7c0-8cb43ab23901,1,0,3c305f89-e453-46c7-987b-f01dc964efdb,3c305f89-e453-46c7-987b-f01dc964efdb,1,0,1809ff43-2af2-44d1-ac7b-91d5bbe4f0ce,1809ff43-2af2-44d1-ac7b-91d5bbe4f0ce,1,0,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,1,0,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,1,0,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,1,0,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,1,0,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,1,0,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,1,0,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,1,0,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,1,0,c7bafd34-5b15-42ec-b329-0be3002775ad,c7bafd34-5b15-42ec-b329-0be3002775ad,1,0,6feb2278-9149-47f8-a0ec-eb4bd9f44716,6feb2278-9149-47f8-a0ec-eb4bd9f44716,1,0,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,1,0,cd6770d5-cd3c-47af-bc46-c865993adf63,cd6770d5-cd3c-47af-bc46-c865993adf63,1,0,97ec899d-a2a0-4691-83ff-25b78dd49ef6,97ec899d-a2a0-4691-83ff-25b78dd49ef6,1,0,411db885-f761-44e5-bdd1-9fdf9e741ac1,411db885-f761-44e5-bdd1-9fdf9e741ac1,1,0,269ada84-71a9-4b4b-9604-caa40c5b7067,269ada84-71a9-4b4b-9604-caa40c5b7067,1,0,ea13607a-3e05-4468-9932-41b6d51cfedf,ea13607a-3e05-4468-9932-41b6d51cfedf,1,0,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,1,0,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,1,0,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,1,0,bd362ff9-3dec-4a4b-9595-8609de76e842,bd362ff9-3dec-4a4b-9595-8609de76e842,1,0,76cc9ae1-7ac2-4b99-8def-f21dc55ad07d,76cc9ae1-7ac2-4b99-8def-f21dc55ad07d,1,0,43e37533-ed38-4000-a387-5749f8d9aaf3,43e37533-ed38-4000-a387-5749f8d9aaf3,1,0,e93bdb44-64b3-43d8-b15a-c561dbb91974,e93bdb44-64b3-43d8-b15a-c561dbb91974,1,0,928e0e05-b946-48c8-9619-2d93eb94b036,928e0e05-b946-48c8-9619-2d93eb94b036,1,0,99e701f7-9206-4b20-bb32-e60c9a1d570e,99e701f7-9206-4b20-bb32-e60c9a1d570e,1,0,a7c7c835-5402-4bdd-a0e3-d21746174d5a,a7c7c835-5402-4bdd-a0e3-d21746174d5a,1,0,54766e6b-cf49-4c58-b5e5-dcb6362ac5e2,54766e6b-cf49-4c58-b5e5-dcb6362ac5e2,1,0,f2210cf1-f9f5-41ed-8b4d-937778da842b,f2210cf1-f9f5-41ed-8b4d-937778da842b,1,0,07e81872-afac-4720-86b4-91e7bf4a2881,07e81872-afac-4720-86b4-91e7bf4a2881,1,0,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,1,0,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,1,0,532dfa48-39b0-4d0f-9f8c-b51ca27e47a9,532dfa48-39b0-4d0f-9f8c-b51ca27e47a9,1,0,17bc0f34-c35b-4beb-be5f-8e8d8f06c053,17bc0f34-c35b-4beb-be5f-8e8d8f06c053,1,0,f91813e6-b75c-43fb-8da3-a0d958dc6fa0,f91813e6-b75c-43fb-8da3-a0d958dc6fa0,1,0,ad066c0d-4f4c-48af-9cc8-bb835372150a,ad066c0d-4f4c-48af-9cc8-bb835372150a,1,0,a2145e81-239e-4267-8a43-ea3f7babe878,a2145e81-239e-4267-8a43-ea3f7babe878,1,0,39598414-9c1d-46ec-a534-8bd43e622e45,39598414-9c1d-46ec-a534-8bd43e622e45,1,0,b552c510-4fd4-4c16-9022-dc5babcafc52,b552c510-4fd4-4c16-9022-dc5babcafc52,1,0,3892c06d-28f1-4238-a929-201316cac1ed,3892c06d-28f1-4238-a929-201316cac1ed,1,0,c13dea2e-17fa-4a5f-a70f-96e623db8a6b,c13dea2e-17fa-4a5f-a70f-96e623db8a6b,1,0,ecc0ac05-9813-482d-bc39-0be1490d3f8b,ecc0ac05-9813-482d-bc39-0be1490d3f8b,1,0,866f53c8-4f1e-484a-a809-6130f7eef872,866f53c8-4f1e-484a-a809-6130f7eef872,1,0,339e8cba-a92e-42f6-8d00-3b8b56ce3b0f,339e8cba-a92e-42f6-8d00-3b8b56ce3b0f,1,0,567c68fd-74c7-4b6e-9119-56ac8d78073c,567c68fd-74c7-4b6e-9119-56ac8d78073c,1,0,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,1,0,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,1,0,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,1,0,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,1,0,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,1,0,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,1,0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,1,0,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,1,0,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,1,0,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,1,0,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,1,0,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,1,0,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,1,0,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,1,0,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,1,0,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,1,0,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,1,0,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,1,0,d5a73869-381e-4878-8db7-596643937202,d5a73869-381e-4878-8db7-596643937202,1,0,c91de10a-d370-4495-9d9e-98581e566385,c91de10a-d370-4495-9d9e-98581e566385,1,0,3a93f1d2-3e9c-41a9-9d53-314538a96bb2,3a93f1d2-3e9c-41a9-9d53-314538a96bb2,1,0,8bc4bece-027f-460c-ade0-d7c7d3d9a6b7,8bc4bece-027f-460c-ade0-d7c7d3d9a6b7,1,0,dd73a8d8-a6db-4d3c-a808-d82bad8876b9,dd73a8d8-a6db-4d3c-a808-d82bad8876b9,1,0,11a93e3a-3c5b-4242-913c-02474a383344,11a93e3a-3c5b-4242-913c-02474a383344,1,0,ddd2861c-592b-4879-b9de-4b05a22c0b43,ddd2861c-592b-4879-b9de-4b05a22c0b43,1,0,5b383021-a800-4f0b-b8a3-d344389bff6c,5b383021-a800-4f0b-b8a3-d344389bff6c,1,0,8fe71bce-a61a-4a2e-bd18-81c7a7bb4456,8fe71bce-a61a-4a2e-bd18-81c7a7bb4456,1,0,11e708d8-82f4-4d45-a77d-7b9d23c0ef54,11e708d8-82f4-4d45-a77d-7b9d23c0ef54,1,0,8a57d427-a34e-4121-84e6-1a86a9f9092d,8a57d427-a34e-4121-84e6-1a86a9f9092d,1,0,dbc1bf11-e92a-4f4e-90d4-6a3ccdaec7e5,dbc1bf11-e92a-4f4e-90d4-6a3ccdaec7e5,1,0,29ec9423-25ef-4cf2-ad6a-58f854c3e22b,29ec9423-25ef-4cf2-ad6a-58f854c3e22b,1,0,2607e4d1-4fc0-4270-ad45-2c95d4aa04da,2607e4d1-4fc0-4270-ad45-2c95d4aa04da,1,0,b4b4bd5d-a860-4994-90b7-0c60ab680c4e,b4b4bd5d-a860-4994-90b7-0c60ab680c4e,1,0,68447105-a784-4803-8eb8-3701b0fc819d,68447105-a784-4803-8eb8-3701b0fc819d,1,0,ec892726-dee3-4edb-ad71-020404b09477,ec892726-dee3-4edb-ad71-020404b09477,1,0,5fb5320c-cd7c-4f28-ad6a-8670a60a9e11,5fb5320c-cd7c-4f28-ad6a-8670a60a9e11,1,0,59dee70d-aeca-470a-b3c4-e43bb16c5753,59dee70d-aeca-470a-b3c4-e43bb16c5753,1,0,82777e92-0681-44bf-b51e-4d98fcd5d5bd,82777e92-0681-44bf-b51e-4d98fcd5d5bd,1,0,2e0b331d-92d4-4250-94c6-9ced8cdcb1e4,2e0b331d-92d4-4250-94c6-9ced8cdcb1e4,1,0,cee126de-d567-44d3-b14c-35da6e501324,cee126de-d567-44d3-b14c-35da6e501324,1,0,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,1,0,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,1,0,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,1,0,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,1,0,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,1,0,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,1,0,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,1,0,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,1,0,325bacdd-793f-47d8-b987-57e9d5f2782b,325bacdd-793f-47d8-b987-57e9d5f2782b,1,0,80395d47-70d7-4d8d-9b18-93283fba80c2,80395d47-70d7-4d8d-9b18-93283fba80c2,1,0,8b621ec9-24c9-4166-90ce-29c5ad30f78b,8b621ec9-24c9-4166-90ce-29c5ad30f78b,1,0,cc98670a-7b18-4973-b211-90261c5c8c10,cc98670a-7b18-4973-b211-90261c5c8c10,1,0,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,1,0,fb36c775-1124-4ba6-8af8-133bf66fcb54,fb36c775-1124-4ba6-8af8-133bf66fcb54,1,0,51f9aff4-71da-4b1b-b48b-04122a17d855,51f9aff4-71da-4b1b-b48b-04122a17d855,1,0,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,1,0,62957889-503f-4923-a372-29776dc3b5e5,62957889-503f-4923-a372-29776dc3b5e5,1,0,90385850-d37b-4b2e-ac87-95c17f32197c,90385850-d37b-4b2e-ac87-95c17f32197c,1,0,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,1,0,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,1,0,6b28a716-2fb1-47f7-a7d6-f2fe7edb32c3,6b28a716-2fb1-47f7-a7d6-f2fe7edb32c3,1,0,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,1,0,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,1,0,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,1,0,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,1,0,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,1,0,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,1,0,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,1,0,73afaad8-dfa9-43e3-bdaf-543c3545d788,73afaad8-dfa9-43e3-bdaf-543c3545d788,1,0,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,1,0,4f0bda80-2246-43be-95f8-ae8480682cd5,4f0bda80-2246-43be-95f8-ae8480682cd5,1,0,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,1,0,6f683f46-9eef-4e78-bc2f-7174238bf53c,6f683f46-9eef-4e78-bc2f-7174238bf53c,1,0,7d1ed38b-98cf-4a0e-a605-680bb580d904,7d1ed38b-98cf-4a0e-a605-680bb580d904,1,0,b769eda0-11de-401c-a68b-4fce4555d4fc,b769eda0-11de-401c-a68b-4fce4555d4fc,1,0,fd7a668f-3099-4e15-956a-92c6295dd4d5,fd7a668f-3099-4e15-956a-92c6295dd4d5,1,0,afcbd830-ec5f-4865-a176-ea3014dff908,afcbd830-ec5f-4865-a176-ea3014dff908,1,0,dc5fc801-14e4-42e8-b396-76eb30b69eea,dc5fc801-14e4-42e8-b396-76eb30b69eea,1,0,485b9f00-475a-49e5-ade2-b2e05d94ecf0,485b9f00-475a-49e5-ade2-b2e05d94ecf0,1,0,310aef5a-84d9-4a68-af78-d623beff8a88,310aef5a-84d9-4a68-af78-d623beff8a88,1,0,398bf9d1-c353-461e-a1be-683047dcbe41,398bf9d1-c353-461e-a1be-683047dcbe41,1,0,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,1,0,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,1,0,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,1,0,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,1,0,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,1,0,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,1,0,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,1,0,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,1,0,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,1,0,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,1,0,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,1,0,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,1,0,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,1,0,569047c2-0879-4fba-a814-44812d21043b,569047c2-0879-4fba-a814-44812d21043b,1,0,0c3c4494-c037-431e-9eeb-9b6cfd7372c3,0c3c4494-c037-431e-9eeb-9b6cfd7372c3,1,0,80512d95-5458-4934-98ae-a7b58099196b,80512d95-5458-4934-98ae-a7b58099196b,1,0,6f2354cd-4a34-4921-96bb-b786486f85cf,6f2354cd-4a34-4921-96bb-b786486f85cf,1,0,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,1,0,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,1,0,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,1,0,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,1,0,91562fe8-e630-4bcb-a14e-c0e1e129141a,91562fe8-e630-4bcb-a14e-c0e1e129141a,1,0,c261abfd-3828-47b5-aa32-dfdd3a1636ad,c261abfd-3828-47b5-aa32-dfdd3a1636ad,1,0,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,1,0,1db1cb24-f364-4b91-bc96-c216764207a0,1db1cb24-f364-4b91-bc96-c216764207a0,1,0,64d7c8a7-1c15-4afb-ad97-abf8729c604e,64d7c8a7-1c15-4afb-ad97-abf8729c604e,1,0,a3cbbc8a-4afd-48c5-91d4-4849d18905c1,a3cbbc8a-4afd-48c5-91d4-4849d18905c1,1,0,5d6b29dc-38af-4dce-b79c-ce8f23afb3b1,5d6b29dc-38af-4dce-b79c-ce8f23afb3b1,1,0,c04b685a-0d2d-404c-a74a-775ffab298ce,c04b685a-0d2d-404c-a74a-775ffab298ce,1,0,5fe6967d-e333-464b-a89e-8c868c0ce37d,5fe6967d-e333-464b-a89e-8c868c0ce37d,1,0,5aef2892-7a87-4d3b-bb46-8340a7fb97a8,5aef2892-7a87-4d3b-bb46-8340a7fb97a8,1,0,8efa4c12-b5ba-4dfd-bdc9-e824402fc4b1,8efa4c12-b5ba-4dfd-bdc9-e824402fc4b1,1,0,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,1,0,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,1,0,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,1,0,54b5b44c-5f24-4b2a-982c-4489b18db7f0,54b5b44c-5f24-4b2a-982c-4489b18db7f0,1,0,5bc04a9a-6a0a-4607-b8eb-743b87143ae7,5bc04a9a-6a0a-4607-b8eb-743b87143ae7,1,0,e8045f52-7b27-48b0-b009-d488718b3bef,e8045f52-7b27-48b0-b009-d488718b3bef,1,0,1796bcbb-a629-4509-95c9-78562689f809,1796bcbb-a629-4509-95c9-78562689f809,1,0,cd9799c9-f5bf-4537-8885-06fb6e6b8f93,cd9799c9-f5bf-4537-8885-06fb6e6b8f93,1,0,d19e8fcc-62cc-4ce4-81bc-ead33a2714df,d19e8fcc-62cc-4ce4-81bc-ead33a2714df,1,0,1aa6b483-0f87-4ed3-94ea-8b81813532d6,1aa6b483-0f87-4ed3-94ea-8b81813532d6,1,0,0f79d87e-3311-4281-8f46-6154e708b930,0f79d87e-3311-4281-8f46-6154e708b930,1,0,e057e428-99c1-419d-a169-697c1e825e94,e057e428-99c1-419d-a169-697c1e825e94,1,0,784a60bd-4070-476d-9b8b-f607c76dc52b,784a60bd-4070-476d-9b8b-f607c76dc52b,1,0,904d5bd0-3843-4aaa-86a3-f8e12282e5c0,904d5bd0-3843-4aaa-86a3-f8e12282e5c0,1,0,90420fe9-f75a-4bcc-8e1a-9d665a61ecef,90420fe9-f75a-4bcc-8e1a-9d665a61ecef,1,0,748f7ddb-4cdc-46e5-9108-f7a550b33537,748f7ddb-4cdc-46e5-9108-f7a550b33537,1,0,0534460b-0548-45f0-ac79-aa4bc109655c,0534460b-0548-45f0-ac79-aa4bc109655c,1,0,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,1,0,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,1,0,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,1,0,a8f32b13-249c-4ce6-a521-f06a87f2e670,a8f32b13-249c-4ce6-a521-f06a87f2e670,1,0,815775e4-cfb7-495b-87c4-d134b90d93d4,815775e4-cfb7-495b-87c4-d134b90d93d4,1,0,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,1,0,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,1,0,7a27b378-89ac-4cad-8c69-a0cd14812d7e,7a27b378-89ac-4cad-8c69-a0cd14812d7e,1,0,d2433a11-8e1d-4e4c-966d-37cde6283f72,d2433a11-8e1d-4e4c-966d-37cde6283f72,1,0,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,1,0,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,1,0,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,1,0,477dfea4-e401-4cf0-b0a8-2df7c3836c58,477dfea4-e401-4cf0-b0a8-2df7c3836c58,1,0,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,1,0,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,1,0,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,1,0,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,1,0,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,1,0,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,1,0,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,1,0,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,1,0,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,1,0,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,1,0,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,1,0,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,1,0,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,1,0,e870a1bd-0c08-4d1e-832a-357922983c19,e870a1bd-0c08-4d1e-832a-357922983c19,1,0,9f71aeac-f889-40dc-91bd-d670da4efd2b,9f71aeac-f889-40dc-91bd-d670da4efd2b,1,0,62f8a9b2-9e56-4d5c-a7e2-a85f5b27a5b7,62f8a9b2-9e56-4d5c-a7e2-a85f5b27a5b7,1,0,614ef0bd-3298-408b-bf71-37df8ee60702,614ef0bd-3298-408b-bf71-37df8ee60702,1,0,26ff1be6-f72a-456a-9dce-302029752603,26ff1be6-f72a-456a-9dce-302029752603,1,0,db850a08-0c99-4a57-9b04-38be64bd38fb,db850a08-0c99-4a57-9b04-38be64bd38fb,1,0,abeca127-5ae9-46af-a5e8-d6438fd68367,abeca127-5ae9-46af-a5e8-d6438fd68367,1,0,bce81631-9f6d-42b3-b4b6-2199afb08f2f,bce81631-9f6d-42b3-b4b6-2199afb08f2f,1,0,67d6878f-3e47-4142-8f98-c5a207f0b8a8,67d6878f-3e47-4142-8f98-c5a207f0b8a8,1,0,7f4b872f-0e50-49dd-984d-f5fc3ac3f2f0,7f4b872f-0e50-49dd-984d-f5fc3ac3f2f0,1,0,68636657-4d46-4c2a-9b2f-11521a55dfb4,68636657-4d46-4c2a-9b2f-11521a55dfb4,1,0,18a83f43-dc84-4f8a-9580-681b19f571c4,18a83f43-dc84-4f8a-9580-681b19f571c4,1,0,01c588b0-d0ce-4978-b04d-084e6a00fcc7,01c588b0-d0ce-4978-b04d-084e6a00fcc7,1,0,a23642d9-8c4f-44a5-8865-bfb286e47c55,a23642d9-8c4f-44a5-8865-bfb286e47c55,1,0,7b37e038-dcef-41e1-b6e7-ed73c6958415,7b37e038-dcef-41e1-b6e7-ed73c6958415,1,0,24df2d14-5ebf-4ded-ba14-5daee7a0c536,24df2d14-5ebf-4ded-ba14-5daee7a0c536,1,0,13d6e2e9-b268-4c1b-8b8b-30c5296cfe4c,13d6e2e9-b268-4c1b-8b8b-30c5296cfe4c,1,0,03bb028a-ee8c-411e-8382-653046f803c6,03bb028a-ee8c-411e-8382-653046f803c6,1,0,c4fa80ca-32d6-4a44-9fe2-7ffd67e1cb30,c4fa80ca-32d6-4a44-9fe2-7ffd67e1cb30,1,0,8aa73dfd-41ac-4f79-bf73-cd2da51b1232,8aa73dfd-41ac-4f79-bf73-cd2da51b1232,1,0,38d5ed93-133b-44fe-827a-69a6cfc0461d,38d5ed93-133b-44fe-827a-69a6cfc0461d,1,0,436a9c94-55f6-4463-becd-573189753ee7,436a9c94-55f6-4463-becd-573189753ee7,1,0,50bf4050-390c-419c-8f55-82a540093ab1,50bf4050-390c-419c-8f55-82a540093ab1,1,0,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,1,0,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,1,0,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,1,0,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,1,0,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1,0,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,1,0,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,1,0,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1,0,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,1,0,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,1,0,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,1,0,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,1,0,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,1,0,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,1,0,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,1,0,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1,0,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,1,0,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,1,0,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,1,0,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,1,0,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,1,0,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,1,0,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,1,0,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,1,0,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,1,0,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,1,0,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,1,0,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1,0,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,1,0,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,1,0,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,1,0,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,1,0,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,1,0,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,1,0,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,1,0,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,1,0,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,1,0,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,1,0,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,1,0,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,1,0,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,1,0,45ca19df-90f3-4143-a659-bc0cb97efee9,45ca19df-90f3-4143-a659-bc0cb97efee9,1,0,6fe997a3-d729-420b-b2b2-558e9a1031ee,6fe997a3-d729-420b-b2b2-558e9a1031ee,1,0,4e1b48b1-c998-4f99-94e7-50af22059bfa,4e1b48b1-c998-4f99-94e7-50af22059bfa,1,0,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,1,0,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,1,0,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,1,0,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,1,0,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,1,0,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,1,0,d57a3300-0f9f-4fe5-b627-01c96b723053,d57a3300-0f9f-4fe5-b627-01c96b723053,1,0,ccfdf89b-f63e-4e46-b942-0d145695fdc6,ccfdf89b-f63e-4e46-b942-0d145695fdc6,1,0,6d40a555-9c20-4643-b689-2f61df772f78,6d40a555-9c20-4643-b689-2f61df772f78,1,0,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,1,0,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,1,0,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,1,0,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,1,0,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,1,0,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,1,0,cf783265-a4cb-436f-963a-1ff8220ae246,cf783265-a4cb-436f-963a-1ff8220ae246,1,0,3560f949-48f9-4fca-9fe2-81efc1ec0eee,3560f949-48f9-4fca-9fe2-81efc1ec0eee,1,0,662078f0-b75d-4c44-896f-7b7f74fd1ed4,662078f0-b75d-4c44-896f-7b7f74fd1ed4,1,0,4fa11304-fbd4-4c90-909d-5024283a6868,4fa11304-fbd4-4c90-909d-5024283a6868,1,0,207290c2-5221-48ad-99aa-bb0f7955df3f,207290c2-5221-48ad-99aa-bb0f7955df3f,1,0,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,1,0,d91a016e-cca9-4976-9c53-2c96fa95cf1a,d91a016e-cca9-4976-9c53-2c96fa95cf1a,1,0,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,1,0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,1,0,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,1,0,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,1,0,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,1,0,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,1,0,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,1,0,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,1,0,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,1,0,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,1,0,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,1,0,69c207c2-7699-4467-b127-286ecd6d0f29,69c207c2-7699-4467-b127-286ecd6d0f29,1,0,70a06a02-8fb8-4a39-9e50-b7c27c41f49f,70a06a02-8fb8-4a39-9e50-b7c27c41f49f,1,0,810755ad-e921-4250-a0d3-af77fe1b6c79,810755ad-e921-4250-a0d3-af77fe1b6c79,1,0,f0f2f6de-b5ca-416c-b2e7-70a2df0993a1,f0f2f6de-b5ca-416c-b2e7-70a2df0993a1,1,0,99a40d71-f47a-4c04-9137-d297eda2fad9,99a40d71-f47a-4c04-9137-d297eda2fad9,1,0,33fa908a-5516-43c8-94d3-28c60eba8d66,33fa908a-5516-43c8-94d3-28c60eba8d66,1,0,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,1,0,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,1,0,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,1,0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,1,0,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,1,0,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,1,0,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,1,0,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,1,0,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,1,0,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,1,0,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,1,0,7904d64a-2c30-4434-8924-b4817b727db9,7904d64a-2c30-4434-8924-b4817b727db9,1,0,c550a43a-1240-4f29-9045-a262f37f703a,c550a43a-1240-4f29-9045-a262f37f703a,1,0,86b1feed-ed65-4672-a49a-c52282b40be3,86b1feed-ed65-4672-a49a-c52282b40be3,1,0,85ac42d7-400a-4469-8fcd-e6a14f258792,85ac42d7-400a-4469-8fcd-e6a14f258792,1,0,ec681c28-661c-43e3-9285-9fc606f2d24c,ec681c28-661c-43e3-9285-9fc606f2d24c,1,0,be0fbbfc-5873-41a6-80ef-35ed1b8adb4c,be0fbbfc-5873-41a6-80ef-35ed1b8adb4c,1,0,413c2d03-f717-4503-9723-c605114b2799,413c2d03-f717-4503-9723-c605114b2799,1,0,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1,0,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,1,0,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,1,0,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,1,0,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,1,0,797f4377-ee0f-4a2d-be90-a74ac10ef682,797f4377-ee0f-4a2d-be90-a74ac10ef682,1,0,f401c5be-2698-452d-8908-08faad120a47,f401c5be-2698-452d-8908-08faad120a47,1,0,98de52ae-dfab-480b-a167-4cf2a3962ed1,98de52ae-dfab-480b-a167-4cf2a3962ed1,1,0,efa5c204-b827-4860-aadd-3737c8fc5f6b,efa5c204-b827-4860-aadd-3737c8fc5f6b,1,0,ef438c21-9d10-4116-8fc7-03927062db59,ef438c21-9d10-4116-8fc7-03927062db59,1,0,7ffa25d5-5199-4e08-af76-969c17709ad4,7ffa25d5-5199-4e08-af76-969c17709ad4,1,0,a93180c6-fcb7-4b28-b954-d2f2831f1832,a93180c6-fcb7-4b28-b954-d2f2831f1832,1,0,b46fff37-cc0e-4ff4-8fde-6bd9d9b895ec,b46fff37-cc0e-4ff4-8fde-6bd9d9b895ec,1,0,eeeede5e-9534-498e-b820-87a5f919c068,eeeede5e-9534-498e-b820-87a5f919c068,1,0,8b1f81e0-1eb0-4aae-9bb6-b25d97a6c9c2,8b1f81e0-1eb0-4aae-9bb6-b25d97a6c9c2,1,0,55ecc3a2-3d94-4201-8a29-06469e0b1a17,55ecc3a2-3d94-4201-8a29-06469e0b1a17,1,0,4123c760-0e30-48d0-8211-1db84f53314b,4123c760-0e30-48d0-8211-1db84f53314b,1,0,a086da23-29d8-4d02-846b-5d171e14d730,a086da23-29d8-4d02-846b-5d171e14d730,1,0,9ec76352-5e4a-485d-bd93-eb739869e406,9ec76352-5e4a-485d-bd93-eb739869e406,1,0,6d3619e3-d125-44b6-9b51-ebf9505b04d2,6d3619e3-d125-44b6-9b51-ebf9505b04d2,1,0,9d2c802c-c946-44e5-b9bc-13ef534968cd,9d2c802c-c946-44e5-b9bc-13ef534968cd,1,0,8046b46e-d855-4a80-8270-72a104e4a941,8046b46e-d855-4a80-8270-72a104e4a941,1,0,4524e15c-4c35-4e1d-910f-5859b5702dff,4524e15c-4c35-4e1d-910f-5859b5702dff,1,0,e200002c-9f3a-49d9-bba1-dca11555511d,e200002c-9f3a-49d9-bba1-dca11555511d,1,0,efa0f74a-7ec0-42f4-a948-7ce3890559d8,efa0f74a-7ec0-42f4-a948-7ce3890559d8,1,0,97e11b91-9590-44b3-afcd-f465ce23e509,97e11b91-9590-44b3-afcd-f465ce23e509,1,0,301c1fc5-ca0a-4fac-ac51-c2e42fb3c2a8,301c1fc5-ca0a-4fac-ac51-c2e42fb3c2a8,1,0,6f2d0c99-3354-4924-959c-59320e1b0063,6f2d0c99-3354-4924-959c-59320e1b0063,1,0,aee8df57-983b-440d-9c02-cace7e632f15,aee8df57-983b-440d-9c02-cace7e632f15,1,0,6e9648dd-388f-4563-88b0-feddc6e9ce8e,6e9648dd-388f-4563-88b0-feddc6e9ce8e,1,0,eb975d96-d230-4454-8f14-6bf5522e06d2,eb975d96-d230-4454-8f14-6bf5522e06d2,1,0,6aa6513c-6f3b-4897-96fd-4a08aeb9eb1e,6aa6513c-6f3b-4897-96fd-4a08aeb9eb1e,1,0,c29d3ae4-9458-46b8-a09b-012e5d435d43,c29d3ae4-9458-46b8-a09b-012e5d435d43,1,0,dad62d28-168c-4659-a800-e484772d9003,dad62d28-168c-4659-a800-e484772d9003,1,0,4cada7d2-f1b1-4914-95fc-c5e1431c13a7,4cada7d2-f1b1-4914-95fc-c5e1431c13a7,1,0,ecbe1ead-4e4b-49db-b7f1-c097c9df2fb9,ecbe1ead-4e4b-49db-b7f1-c097c9df2fb9,1,0,be026f77-285b-4470-8a4e-c68f6e9859e2,be026f77-285b-4470-8a4e-c68f6e9859e2,1,0,a9d54a18-9c35-471b-ad8b-44ba743b7977,a9d54a18-9c35-471b-ad8b-44ba743b7977,1,0,4f75014c-831f-4de5-8b6e-94874ce274ce,4f75014c-831f-4de5-8b6e-94874ce274ce,1,0,c9f74923-95e1-4f5c-8649-3543fae6b116,c9f74923-95e1-4f5c-8649-3543fae6b116,1,0,b00616bb-406d-4e8e-80a0-f0c14cc850c0,b00616bb-406d-4e8e-80a0-f0c14cc850c0,1,0,d60aae4f-7c61-416c-bbc9-e7c95d757848,d60aae4f-7c61-416c-bbc9-e7c95d757848,1,0,c8a0da4e-0b0f-4def-a61e-5f6e04468e01,c8a0da4e-0b0f-4def-a61e-5f6e04468e01,1,0,a55e9aef-79ad-4cb6-b80a-c7f769bebbea,a55e9aef-79ad-4cb6-b80a-c7f769bebbea,1,0,62f9c12c-1837-4320-99b0-8f7ae44af735,62f9c12c-1837-4320-99b0-8f7ae44af735,1,0,ae352e0c-9f89-4ed9-ab45-f4e9040f7858,ae352e0c-9f89-4ed9-ab45-f4e9040f7858,1,0,853a5fdc-3621-442c-abd3-2fd266fddd84,853a5fdc-3621-442c-abd3-2fd266fddd84,1,0,daaff4d7-bc0b-4ab5-a277-fc02472f76ed,daaff4d7-bc0b-4ab5-a277-fc02472f76ed,1,0,bc3183cb-8691-4fa5-b154-3645f3cd8944,bc3183cb-8691-4fa5-b154-3645f3cd8944,1,0,33c9ebee-7b42-4010-a5c9-71ca7479d95c,33c9ebee-7b42-4010-a5c9-71ca7479d95c,1,0,cf202dca-e0ee-45c8-8792-46fc2f126e68,cf202dca-e0ee-45c8-8792-46fc2f126e68,1,0,be150cca-e977-4663-af19-79d8b0f91b3d,be150cca-e977-4663-af19-79d8b0f91b3d,1,0,f12857d7-bcae-4c6c-9169-2a0b1f9e9e6a,f12857d7-bcae-4c6c-9169-2a0b1f9e9e6a,1,0,1c13d12d-5c96-4d96-a07d-ec4a766c86ac,1c13d12d-5c96-4d96-a07d-ec4a766c86ac,1,0,018390b5-06d9-4d04-abad-1de1ccf0843c,018390b5-06d9-4d04-abad-1de1ccf0843c,1,0,6279f4bc-b77f-4618-9ce3-d50efc798871,6279f4bc-b77f-4618-9ce3-d50efc798871,1,0,fb05b40b-8cf5-4821-afcb-f00a77458a9b,fb05b40b-8cf5-4821-afcb-f00a77458a9b,1,0,37c68cb5-6aaf-4e57-b68c-1a5b5db252b7,37c68cb5-6aaf-4e57-b68c-1a5b5db252b7,1,0,3967bec7-9af5-40bf-9e22-a0f6b13cc795,3967bec7-9af5-40bf-9e22-a0f6b13cc795,1,0,eab9da25-07b6-4c60-9a83-08e8277d0ae7,eab9da25-07b6-4c60-9a83-08e8277d0ae7,1,0,b79ed991-f5d9-42b6-8f0b-0df49e550ced,b79ed991-f5d9-42b6-8f0b-0df49e550ced,1,0,ac50e8d6-fe0b-45a4-b0dd-cc81d7fd7357,ac50e8d6-fe0b-45a4-b0dd-cc81d7fd7357,1,0,f58a3df1-ddf3-45c8-b470-cc026cb0537f,f58a3df1-ddf3-45c8-b470-cc026cb0537f,1,0,c4e9954b-59d8-46e3-ada8-bda66e8aaceb,c4e9954b-59d8-46e3-ada8-bda66e8aaceb,1,0,9ac5a405-4eb7-4013-8bbd-5d1b6d0929ab,9ac5a405-4eb7-4013-8bbd-5d1b6d0929ab,1,0,568c16cf-c3fc-4e16-8f05-e00be8e136c2,568c16cf-c3fc-4e16-8f05-e00be8e136c2,1,0,b36ad726-fb8f-4974-986a-33f997e3fc64,b36ad726-fb8f-4974-986a-33f997e3fc64,1,0,e196c73e-c09b-4aed-b403-2b97a8bf6e47,e196c73e-c09b-4aed-b403-2b97a8bf6e47,1,0,27fdab52-f1ab-48d3-b117-06afcf319eaa,27fdab52-f1ab-48d3-b117-06afcf319eaa,1,0,bf3530c3-3244-4528-a846-ea175af53804,bf3530c3-3244-4528-a846-ea175af53804,1,0,5bdfff5e-f04c-4fe3-ae92-10a99da3a6a8,5bdfff5e-f04c-4fe3-ae92-10a99da3a6a8,1,0,3d0ae989-2d16-42df-a442-7bde817ec1b2,3d0ae989-2d16-42df-a442-7bde817ec1b2,1,0,f3d1adac-197a-4194-89fe-7178f8ccd788,f3d1adac-197a-4194-89fe-7178f8ccd788,1,0,7077b04e-75c0-414d-b295-d28aeda2bdd4,7077b04e-75c0-414d-b295-d28aeda2bdd4,1,0,c8330995-22f4-4be6-beff-64f87c6f09ed,c8330995-22f4-4be6-beff-64f87c6f09ed,1,0,56b6b570-764b-4220-9b5f-70753b0fadbd,56b6b570-764b-4220-9b5f-70753b0fadbd,1,0,588f481e-4486-4649-b584-08f7e3ab8cde,588f481e-4486-4649-b584-08f7e3ab8cde,1,0,5dfe90e2-cb1a-4510-b22c-af94ca06dd7b,5dfe90e2-cb1a-4510-b22c-af94ca06dd7b,1,0,70c217b8-ddf0-4b7c-80b0-f5a76dbbcec7,70c217b8-ddf0-4b7c-80b0-f5a76dbbcec7,1,0,74e3e5c4-7dec-4fde-975b-01e7f4002a87,74e3e5c4-7dec-4fde-975b-01e7f4002a87,1,0,689b382f-308e-4558-817c-819ceb59f61e,689b382f-308e-4558-817c-819ceb59f61e,1,0,ed96d8d2-3164-4a85-8408-06d9a1f0c2ce,ed96d8d2-3164-4a85-8408-06d9a1f0c2ce,1,0,2482e800-50c9-4c7c-909f-18ba2e30ff31,2482e800-50c9-4c7c-909f-18ba2e30ff31,1,0,fdb20bf0-6dc5-4ce6-acdc-4def1cc23a67,fdb20bf0-6dc5-4ce6-acdc-4def1cc23a67,1,0,b528d506-be3f-47f2-880b-af7093c71649,b528d506-be3f-47f2-880b-af7093c71649,1,0,7f3f55d5-b1f5-4b6b-b189-ff5715341489,7f3f55d5-b1f5-4b6b-b189-ff5715341489,1,0,5a32d342-8b80-4069-98c3-cf392f473b06,5a32d342-8b80-4069-98c3-cf392f473b06,1,0,888c5a1f-5329-40da-9102-eac26657a7d9,888c5a1f-5329-40da-9102-eac26657a7d9,1,0,0b2c1689-22ba-4ed6-80f3-10475f11db1a,0b2c1689-22ba-4ed6-80f3-10475f11db1a,1,0,46bbfede-5b4d-44fc-90ec-f6f3598340c4,46bbfede-5b4d-44fc-90ec-f6f3598340c4,1,0,acc6358f-be29-4931-8ed2-b769a48cee08,acc6358f-be29-4931-8ed2-b769a48cee08,1,0,51c58d33-32f7-401a-84d4-5a942129fbd5,51c58d33-32f7-401a-84d4-5a942129fbd5,1,0,07d5174e-8422-471f-a435-bf51d5af1bf0,07d5174e-8422-471f-a435-bf51d5af1bf0,1,0,e58672f5-84c9-462f-b5a6-7f15a6f2f797,e58672f5-84c9-462f-b5a6-7f15a6f2f797,1,0,4fbb189a-ecf0-483f-a904-0c34b1c23433,4fbb189a-ecf0-483f-a904-0c34b1c23433,1,0,2a34c9e8-eb4f-4600-988e-594ac7399abc,2a34c9e8-eb4f-4600-988e-594ac7399abc,1,0,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,1,0,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,1,0,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,1,0,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,1,0,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,1,0,e9a2320b-71a1-4974-8b5a-1990062ec7df,e9a2320b-71a1-4974-8b5a-1990062ec7df,1,0,2e459a7c-c448-4db4-ae21-e59646527030,2e459a7c-c448-4db4-ae21-e59646527030,1,0,891194d9-9f02-4b22-89cd-941181c83ecb,891194d9-9f02-4b22-89cd-941181c83ecb,1,0,a4d3b738-9ae3-46a9-ac21-7ac3d081c727,a4d3b738-9ae3-46a9-ac21-7ac3d081c727,1,0,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,1,0,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,1,0,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,1,0,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,1,0,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,1,0,af6bccbb-a6cb-41ee-bc4e-f2d6a5e0f419,af6bccbb-a6cb-41ee-bc4e-f2d6a5e0f419,1,0,d08679db-f83f-476e-b8c4-f3f52c3cf6fd,d08679db-f83f-476e-b8c4-f3f52c3cf6fd,1,0,fad0898f-5769-46ab-bc5e-301924b851a0,fad0898f-5769-46ab-bc5e-301924b851a0,1,0,e0227e4b-be22-4614-8980-5d573fae705d,e0227e4b-be22-4614-8980-5d573fae705d,1,0,7a7b7882-a4c1-40c8-a807-cb2d71d054cc,7a7b7882-a4c1-40c8-a807-cb2d71d054cc,1,0,6f36007b-04dc-4007-abf7-e20fbd126b97,6f36007b-04dc-4007-abf7-e20fbd126b97,1,0,791dbdee-56f6-4fe3-ada4-965c9111d69e,791dbdee-56f6-4fe3-ada4-965c9111d69e,1,0,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,1,0,aa6444a8-6c17-4207-a623-9b734e08e30e,aa6444a8-6c17-4207-a623-9b734e08e30e,1,0,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,1,0,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,1,0,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,1,0,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,1,0,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,1,0,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,1,0,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,1,0,771a1900-46be-49fe-a02d-584780de8363,771a1900-46be-49fe-a02d-584780de8363,1,0,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,1,0,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,1,0,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,1,0,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,1,0,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,1,0,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,1,0,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,1,0,acd30e63-68dc-4ab2-a6fe-16eb69d09271,acd30e63-68dc-4ab2-a6fe-16eb69d09271,1,0,04013c34-8d59-4f87-b272-732d5a6dd675,04013c34-8d59-4f87-b272-732d5a6dd675,1,0,f9df9b6b-5051-46ef-bb1f-1974f41054a7,f9df9b6b-5051-46ef-bb1f-1974f41054a7,1,0,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,1,0,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,1,0,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,1,0,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,1,0,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,1,0,13b3c973-6be3-4898-89d5-20852cd14e46,13b3c973-6be3-4898-89d5-20852cd14e46,1,0,d978d078-4fd8-40b9-90c2-047cdaf94cba,d978d078-4fd8-40b9-90c2-047cdaf94cba,1,0,8640eacd-e6f9-4b0b-8511-c6ad2336ec6c,8640eacd-e6f9-4b0b-8511-c6ad2336ec6c,1,0,b374e22f-17f3-4186-af1f-fa35d1a7e559,b374e22f-17f3-4186-af1f-fa35d1a7e559,1,0,53555ee4-f99d-4935-a884-89313aa3ca6a,53555ee4-f99d-4935-a884-89313aa3ca6a,1,0,f38bb317-8a59-4786-be76-e1d4e534628d,f38bb317-8a59-4786-be76-e1d4e534628d,1,0,25741b39-1c6b-4851-8584-9711d25ef05a,25741b39-1c6b-4851-8584-9711d25ef05a,1,0,f4554046-493e-4960-94df-0a8b9d02f474,f4554046-493e-4960-94df-0a8b9d02f474,1,0,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,1,0,9222a6c0-b785-4811-bfb6-44ac44a55925,9222a6c0-b785-4811-bfb6-44ac44a55925,1,0,ea84021d-2431-44ad-a446-f1fb979c9e96,ea84021d-2431-44ad-a446-f1fb979c9e96,1,0,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,1,0,8fa21575-177f-4b7c-94b5-dfeefe737cb4,8fa21575-177f-4b7c-94b5-dfeefe737cb4,1,0,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,1,0,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,1,0,491a2337-1bf9-45c1-8ae6-95605ef41992,491a2337-1bf9-45c1-8ae6-95605ef41992,1,0,c3f2a760-610a-40e0-945b-1f9f6369444d,c3f2a760-610a-40e0-945b-1f9f6369444d,1,0,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,1,0,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,1,0,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,1,0,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,1,0,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,1,0,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,1,0,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,1,0,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,1,0,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,1,0,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,1,0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,1,0,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,1,0,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,1,0,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,1,0,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,1,0,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,1,0,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,1,0,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,1,0,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,1,0,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1,0,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,1,0,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,1,0,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,1,0,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,1,0,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,1,0,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,1,0,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,1,0,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,1,0,aef03c0b-2846-43b7-b382-9a51ec783e85,aef03c0b-2846-43b7-b382-9a51ec783e85,1,0,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,1,0,c0804a4a-64d5-457f-a542-8e5badccbdf1,c0804a4a-64d5-457f-a542-8e5badccbdf1,1,0,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,1,0,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,1,0,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,1,0,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,1,0,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,1,0,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,1,0,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,1,0,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,1,0,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,1,0,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,1,0,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,1,0,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1,0,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,1,0,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,1,0,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,1,0,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,1,0,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,1,0,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,1,0,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,1,0,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,1,0,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,1,0,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,1,0,1c2da2ac-e797-11e6-0489-a8667f21fde4,1c2da2ac-e797-11e6-0489-a8667f21fde4,1,0,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,1,0,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,1,0,df7892fe-e796-11e6-0489-a8667f21fde4,df7892fe-e796-11e6-0489-a8667f21fde4,1,0,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,1,0,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,1,0,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,1,0,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,1,0,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,1,0,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,1,0,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,1,0,fae8b26c-e796-11e6-0489-a8667f21fde4,fae8b26c-e796-11e6-0489-a8667f21fde4,1,0,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,1,0,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,1,0,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,1,0,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,1,0,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,1,0,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,1,0,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,1,0,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,1,0,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,1,0,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,1,0,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1,0,0a7d282e-45bb-4a87-b325-1659519867fb,0a7d282e-45bb-4a87-b325-1659519867fb,1,0,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,1,0,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,1,0,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,1,0,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,1,0,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,1,0,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,1,0,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,1,0,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,1,0,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,1,0,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,1,0,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,1,0,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,1,0,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,1,0,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,1,0,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,1,0,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,1,0,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,1,0,db03a88b-2804-45c2-9089-7ddb87ef2f18,db03a88b-2804-45c2-9089-7ddb87ef2f18,1,0,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,1,0,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,1,0,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,1,0,f64a91c4-f5cb-4e8e-8387-9f242ce6de44,f64a91c4-f5cb-4e8e-8387-9f242ce6de44,1,0,dc024d33-1715-40da-9c00-443d25a31ebc,dc024d33-1715-40da-9c00-443d25a31ebc,1,0,d029aa93-fea4-40e4-8cfb-2dc96544829b,d029aa93-fea4-40e4-8cfb-2dc96544829b,1,0,f8f585d1-01a0-4892-8852-c692ffaa1344,f8f585d1-01a0-4892-8852-c692ffaa1344,1,0,35c237a7-71e1-415c-809d-e99babee4e0e,35c237a7-71e1-415c-809d-e99babee4e0e,1,0,2116119f-7637-45a1-8e59-c9149619413b,2116119f-7637-45a1-8e59-c9149619413b,1,0,43882a2c-b625-4cfb-8220-3d12bfee09e4,43882a2c-b625-4cfb-8220-3d12bfee09e4,1,0,90639fdb-144d-495a-a097-76c45107fc97,90639fdb-144d-495a-a097-76c45107fc97,1,0,c076b7fd-7e17-4811-82e7-047e2bf43bb0,c076b7fd-7e17-4811-82e7-047e2bf43bb0,1,0,84b28732-9001-4798-b613-35ea65c26cce,84b28732-9001-4798-b613-35ea65c26cce,1,0,77d8285f-a87b-4a4e-b6ee-85bcd54dee12,77d8285f-a87b-4a4e-b6ee-85bcd54dee12,1,0,f2ec9416-3830-4607-90f3-f77fc53c9c70,f2ec9416-3830-4607-90f3-f77fc53c9c70,1,0,3057de81-eb41-4161-9dc2-5445699906af,3057de81-eb41-4161-9dc2-5445699906af,1,0,984ed6c0-e25b-46ff-9b3c-6bc0370071da,984ed6c0-e25b-46ff-9b3c-6bc0370071da,1,0,35fe84b6-7d3c-4729-a75c-a5f3ef122124,35fe84b6-7d3c-4729-a75c-a5f3ef122124,1,0,f660bf92-7de1-4a22-9cea-777069e4679d,f660bf92-7de1-4a22-9cea-777069e4679d,1,0,54f3fbe7-ac93-44f6-ba6e-37cb99f3569c,54f3fbe7-ac93-44f6-ba6e-37cb99f3569c,1,0,20feb794-eb05-46a6-90e7-ca4e2376d7b2,20feb794-eb05-46a6-90e7-ca4e2376d7b2,1,0,8deb4f57-18fc-4db0-ad0f-82d60af3d80b,8deb4f57-18fc-4db0-ad0f-82d60af3d80b,1,0,2f484aa4-452a-46af-a707-a5a6917bc0db,2f484aa4-452a-46af-a707-a5a6917bc0db,1,0,fd6ff934-6f11-4182-b0cb-6926902d33c0,fd6ff934-6f11-4182-b0cb-6926902d33c0,1,0,315af891-2075-4833-a404-6c0f2004ee53,315af891-2075-4833-a404-6c0f2004ee53,1,0,5725db77-bfbf-4d85-9565-163b309a53ee,5725db77-bfbf-4d85-9565-163b309a53ee,1,0,99a7142c-b3c7-4221-abf8-6831a3cbc16e,99a7142c-b3c7-4221-abf8-6831a3cbc16e,1,0,d367a1a1-5a54-4bf9-96c7-d55667e2fb16,d367a1a1-5a54-4bf9-96c7-d55667e2fb16,1,0,2e09abe1-0934-42ae-970f-5e001c35c31a,2e09abe1-0934-42ae-970f-5e001c35c31a,1,0,587d48a3-5627-4481-b13e-c22740b57d8a,587d48a3-5627-4481-b13e-c22740b57d8a,1,0,1f3e3089-1e04-4147-8ece-aa96a76467dd,1f3e3089-1e04-4147-8ece-aa96a76467dd,1,0,22a213b5-ed72-4181-8ff8-89f860c87aa1,22a213b5-ed72-4181-8ff8-89f860c87aa1,1,0,4c56cbff-653e-4f16-b702-c77190d7eb7f,4c56cbff-653e-4f16-b702-c77190d7eb7f,1,0,172ff335-c7ae-4905-b705-2a1475b95713,172ff335-c7ae-4905-b705-2a1475b95713,1,0,db4c311d-ee62-4d47-ac31-5a20cadb7ed1,db4c311d-ee62-4d47-ac31-5a20cadb7ed1,1,0,1d852dc0-90c9-4568-84f9-b1d822573b6b,1d852dc0-90c9-4568-84f9-b1d822573b6b,1,0,24f85dbd-59be-4b8d-bea8-7ff8ddb7486a,24f85dbd-59be-4b8d-bea8-7ff8ddb7486a,1,0,c997f56c-ef9c-434e-bc4e-7fc5f885aaba,c997f56c-ef9c-434e-bc4e-7fc5f885aaba,1,0,37c8f5e1-3513-47f8-896d-a54d11b83dcd,37c8f5e1-3513-47f8-896d-a54d11b83dcd,1,0,9e07733c-39f0-491b-91e1-bf2782d957dd,9e07733c-39f0-491b-91e1-bf2782d957dd,1,0,cc584a1d-dc91-4693-a5c9-6e8c6607e9d8,cc584a1d-dc91-4693-a5c9-6e8c6607e9d8,1,0,5902d979-1235-4d5a-ace7-93261bdeb725,5902d979-1235-4d5a-ace7-93261bdeb725,1,0,5a090286-7969-44c9-815b-fc58aeb5d8d3,5a090286-7969-44c9-815b-fc58aeb5d8d3,1,0,8e87cf35-af54-4fa2-9428-460b765b282b,8e87cf35-af54-4fa2-9428-460b765b282b,1,0,73380bb1-bee3-4b73-a3df-1dbea99011d2,73380bb1-bee3-4b73-a3df-1dbea99011d2,1,0,8be29533-38de-413d-b420-7dac2e80af6c,8be29533-38de-413d-b420-7dac2e80af6c,1,0,82a77018-8e38-41dd-9d1f-3130bc29a707,82a77018-8e38-41dd-9d1f-3130bc29a707,1,0,4d75aaef-532e-4ed3-8153-083f04f05cc1,4d75aaef-532e-4ed3-8153-083f04f05cc1,1,0,3854a0ba-e156-4ba3-a301-b1a41ac386c4,3854a0ba-e156-4ba3-a301-b1a41ac386c4,1,0,f8136f59-ef0c-4c0f-8207-f7a4000e4f0c,f8136f59-ef0c-4c0f-8207-f7a4000e4f0c,1,0,c2321963-cd86-45ec-b323-3fdb5932da3a,c2321963-cd86-45ec-b323-3fdb5932da3a,1,0,d5af38bf-6261-4177-8f74-998a85f0ef39,d5af38bf-6261-4177-8f74-998a85f0ef39,1,0,42bbd9f7-ef72-440f-9eb1-fcb3bdc1d91e,42bbd9f7-ef72-440f-9eb1-fcb3bdc1d91e,1,0,c6a4d03d-f3b2-449c-8a2b-deb542dd2c99,c6a4d03d-f3b2-449c-8a2b-deb542dd2c99,1,0,4b714d9c-26f4-46e8-ac79-471522b3853b,4b714d9c-26f4-46e8-ac79-471522b3853b,1,0,411489de-f907-4d60-a776-64bb0aa12a0e,411489de-f907-4d60-a776-64bb0aa12a0e,1,0,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,1,0,9c47670e-9eb9-49ec-876c-cd545aaa093c,9c47670e-9eb9-49ec-876c-cd545aaa093c,1,0,f57e74e6-75e8-4136-911e-86793036a077,f57e74e6-75e8-4136-911e-86793036a077,1,0,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,1,0,3ba8c378-ef3d-4646-90b3-6d8078aa623e,3ba8c378-ef3d-4646-90b3-6d8078aa623e,1,0,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,1,0,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,1,0,d61ca454-505b-4fd6-be15-d7ed948a5ff6,d61ca454-505b-4fd6-be15-d7ed948a5ff6,1,0,2dd7eb87-8130-425a-be13-85235508cde6,2dd7eb87-8130-425a-be13-85235508cde6,1,0,8a62c997-4fda-4464-90bd-ab719161949f,8a62c997-4fda-4464-90bd-ab719161949f,1,0,28af52dd-3144-428b-956d-b6f27863ec4a,28af52dd-3144-428b-956d-b6f27863ec4a,1,0,8ac94328-2300-4681-9c35-fd7e2f830310,8ac94328-2300-4681-9c35-fd7e2f830310,1,0,da0ee165-1917-466b-ac5c-16c28e2318bb,da0ee165-1917-466b-ac5c-16c28e2318bb,1,0,4868cb2e-0892-42bc-9de1-73cb8a15a96f,4868cb2e-0892-42bc-9de1-73cb8a15a96f,1,0,e8b80879-33b3-4c45-ad68-1acabcf91faf,e8b80879-33b3-4c45-ad68-1acabcf91faf,1,0,4a87fafc-7ca7-478e-bb31-358c2b85fa92,4a87fafc-7ca7-478e-bb31-358c2b85fa92,1,0,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,1,0,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,1,0,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,1,0,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,1,0,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,1,0,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,1,0,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,1,0,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,1,0,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,1,0,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,1,0,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,1,0,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,1,0,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,1,0,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,1,0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,1,0,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,1,0,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,1,0,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,1,0,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,1,0,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,1,0,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,1,0,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,1,0,d5e1806b-9827-40ab-9cfa-23c22456d137,d5e1806b-9827-40ab-9cfa-23c22456d137,1,0,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,1,0,d24170d7-5477-4ec8-acd2-0de8bd2067d6,d24170d7-5477-4ec8-acd2-0de8bd2067d6,1,0,f047da82-7574-4da4-b54e-480195280a11,f047da82-7574-4da4-b54e-480195280a11,1,0,a469f018-da26-485f-87c3-f580321a34f0,a469f018-da26-485f-87c3-f580321a34f0,1,0,adcb0dca-d810-461e-8f45-1d3cd6ffad4d,adcb0dca-d810-461e-8f45-1d3cd6ffad4d,1,0,388f7571-8f1b-45c5-a8b8-45d648f2f5dd,388f7571-8f1b-45c5-a8b8-45d648f2f5dd,1,0,9e16edb6-d841-48fa-bfe1-f9aabdcf9e46,9e16edb6-d841-48fa-bfe1-f9aabdcf9e46,1,0,628de771-c19c-4474-989f-8fb6cd7756a2,628de771-c19c-4474-989f-8fb6cd7756a2,1,0,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,1,0,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,1,0,6789e57b-1293-442c-97d0-b8007367602e,6789e57b-1293-442c-97d0-b8007367602e,1,0,0f193c89-b664-448e-bed3-2147430367f7,0f193c89-b664-448e-bed3-2147430367f7,1,0,4c9b2506-75a8-47d3-a5d5-d946088ba14a,4c9b2506-75a8-47d3-a5d5-d946088ba14a,1,0,36eacaa1-2efd-49c0-82de-2f8972535bf2,36eacaa1-2efd-49c0-82de-2f8972535bf2,1,0,c35a643d-fe3a-4293-93c0-074fa68a31e3,c35a643d-fe3a-4293-93c0-074fa68a31e3,1,0,9f7b9fd8-4bdd-4492-abf7-09b3f7f23e16,9f7b9fd8-4bdd-4492-abf7-09b3f7f23e16,1,0,72ee9a03-a320-4e60-be04-0ee813ea567f,72ee9a03-a320-4e60-be04-0ee813ea567f,1,0,f6f52cc8-23a3-4402-b1eb-0e41584c802a,f6f52cc8-23a3-4402-b1eb-0e41584c802a,1,0,8398e065-8b4b-4901-b057-2a048776bafe,8398e065-8b4b-4901-b057-2a048776bafe,1,0,073c56ca-bf45-422d-957a-f9c57aeee4d0,073c56ca-bf45-422d-957a-f9c57aeee4d0,1,0,d73e084f-9201-40c8-8ad4-f61b6cbb47c9,d73e084f-9201-40c8-8ad4-f61b6cbb47c9,1,0,52f065fe-556a-47cd-82b1-c56d7894df30,52f065fe-556a-47cd-82b1-c56d7894df30,1,0,186efec4-1343-4234-a9b6-c8d8096faf76,186efec4-1343-4234-a9b6-c8d8096faf76,1,0,68598d98-0c59-4cda-b0b2-6901d3aff88b,68598d98-0c59-4cda-b0b2-6901d3aff88b,1,0,219c1375-f26e-4698-aa82-4b9d735df783,219c1375-f26e-4698-aa82-4b9d735df783,1,0,ff5121c1-7f11-48cd-a9df-3588cf9f6d21,ff5121c1-7f11-48cd-a9df-3588cf9f6d21,1,0,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,1,0,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,1,0,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1,0,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,1,0,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,1,0,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,1,0,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,1,0,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,1,0,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,1,0,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,1,0,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,1,0,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,1,0,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,1,0,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,1,0,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,1,0,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,1,0,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,1,0,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,1,0,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,1,0,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,1,0,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,1,0,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,1,0,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,1,0,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,1,0,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,1,0,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,1,0,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1,0,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,1,0,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,1,0,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,1,0,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,1,0,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,1,0,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,1,0,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,1,0,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,1,0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,1,0,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,1,0,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,1,0,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,1,0,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,1,0,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,1,0,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,1,0,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,1,0,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,1,0,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1,0,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,1,0,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,1,0,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,1,0,04b5ae71-7fa4-4a64-b406-59dc603b80c5,04b5ae71-7fa4-4a64-b406-59dc603b80c5,1,0,f23a2023-f776-40db-8689-1fc3f7ebc482,f23a2023-f776-40db-8689-1fc3f7ebc482,1,0,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1,0,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,1,0,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,1,0,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,1,0,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,1,0,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,1,0,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,1,0,14e20d48-635e-4c52-9099-e743323fc190,14e20d48-635e-4c52-9099-e743323fc190,1,0,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,1,0,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,1,0,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,1,0,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,1,0,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,1,0,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,1,0,64484611-b32c-4155-a063-7df5a3f924dd,64484611-b32c-4155-a063-7df5a3f924dd,1,0,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,1,0,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,1,0,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,1,0,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,1,0,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,1,0,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,1,0,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,1,0,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,1,0,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,1,0,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,1,0,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,1,0,e4ea640f-e3a4-44ad-b17d-51f32136372e,e4ea640f-e3a4-44ad-b17d-51f32136372e,1,0,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,1,0,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,1,0,e62845df-704f-4ad5-b227-e0128877a814,e62845df-704f-4ad5-b227-e0128877a814,1,0,4f1393e4-9db5-43d6-b47e-caa1aad9b35c,4f1393e4-9db5-43d6-b47e-caa1aad9b35c,1,0,e62e60ea-9f0c-4a7e-869f-4639f31f826c,e62e60ea-9f0c-4a7e-869f-4639f31f826c,1,0,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,1,0,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,1,0,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,1,0,9b9e81f9-e23f-4c77-bf6f-edbce8ebabfa,9b9e81f9-e23f-4c77-bf6f-edbce8ebabfa,1,0,fb5e93bb-e1ff-47a6-a362-ea94e6cbac65,fb5e93bb-e1ff-47a6-a362-ea94e6cbac65,1,0,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,1,0,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,1,0,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,1,0,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,1,0,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,1,0,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,1,0,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,1,0,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,1,0,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,1,0,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,1,0,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,1,0,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,1,0,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,1,0,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,1,0,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,1,0,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,1,0,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,1,0,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,1,0,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,1,0,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,1,0,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,1,0,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,1,0,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,1,0,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,1,0,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,1,0,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,1,0,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,1,0,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,1,0,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,1,0,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,1,0,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,1,0,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,1,0,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,1,0,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,1,0,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,1,0,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,1,0,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,1,0,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,1,0,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,1,0,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,1,0,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,1,0,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,1,0,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,1,0,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,1,0,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,1,0,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,1,0,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,1,0,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,1,0,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,1,0,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,1,0,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,1,0,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,1,0,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,1,0,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,1,0,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,1,0,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,1,0,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,1,0,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,1,0,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,1,0,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,1,0,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,1,0,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,1,0,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,1,0,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,1,0,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,1,0,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,1,0,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,1,0,905b787b-c638-4703-af70-416a2ce43b50,905b787b-c638-4703-af70-416a2ce43b50,1,0,d7ea882a-6ef9-407f-b0e9-7bb42cf5ef17,d7ea882a-6ef9-407f-b0e9-7bb42cf5ef17,1,0,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,1,0,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,1,0,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,1,0,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,1,0,f692ab21-a8de-4feb-914f-4beef350543a,f692ab21-a8de-4feb-914f-4beef350543a,1,0,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,1,0,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,1,0,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,1,0,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,1,0,4f06c867-6fec-4a4d-a360-6d8e98e4e7a4,4f06c867-6fec-4a4d-a360-6d8e98e4e7a4,1,0,34ee9617-9935-425f-9637-bdffd5a64042,34ee9617-9935-425f-9637-bdffd5a64042,1,0,3e6160f4-eed6-4dd6-a8fb-96c1a90d39be,3e6160f4-eed6-4dd6-a8fb-96c1a90d39be,1,0,778cd9f9-7afd-4eb7-bd4e-90ff7d9cf4f0,778cd9f9-7afd-4eb7-bd4e-90ff7d9cf4f0,1,0,fb8f3edd-bf12-4312-8ffe-7bbd627fa52b,fb8f3edd-bf12-4312-8ffe-7bbd627fa52b,1,0,6ddad5e2-b2c3-47bc-b339-54ccd7391e33,6ddad5e2-b2c3-47bc-b339-54ccd7391e33,1,0,761ca1c1-c843-47a1-bacc-2f9d1d68634d,761ca1c1-c843-47a1-bacc-2f9d1d68634d,1,0,af4a815b-d9d4-4fe6-9b2b-3932381e7346,af4a815b-d9d4-4fe6-9b2b-3932381e7346,1,0,9dbca72a-fb38-4d86-a3ff-83f7edc0fdb4,9dbca72a-fb38-4d86-a3ff-83f7edc0fdb4,1,0,fab77796-a103-40a6-95bd-238979fc345d,fab77796-a103-40a6-95bd-238979fc345d,1,0,6fad175b-eaf0-4e45-aaa1-c1ebc98e0ed0,6fad175b-eaf0-4e45-aaa1-c1ebc98e0ed0,1,0,0ef5e38c-6f7c-46e7-9c14-4fde6814f93f,0ef5e38c-6f7c-46e7-9c14-4fde6814f93f,1,0,f306dafa-350e-4ff9-bfe2-211be647afe8,f306dafa-350e-4ff9-bfe2-211be647afe8,1,0,6d447b01-21ae-4cc1-9262-4ec4ed5e04f5,6d447b01-21ae-4cc1-9262-4ec4ed5e04f5,1,0,dcd64d40-e57f-4cb5-9ccd-67b27ac546d4,dcd64d40-e57f-4cb5-9ccd-67b27ac546d4,1,0,8d0ad48c-6e27-44c2-87f6-62eef78b6427,8d0ad48c-6e27-44c2-87f6-62eef78b6427,1,0,e4fb3b42-60f6-4413-bba8-6e507b13d5d3,e4fb3b42-60f6-4413-bba8-6e507b13d5d3,1,0,a5e3b305-392c-40a2-9b66-7fdc72c041a3,a5e3b305-392c-40a2-9b66-7fdc72c041a3,1,0,266d41c0-92a1-4d42-bf5b-60a1bddb8912,266d41c0-92a1-4d42-bf5b-60a1bddb8912,1,0,1aad9f99-422a-40e8-83da-6e29b8a4e85a,1aad9f99-422a-40e8-83da-6e29b8a4e85a,1,0,d9010dc7-b0de-4079-944d-fbec7ba5997f,d9010dc7-b0de-4079-944d-fbec7ba5997f,1,0,5defd7f7-cc7d-4e7b-83e3-755f8a2514ea,5defd7f7-cc7d-4e7b-83e3-755f8a2514ea,1,0,744ca01b-41b6-4c30-a280-85e44ad456ba,744ca01b-41b6-4c30-a280-85e44ad456ba,1,0,779856af-2c4a-4643-9bea-a04aa24ee488,779856af-2c4a-4643-9bea-a04aa24ee488,1,0,5c6f12f3-7cb6-4b10-9859-7b72bae3fc76,5c6f12f3-7cb6-4b10-9859-7b72bae3fc76,1,0,d00313c8-ee4a-4463-8d5b-7e87e4e14986,d00313c8-ee4a-4463-8d5b-7e87e4e14986,1,0,6db400f2-873a-44a2-9274-2cd7883bfd87,6db400f2-873a-44a2-9274-2cd7883bfd87,1,0,3b925fd2-adb8-451a-8675-7b081fc7c570,3b925fd2-adb8-451a-8675-7b081fc7c570,1,0,70e9e13d-8f87-4a5b-9c80-49d2cff1a290,70e9e13d-8f87-4a5b-9c80-49d2cff1a290,1,0,04b7e8b2-6bc1-49dc-9476-7eadf94b9188,04b7e8b2-6bc1-49dc-9476-7eadf94b9188,1,0,135c86fc-2979-4833-9107-38d749a9f82f,135c86fc-2979-4833-9107-38d749a9f82f,1,0,78288ff9-d838-4970-84bd-9a6b229e6ef0,78288ff9-d838-4970-84bd-9a6b229e6ef0,1,0,8310f927-1123-4b4b-a65e-0ff29be73329,8310f927-1123-4b4b-a65e-0ff29be73329,1,0,80a9df2d-593d-483d-8d69-28b1c08ec648,80a9df2d-593d-483d-8d69-28b1c08ec648,1,0,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,1,0,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,1,0,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,1,0,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,1,0,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,1,0,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,1,0,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,1,0,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,1,0,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,1,0,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,1,0,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,1,0,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,1,0,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,1,0,f9c0862c-34a2-41a3-ae46-b6a8e1ad1b08,f9c0862c-34a2-41a3-ae46-b6a8e1ad1b08,1,0,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,1,0,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,1,0,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,1,0,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,1,0,bd0f9ec3-156a-4a6f-a52b-1213ec825bc0,bd0f9ec3-156a-4a6f-a52b-1213ec825bc0,1,0,71e52f63-04db-4336-ace6-b143d0a7d250,71e52f63-04db-4336-ace6-b143d0a7d250,1,0,afe79ef0-7830-43ce-85f3-c4c97831aa67,afe79ef0-7830-43ce-85f3-c4c97831aa67,1,0,0d7c3192-b15b-4d40-83f9-b76c6f8e654f,0d7c3192-b15b-4d40-83f9-b76c6f8e654f,1,0,fe07f268-bcfd-40c6-adf3-79df859ff731,fe07f268-bcfd-40c6-adf3-79df859ff731,1,0,1a1c88ff-b0c4-42c3-bf10-ebdf4de935b7,1a1c88ff-b0c4-42c3-bf10-ebdf4de935b7,1,0,15e90374-99d9-48f7-b7d6-ec160cdb378f,15e90374-99d9-48f7-b7d6-ec160cdb378f,1,0,ad5b6b8e-c2b5-45aa-8e07-50ae8877ac8f,ad5b6b8e-c2b5-45aa-8e07-50ae8877ac8f,1,0,6c470f57-c920-435a-a013-ff83a737cf3a,6c470f57-c920-435a-a013-ff83a737cf3a,1,0,a5e13e12-72b7-477d-8d80-06015fa5dece,a5e13e12-72b7-477d-8d80-06015fa5dece,1,0,d9c47acd-b5ee-4ea1-b247-7cc09a13eb82,d9c47acd-b5ee-4ea1-b247-7cc09a13eb82,1,0,4a81906a-7db7-4e7d-a95e-79b07a43e573,4a81906a-7db7-4e7d-a95e-79b07a43e573,1,0,0bcabdf4-3348-405d-ba75-7bcc106f9e7f,0bcabdf4-3348-405d-ba75-7bcc106f9e7f,1,0,5f2980ca-3f1c-4680-a6e9-477825442782,5f2980ca-3f1c-4680-a6e9-477825442782,1,0,40fd6b4a-2180-4403-b7e6-48b42d8285b7,40fd6b4a-2180-4403-b7e6-48b42d8285b7,1,0,ef098c52-fcfa-4f0f-85b0-aba0d5aa46b2,ef098c52-fcfa-4f0f-85b0-aba0d5aa46b2,1,0,a671cb1e-b27a-44bb-a8ca-1388f099de2e,a671cb1e-b27a-44bb-a8ca-1388f099de2e,1,0,6cff6b09-91b5-4f2b-89aa-23d2f83f9d89,6cff6b09-91b5-4f2b-89aa-23d2f83f9d89,1,0,a4b6920e-3e25-4798-809a-27d7bfae4ee7,a4b6920e-3e25-4798-809a-27d7bfae4ee7,1,0,981f6e35-64b8-4d63-b383-32ea71fcd025,981f6e35-64b8-4d63-b383-32ea71fcd025,1,0,9a7b964d-1c06-44af-8d25-f84493c70a42,9a7b964d-1c06-44af-8d25-f84493c70a42,1,0,f9f021ca-8b3e-4d10-9538-1bce7e851fdd,f9f021ca-8b3e-4d10-9538-1bce7e851fdd,1,0,bb7cf0f8-56b0-4c0d-b206-79051ba83f6d,bb7cf0f8-56b0-4c0d-b206-79051ba83f6d,1,0,ab057ce4-ac51-4465-8aad-eadc9088c62d,ab057ce4-ac51-4465-8aad-eadc9088c62d,1,0,8842c0e3-2e20-4f37-ae7c-f5449004994b,8842c0e3-2e20-4f37-ae7c-f5449004994b,1,0,5b2cc44b-69cb-495c-a26b-003a495df40b,5b2cc44b-69cb-495c-a26b-003a495df40b,1,0,30250d93-10ff-45c9-920b-5fed3f9d8093,30250d93-10ff-45c9-920b-5fed3f9d8093,1,0,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,1,0,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,1,0,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,1,0,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,1,0,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,1,0,c869c1b7-3c04-4e5e-a033-d3f2fb0af03c,c869c1b7-3c04-4e5e-a033-d3f2fb0af03c,1,0,23f93492-59f5-491b-8708-45096934c7e6,23f93492-59f5-491b-8708-45096934c7e6,1,0,30f5471a-17fb-4184-9798-4f8e3ef0cccb,30f5471a-17fb-4184-9798-4f8e3ef0cccb,1,0,27abda4c-a43c-49b4-90cd-db780afe0c45,27abda4c-a43c-49b4-90cd-db780afe0c45,1,0,450a36cb-9bc1-4c5b-ae21-0e023f3eb951,450a36cb-9bc1-4c5b-ae21-0e023f3eb951,1,0,1a28db16-d410-4101-bf31-21cefa880dae,1a28db16-d410-4101-bf31-21cefa880dae,1,0,2b85bcf6-85b0-4efb-bada-b65414a8d264,2b85bcf6-85b0-4efb-bada-b65414a8d264,1,0,cf027de4-59c9-4b8f-9695-b1d4d16548fe,cf027de4-59c9-4b8f-9695-b1d4d16548fe,1,0,d33ceaee-a374-40a3-9406-cbcbf82fd8ae,d33ceaee-a374-40a3-9406-cbcbf82fd8ae,1,0,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,1,0,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,1,0,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,1,0,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,1,0,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,1,0,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,1,0,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,1,0,88cefe4a-a6c5-4753-935e-f956d9de9f77,88cefe4a-a6c5-4753-935e-f956d9de9f77,1,0,882e78b7-90bd-4b95-8852-146bdb51ec15,882e78b7-90bd-4b95-8852-146bdb51ec15,1,0,ae4435c3-62c0-4f08-b526-7f9571eed8ae,ae4435c3-62c0-4f08-b526-7f9571eed8ae,1,0,91a1bd81-e6fa-476c-85e6-317a91f6c8bc,91a1bd81-e6fa-476c-85e6-317a91f6c8bc,1,0,f799e1d1-bb78-4a7a-bb1a-d79ba29acd0c,f799e1d1-bb78-4a7a-bb1a-d79ba29acd0c,1,0,c7b46558-d688-4c42-ae52-f98de7923176,c7b46558-d688-4c42-ae52-f98de7923176,1,0,31fdbb46-1df1-4b74-a54e-b922260dcca6,31fdbb46-1df1-4b74-a54e-b922260dcca6,1,0,ee494dc9-549b-4595-97d1-ca73bacff954,ee494dc9-549b-4595-97d1-ca73bacff954,1,0,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,1,0,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,1,0,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,1,0,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,1,0,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,1,0,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,1,0,8317ac49-890d-4921-8c0d-1bfc676f0b40,8317ac49-890d-4921-8c0d-1bfc676f0b40,1,0,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,1,0,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,1,0,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,1,0,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,1,0,0c732569-a50f-4be3-a214-0843c6a3da47,0c732569-a50f-4be3-a214-0843c6a3da47,1,0,f55d74bf-5824-4228-9683-31f7c7fdf74d,f55d74bf-5824-4228-9683-31f7c7fdf74d,1,0,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,1,0,0d142fcd-a596-4cdf-a3f6-c31becdb7b59,0d142fcd-a596-4cdf-a3f6-c31becdb7b59,1,0,c30c6860-befb-497e-b432-3dba0f86c540,c30c6860-befb-497e-b432-3dba0f86c540,1,0,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,1,0,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,1,0,cb3bb725-ed7a-4cde-a0ac-26a0b168c0ea,cb3bb725-ed7a-4cde-a0ac-26a0b168c0ea,1,0,977748b7-13d3-41ef-8206-82595ed8fc0c,977748b7-13d3-41ef-8206-82595ed8fc0c,1,0,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,1,0,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,1,0,b53c545c-3b1c-4315-a213-4f2b2c7128aa,b53c545c-3b1c-4315-a213-4f2b2c7128aa,1,0,02a84df9-2171-43e6-8135-a74edd384826,02a84df9-2171-43e6-8135-a74edd384826,1,0,ff36356d-cb1d-4316-896a-c6ae83b92437,ff36356d-cb1d-4316-896a-c6ae83b92437,1,0,465cce6a-7064-4b0a-932c-40f842042f33,465cce6a-7064-4b0a-932c-40f842042f33,1,0,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,1,0,e67dff00-92e2-4f58-a950-d5bbca9291c5,e67dff00-92e2-4f58-a950-d5bbca9291c5,1,0,e1964724-804a-4ecc-be9e-5b84e58f2b84,e1964724-804a-4ecc-be9e-5b84e58f2b84,1,0,46e961c2-cd45-4d76-a6ad-c1d5c8dc95cc,46e961c2-cd45-4d76-a6ad-c1d5c8dc95cc,1,0,bf3cb513-2856-472b-8713-7bf8ba70cdce,bf3cb513-2856-472b-8713-7bf8ba70cdce,1,0,de4815c8-0853-47e0-862b-b60119c674f6,de4815c8-0853-47e0-862b-b60119c674f6,1,0,dbe02a79-3179-42bb-a8e8-dd9bf3ff705c,dbe02a79-3179-42bb-a8e8-dd9bf3ff705c,1,0,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,1,0,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,1,0,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,1,0,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,1,0,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,1,0,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,1,0,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,1,0,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,1,0,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,1,0,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,1,0,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,1,0,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,1,0,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,1,0,436b558e-6547-4ba6-8cee-954fe36743ea,436b558e-6547-4ba6-8cee-954fe36743ea,1,0,6120bb6e-b177-48bf-b467-02bab0d4cc0d,6120bb6e-b177-48bf-b467-02bab0d4cc0d,1,0,a5af4715-6c4f-484b-9599-5b1b9147713f,a5af4715-6c4f-484b-9599-5b1b9147713f,1,0,307b6e66-6fef-4777-b20a-37898928932f,307b6e66-6fef-4777-b20a-37898928932f,1,0,a69494c0-dcce-4359-aa82-c1cfae8a43eb,a69494c0-dcce-4359-aa82-c1cfae8a43eb,1,0,2b243d49-5500-403a-b177-ac1c70bb889d,2b243d49-5500-403a-b177-ac1c70bb889d,1,0,51c040c6-e7a4-4e0e-b479-039636fdb6ec,51c040c6-e7a4-4e0e-b479-039636fdb6ec,1,0,8ede4c18-ebf0-4c39-9e82-c59df8d62ca7,8ede4c18-ebf0-4c39-9e82-c59df8d62ca7,1,0,b2c200a7-b9cc-4d84-b839-e69f2a14a8f5,b2c200a7-b9cc-4d84-b839-e69f2a14a8f5,1,0,8a50e7f2-97a9-4ed8-a46f-6413f7fcf8cd,8a50e7f2-97a9-4ed8-a46f-6413f7fcf8cd,1,0,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,1,0,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,1,0,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,1,0,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,1,0,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,1,0,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,1,0,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,1,0,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,1,0,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,1,0,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,1,0,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,1,0,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,1,0,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,1,0,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,1,0,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,1,0,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,1,0,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,1,0,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,1,0,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,1,0,b4dde44e-57d5-4c3a-bb9b-643787ce07b0,b4dde44e-57d5-4c3a-bb9b-643787ce07b0,1,0,d2160866-78ca-424a-92b9-d389fb341ee0,d2160866-78ca-424a-92b9-d389fb341ee0,1,0,73b36823-72a4-4286-8ee2-02b2f086d5ea,73b36823-72a4-4286-8ee2-02b2f086d5ea,1,0,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,1,0,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,1,0,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,1,0,c013a650-bd4b-4e14-97cc-05df17dbb0d5,c013a650-bd4b-4e14-97cc-05df17dbb0d5,1,0,00bc2e99-c7c9-4a4b-b0bc-c9babe17deda,00bc2e99-c7c9-4a4b-b0bc-c9babe17deda,1,0,18ba2c0c-d606-47ee-9409-66acb24bd794,18ba2c0c-d606-47ee-9409-66acb24bd794,1,0,9f24891c-3846-455a-bf95-be3b186f4342,9f24891c-3846-455a-bf95-be3b186f4342,1,0,ddc332d9-1d60-40fe-87fd-7f2164db1edf,ddc332d9-1d60-40fe-87fd-7f2164db1edf,1,0,d0e3c3a5-e74c-4c0a-8679-77e6a097eb36,d0e3c3a5-e74c-4c0a-8679-77e6a097eb36,1,0,20c43755-49cc-4f11-bd2f-52a9e53547ef,20c43755-49cc-4f11-bd2f-52a9e53547ef,1,0,7dbed991-4883-444c-8ce2-96c203a905f2,7dbed991-4883-444c-8ce2-96c203a905f2,1,0,bbadd00d-6410-41ec-a7d8-4dbd52986cc2,bbadd00d-6410-41ec-a7d8-4dbd52986cc2,1,0,d5f66278-4ab2-407a-abef-eb7636e9ba95,d5f66278-4ab2-407a-abef-eb7636e9ba95,1,0,61e51391-c412-46a5-8290-d5183ad0db83,61e51391-c412-46a5-8290-d5183ad0db83,1,0,e9dfdaa2-4094-4501-a38a-3811e7e4c708,e9dfdaa2-4094-4501-a38a-3811e7e4c708,1,0,0a62947e-848a-47fa-a239-95aee6b955d4,0a62947e-848a-47fa-a239-95aee6b955d4,1,0,beaef14b-175f-4ebe-b387-9c922a42c99e,beaef14b-175f-4ebe-b387-9c922a42c99e,1,0,13daaad0-2726-4065-8158-47059865452a,13daaad0-2726-4065-8158-47059865452a,1,0,a7829dfb-adb9-4401-a609-ca9a0f2376b3,a7829dfb-adb9-4401-a609-ca9a0f2376b3,1,0,26f1076a-8100-4cf4-9539-29637a5e9137,26f1076a-8100-4cf4-9539-29637a5e9137,1,0,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,1,0,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,1,0,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,1,0,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,1,0,bed8af4e-fa3a-4b25-ba6e-5b7b4a6cd363,bed8af4e-fa3a-4b25-ba6e-5b7b4a6cd363,1,0,951927d4-7bfc-4edb-b97f-dcc29a937400,951927d4-7bfc-4edb-b97f-dcc29a937400,1,0,71309e88-d514-40f3-a329-b2a420e75504,71309e88-d514-40f3-a329-b2a420e75504,1,0,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,1,0,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,1,0,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,1,0,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,1,0,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,1,0,5225b4da-431e-469d-a30c-31fa434b7e86,5225b4da-431e-469d-a30c-31fa434b7e86,1,0,68dcbdd5-c1fd-472f-873c-359d3a237b8c,68dcbdd5-c1fd-472f-873c-359d3a237b8c,1,0,3c6e831c-c934-46bb-8040-edd6de81ba1b,3c6e831c-c934-46bb-8040-edd6de81ba1b,1,0,3c737aff-9581-409a-9a6e-d5e3c133d8df,3c737aff-9581-409a-9a6e-d5e3c133d8df,1,0,916a9ea9-309d-4a7a-9ded-63bda01a39d4,916a9ea9-309d-4a7a-9ded-63bda01a39d4,1,0,0fdbd1ab-716d-46b5-aa75-fb09812ced5b,0fdbd1ab-716d-46b5-aa75-fb09812ced5b,1,0,b26ab92b-9739-4eb4-b855-be6850274432,b26ab92b-9739-4eb4-b855-be6850274432,1,0,17944416-85a5-49e4-9fa8-652c671c3df0,17944416-85a5-49e4-9fa8-652c671c3df0,1,0,b7936cda-654e-4707-af76-385a63243cdf,b7936cda-654e-4707-af76-385a63243cdf,1,0,192844c3-7cb9-4477-a4af-0edb8ce5129d,192844c3-7cb9-4477-a4af-0edb8ce5129d,1,0,33324481-55d1-475f-9f12-7542a05429a2,33324481-55d1-475f-9f12-7542a05429a2,1,0,07b7591f-dcfc-483f-85f6-b5a08d952fe2,07b7591f-dcfc-483f-85f6-b5a08d952fe2,1,0,866c418f-332e-415a-bb8e-794d38f15080,866c418f-332e-415a-bb8e-794d38f15080,1,0,a34b8fdc-e756-4065-b68a-12a07fa7c40e,a34b8fdc-e756-4065-b68a-12a07fa7c40e,1,0,b853debb-d715-4296-9070-45cc5dae571d,b853debb-d715-4296-9070-45cc5dae571d,1,0,fc406b50-f267-44b8-a833-ba7e8880903e,fc406b50-f267-44b8-a833-ba7e8880903e,1,0,6517bf8b-d2fd-4b6b-a4a5-b3086ebad8de,6517bf8b-d2fd-4b6b-a4a5-b3086ebad8de,1,0,391a1891-85a2-45b8-a747-3ecd705fc75b,391a1891-85a2-45b8-a747-3ecd705fc75b,1,0,05681509-254d-4232-af69-62a63ed05716,05681509-254d-4232-af69-62a63ed05716,1,0,cc815221-3d2a-4ea3-b1e6-6cb9fb410bd9,cc815221-3d2a-4ea3-b1e6-6cb9fb410bd9,1,0,b9ef62f6-9b1d-4d13-8016-73ed531d195a,b9ef62f6-9b1d-4d13-8016-73ed531d195a,1,0,742ed6d8-0f8d-4569-b30f-9ff3804cc3b7,742ed6d8-0f8d-4569-b30f-9ff3804cc3b7,1,0,229fe764-87f5-4d19-b042-c31fef5cddd6,229fe764-87f5-4d19-b042-c31fef5cddd6,1,0,74cd7504-d34f-42ff-90ff-7abcd54e8b6c,74cd7504-d34f-42ff-90ff-7abcd54e8b6c,1,0,e932800c-fd81-417d-a601-c774b888d66a,e932800c-fd81-417d-a601-c774b888d66a,1,0,a2335b6f-1dbb-4722-979b-8bed83aa8c94,a2335b6f-1dbb-4722-979b-8bed83aa8c94,1,0,211cf921-d880-4f74-b8ee-5312dea28613,211cf921-d880-4f74-b8ee-5312dea28613,1,0,2fd3a396-b8ae-409e-9373-02a039393a80,2fd3a396-b8ae-409e-9373-02a039393a80,1,0,61ae74be-64b2-4bf2-aa63-8fe3dc7ed47d,61ae74be-64b2-4bf2-aa63-8fe3dc7ed47d,1,0,346ef414-b20b-4095-86fe-18ca21c9887f,346ef414-b20b-4095-86fe-18ca21c9887f,1,0,c01ab97b-4964-4f7d-b749-56c0b94feb93,c01ab97b-4964-4f7d-b749-56c0b94feb93,1,0,0cc63813-cf16-4a99-b3bd-18a773091230,0cc63813-cf16-4a99-b3bd-18a773091230,1,0,4fc00971-c980-468a-9690-5cd520d12eb0,4fc00971-c980-468a-9690-5cd520d12eb0,1,0,85972c27-4f39-4982-9307-7877e87ef87b,85972c27-4f39-4982-9307-7877e87ef87b,1,0,96afdffb-7595-4c49-9e86-8296f50bd2f5,96afdffb-7595-4c49-9e86-8296f50bd2f5,1,0,823d5b5e-e9bf-40f0-9dcd-579bb53847bb,823d5b5e-e9bf-40f0-9dcd-579bb53847bb,1,0,e125d3e0-950f-42ee-8904-bd26091afa55,e125d3e0-950f-42ee-8904-bd26091afa55,1,0,2b4797a5-074a-4a01-b99f-1c5590cfde40,2b4797a5-074a-4a01-b99f-1c5590cfde40,1,0,718e53d2-24ec-40fb-9def-825441ada46c,718e53d2-24ec-40fb-9def-825441ada46c,1,0,4c0a7fd6-8f09-41d6-949f-65ce708c1256,4c0a7fd6-8f09-41d6-949f-65ce708c1256,1,0,792abc06-b52a-4691-ba92-96ed73ca702a,792abc06-b52a-4691-ba92-96ed73ca702a,1,0,148dbe44-86d1-4362-b9db-8ff68cd2b34d,148dbe44-86d1-4362-b9db-8ff68cd2b34d,1,0,1fbc893e-3000-4fac-88f5-c82251835d65,1fbc893e-3000-4fac-88f5-c82251835d65,1,0,05852816-63ec-4179-abca-66372bbfb04c,05852816-63ec-4179-abca-66372bbfb04c,1,0,0165f721-b011-4524-bfd5-81e35092f2be,0165f721-b011-4524-bfd5-81e35092f2be,1,0,e74925d4-1979-4600-8560-0932d26450ad,e74925d4-1979-4600-8560-0932d26450ad,1,0,aa108131-151d-4356-8a24-345e4ec74281,aa108131-151d-4356-8a24-345e4ec74281,1,0,284b77a8-d9f4-44c4-a2dc-91c1f8bd5808,284b77a8-d9f4-44c4-a2dc-91c1f8bd5808,1,0,e3251f1a-3c80-4c86-9960-270920bd512f,e3251f1a-3c80-4c86-9960-270920bd512f,1,0,3c3d5474-977b-4df9-88de-042e997bd10d,3c3d5474-977b-4df9-88de-042e997bd10d,1,0,4b88d172-5a44-4011-bb38-e94bf7a9c879,4b88d172-5a44-4011-bb38-e94bf7a9c879,1,0,3bced2d4-e3d7-4489-a26d-f84620b096f4,3bced2d4-e3d7-4489-a26d-f84620b096f4,1,0,e8c048fc-0f39-4778-aaf3-d6bff5acb06a,e8c048fc-0f39-4778-aaf3-d6bff5acb06a,1,0,c7efb89b-f9e5-4b58-b7a0-502cea8cf1d4,c7efb89b-f9e5-4b58-b7a0-502cea8cf1d4,1,0,cd133f15-aa45-4ec9-93c2-2f0f66baf3f3,cd133f15-aa45-4ec9-93c2-2f0f66baf3f3,1,0,18436045-1008-4114-8032-274fea0f4627,18436045-1008-4114-8032-274fea0f4627,1,0,cad93727-cffb-44a6-aaee-be73a078e802,cad93727-cffb-44a6-aaee-be73a078e802,1,0,c034f410-ff8e-45d7-925f-94448f88a7af,c034f410-ff8e-45d7-925f-94448f88a7af,1,0,0027727b-3917-4010-9953-1649266e8ed7,0027727b-3917-4010-9953-1649266e8ed7,1,0,b088786a-046f-458c-8e7a-5bebf8df8b34,b088786a-046f-458c-8e7a-5bebf8df8b34,1,0,6d015113-1e32-4f5e-aacd-8134d7307125,6d015113-1e32-4f5e-aacd-8134d7307125,1,0,58230238-d2f2-422e-90cb-de355996eb19,58230238-d2f2-422e-90cb-de355996eb19,1,0,3d907678-628d-4fb2-85c2-149839024c08,3d907678-628d-4fb2-85c2-149839024c08,1,0,71384d10-6acf-4139-b766-cb8b5796f1a7,71384d10-6acf-4139-b766-cb8b5796f1a7,1,0,a8f149d7-e9bc-4695-b4f4-88434e31aafb,a8f149d7-e9bc-4695-b4f4-88434e31aafb,1,0,10dcbcc6-7793-4da7-a9a5-e4f124209d3e,10dcbcc6-7793-4da7-a9a5-e4f124209d3e,1,0,11ba510f-cb57-43d0-9897-c49e10b67ccd,11ba510f-cb57-43d0-9897-c49e10b67ccd,1,0,9d92af67-c88d-4429-9e85-0b5bf04c4b79,9d92af67-c88d-4429-9e85-0b5bf04c4b79,1,0,b009bc99-ea12-46db-a7f8-cb3e285b20d0,b009bc99-ea12-46db-a7f8-cb3e285b20d0,1,0,43523bbb-c923-4a20-bcb5-50d30cc826ee,43523bbb-c923-4a20-bcb5-50d30cc826ee,1,0,c89d9aad-3364-45df-88b5-b23ae76edbba,c89d9aad-3364-45df-88b5-b23ae76edbba,1,0,9a2f2cd1-4c9f-460b-b3b7-64706a0164ab,9a2f2cd1-4c9f-460b-b3b7-64706a0164ab,1,0,7e4b9dce-e332-4d35-8b5f-d3f88918989d,7e4b9dce-e332-4d35-8b5f-d3f88918989d,1,0,15cd04c9-c12a-44ea-a397-d2adbac99c5b,15cd04c9-c12a-44ea-a397-d2adbac99c5b,1,0,182f92f5-0a8e-4f6a-9f9e-7878fafd0a2a,182f92f5-0a8e-4f6a-9f9e-7878fafd0a2a,1,0,45ca26ef-2a9f-4f24-a81b-2fe10c02ed9f,45ca26ef-2a9f-4f24-a81b-2fe10c02ed9f,1,0,56aa4b2f-5b7e-457d-a59d-837405f17fde,56aa4b2f-5b7e-457d-a59d-837405f17fde,1,0,819e2442-cb5a-4826-8a66-b34a3270e8e0,819e2442-cb5a-4826-8a66-b34a3270e8e0,1,0,49987536-3ab9-4a68-83a2-5dc3cd5d58fb,49987536-3ab9-4a68-83a2-5dc3cd5d58fb,1,0,8e4eec45-6ad3-4ac8-940a-b3130f504685,8e4eec45-6ad3-4ac8-940a-b3130f504685,1,0,ccdfef4b-a022-4bde-9c6c-84129b2bad65,ccdfef4b-a022-4bde-9c6c-84129b2bad65,1,0,95adcac2-bc88-46bc-aae5-d13cfb9a170c,95adcac2-bc88-46bc-aae5-d13cfb9a170c,1,0,d845ca4c-3af2-4322-8565-64f3aee61e3a,d845ca4c-3af2-4322-8565-64f3aee61e3a,1,0,430cf66c-5cfc-4fd4-bbf3-d9df6070e115,430cf66c-5cfc-4fd4-bbf3-d9df6070e115,1,0,6321fc1e-c1d7-4b49-b730-258857b2d936,6321fc1e-c1d7-4b49-b730-258857b2d936,1,0,f48abfe8-e400-4544-a80a-d1cb0b7d3ea8,f48abfe8-e400-4544-a80a-d1cb0b7d3ea8,1,0,ce40016b-7ca7-4803-81fa-5df0b92dbc54,ce40016b-7ca7-4803-81fa-5df0b92dbc54,1,0,d7a72321-5f1f-427e-a54d-f308dab1b9c4,d7a72321-5f1f-427e-a54d-f308dab1b9c4,1,0,b183eb38-a96e-4e12-9220-4b4027ae875c,b183eb38-a96e-4e12-9220-4b4027ae875c,1,0,07f7e1b5-07b0-4017-bb91-31759c4ffed1,07f7e1b5-07b0-4017-bb91-31759c4ffed1,1,0,6de76d43-40d5-494f-8d30-2ef80c79bc7e,6de76d43-40d5-494f-8d30-2ef80c79bc7e,1,0,60146806-ee46-44d5-8a7a-2ed48741e1c1,60146806-ee46-44d5-8a7a-2ed48741e1c1,1,0,96fe619a-b819-4f96-9788-e1f4ef57833a,96fe619a-b819-4f96-9788-e1f4ef57833a,1,0,94dff2da-f721-411a-9fc0-5d013b685dcc,94dff2da-f721-411a-9fc0-5d013b685dcc,1,0,9343fc5f-7b08-4be5-8cd5-dbed635b819d,9343fc5f-7b08-4be5-8cd5-dbed635b819d,1,0,99e87e66-1b07-451b-a476-f5213cbd7150,99e87e66-1b07-451b-a476-f5213cbd7150,1,0,c3317f75-f6ad-41f6-97f1-77074c3ff62a,c3317f75-f6ad-41f6-97f1-77074c3ff62a,1,0,8800dec9-84f8-4643-8742-1d76fe575f58,8800dec9-84f8-4643-8742-1d76fe575f58,1,0,62903794-3b41-4d21-b800-1c26dbeda3ce,62903794-3b41-4d21-b800-1c26dbeda3ce,1,0,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,1,0,4ba2e55e-29bc-4fbe-83e8-8bfa36abfdab,4ba2e55e-29bc-4fbe-83e8-8bfa36abfdab,1,0,93de88de-0069-4aa8-96b2-d5709e4def2f,93de88de-0069-4aa8-96b2-d5709e4def2f,1,0,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,1,0,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,1,0,3a8d9010-8785-4d8d-b908-b821d7d681c9,3a8d9010-8785-4d8d-b908-b821d7d681c9,1,0,2568a935-ea49-4b99-aa9c-de27de6a0e81,2568a935-ea49-4b99-aa9c-de27de6a0e81,1,0,de2bdd4f-93f2-4341-86d6-7082fc286a5c,de2bdd4f-93f2-4341-86d6-7082fc286a5c,1,0,ba96ec0e-931e-45be-a782-e68ba4fedddb,ba96ec0e-931e-45be-a782-e68ba4fedddb,1,0,9af5882f-3a42-4fae-83df-6aa8de577112,9af5882f-3a42-4fae-83df-6aa8de577112,1,0,79bc5e39-3017-48bf-8e42-fa34e8b581ef,79bc5e39-3017-48bf-8e42-fa34e8b581ef,1,0,fe6e207f-d306-4470-8441-ffd3f3710d31,fe6e207f-d306-4470-8441-ffd3f3710d31,1,0,7451af80-7387-4e8d-a3da-2ae0540c3fd4,7451af80-7387-4e8d-a3da-2ae0540c3fd4,1,0,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1,0,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,1,0,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,1,0,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,1,0,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,1,0,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,1,0,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,1,0,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,1,0,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,1,0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,1,0,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,1,0,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,1,0,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,1,0,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1,0,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,1,0,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,1,0,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,1,0,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,1,0,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,1,0,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,1,0,bdc51d67-5fc2-4d28-8875-69e33e625be6,bdc51d67-5fc2-4d28-8875-69e33e625be6,1,0,94ca9aa0-f61f-496b-8fef-9e6fb7bd8f87,94ca9aa0-f61f-496b-8fef-9e6fb7bd8f87,1,0,b494ca7b-6548-4fa2-932c-acdf8c62a78a,b494ca7b-6548-4fa2-932c-acdf8c62a78a,1,0,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,1,0,f335aa38-4e9e-4653-9a76-b6d4ae178c93,f335aa38-4e9e-4653-9a76-b6d4ae178c93,1,0,a62894bc-fab4-4ed4-a57d-cbe725527198,a62894bc-fab4-4ed4-a57d-cbe725527198,1,0,d4e567c7-55f1-4564-b066-f5b2355ad82c,d4e567c7-55f1-4564-b066-f5b2355ad82c,1,0,89cf2cd8-dc43-4742-af5a-5975e9546786,89cf2cd8-dc43-4742-af5a-5975e9546786,1,0,089ae618-cd90-482a-b4a2-45a04aaecc0c,089ae618-cd90-482a-b4a2-45a04aaecc0c,1,0,d1beef4e-9c78-49f5-9e52-1568fadf861d,d1beef4e-9c78-49f5-9e52-1568fadf861d,1,0,e6032a40-6195-4889-99f5-f7f4c74d4e8f,e6032a40-6195-4889-99f5-f7f4c74d4e8f,1,0,f9f12c11-04e8-4999-b1ab-ddea896638a2,f9f12c11-04e8-4999-b1ab-ddea896638a2,1,0,47ae26c4-1c47-4d9d-a0b8-a9899d08a4ce,47ae26c4-1c47-4d9d-a0b8-a9899d08a4ce,1,0,83245a76-8502-47a4-98ae-2ffadb78a029,83245a76-8502-47a4-98ae-2ffadb78a029,1,0,c9d5a41d-a2d9-4ec6-9a51-e4d254df1927,c9d5a41d-a2d9-4ec6-9a51-e4d254df1927,1,0,b5bb5376-27a6-43f2-9e91-bf7c913b89fd,b5bb5376-27a6-43f2-9e91-bf7c913b89fd,1,0,24861cd2-2be0-4454-8154-2201e63be266,24861cd2-2be0-4454-8154-2201e63be266,1,0,2e364599-aad9-4d1d-a4df-6cbd3ed768e7,2e364599-aad9-4d1d-a4df-6cbd3ed768e7,1,0,b1dd4569-6ed9-49f4-b05b-359229afb7a5,b1dd4569-6ed9-49f4-b05b-359229afb7a5,1,0,c14cac09-820e-47ae-81bb-eb497950d40c,c14cac09-820e-47ae-81bb-eb497950d40c,1,0,201cd431-6027-466c-abec-09ff65f42244,201cd431-6027-466c-abec-09ff65f42244,1,0,1018c5d8-8aed-49ba-a27c-a44bddd96144,1018c5d8-8aed-49ba-a27c-a44bddd96144,1,0,a81e5d20-9c42-462d-83a3-f86522c473f5,a81e5d20-9c42-462d-83a3-f86522c473f5,1,0,1ce4440e-3709-4cb1-8505-2379d5146be3,1ce4440e-3709-4cb1-8505-2379d5146be3,1,0,81c1f13c-e4ac-46b8-a205-c4f695ddf667,81c1f13c-e4ac-46b8-a205-c4f695ddf667,1,0,a26d8489-88a8-438e-bb58-c7b5a742a243,a26d8489-88a8-438e-bb58-c7b5a742a243,1,0,4b700bfd-5179-4504-b710-fd65036dded7,4b700bfd-5179-4504-b710-fd65036dded7,1,0,b046cb0b-f88b-4fb1-b08d-bb02b20dee74,b046cb0b-f88b-4fb1-b08d-bb02b20dee74,1,0,67dc31fa-cc64-4d29-96aa-65a7fd480790,67dc31fa-cc64-4d29-96aa-65a7fd480790,1,0,17f0e86d-8661-492c-85fa-2ce3cd1a57d5,17f0e86d-8661-492c-85fa-2ce3cd1a57d5,1,0,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,1,0,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,1,0,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,1,0,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,1,0,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,1,0,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,1,0,65ad33ce-edab-4f8b-8f44-1a5634d87191,65ad33ce-edab-4f8b-8f44-1a5634d87191,1,0,bcd727b5-4678-41e9-85d5-98d4157cdd77,bcd727b5-4678-41e9-85d5-98d4157cdd77,1,0,38c6dd83-2a70-4c4a-9f29-3b2b54a15501,38c6dd83-2a70-4c4a-9f29-3b2b54a15501,1,0,f403fcb3-a4f8-479d-9fa1-85d458b9a4b5,f403fcb3-a4f8-479d-9fa1-85d458b9a4b5,1,0,c56d3cfe-6ae1-4fe3-abdc-2d845049ddde,c56d3cfe-6ae1-4fe3-abdc-2d845049ddde,1,0,66f1dc54-f28c-4fb7-a6c9-f839d656e87c,66f1dc54-f28c-4fb7-a6c9-f839d656e87c,1,0,b8e3d08d-d442-4ffa-83d8-f372a7d2d340,b8e3d08d-d442-4ffa-83d8-f372a7d2d340,1,0,ebba727b-8155-4dd8-8ea0-207ca396566b,ebba727b-8155-4dd8-8ea0-207ca396566b,1,0,e4166141-f18f-4d27-beb5-9e30fe30f842,e4166141-f18f-4d27-beb5-9e30fe30f842,1,0,b62434ac-ef9f-4fe7-8279-357e0dd760ac,b62434ac-ef9f-4fe7-8279-357e0dd760ac,1,0,eb1c7d02-f5fc-4b37-9b32-7dd828958d76,eb1c7d02-f5fc-4b37-9b32-7dd828958d76,1,0,db2f20a7-e01f-4c03-9343-a815e1b46b50,db2f20a7-e01f-4c03-9343-a815e1b46b50,1,0,cf122ec9-d781-434c-9742-300e701317d6,cf122ec9-d781-434c-9742-300e701317d6,1,0,2aa2a968-2cac-4883-9bc8-5a3ccbd2e7a9,2aa2a968-2cac-4883-9bc8-5a3ccbd2e7a9,1,0,7d1361af-c5d3-4312-ab5e-ba00bf3418f2,7d1361af-c5d3-4312-ab5e-ba00bf3418f2,1,0,d7fdb3d5-3c18-4d9c-938a-2fbe8a96e877,d7fdb3d5-3c18-4d9c-938a-2fbe8a96e877,1,0,b8658e11-42b6-41bb-b384-5380e2228338,b8658e11-42b6-41bb-b384-5380e2228338,1,0,40c0919f-2c53-4502-af06-745dfa47fd8e,40c0919f-2c53-4502-af06-745dfa47fd8e,1,0,b01e4e7f-1b01-4c19-ab4b-7a8c1f6b0d22,b01e4e7f-1b01-4c19-ab4b-7a8c1f6b0d22,1,0,662a2803-da19-40c7-a906-e20d0843f67f,662a2803-da19-40c7-a906-e20d0843f67f,1,0,327c0731-1496-4463-837f-8f9c3e4c1a49,327c0731-1496-4463-837f-8f9c3e4c1a49,1,0,d74a37c2-7f50-40da-b7f8-29f79ae7230c,d74a37c2-7f50-40da-b7f8-29f79ae7230c,1,0,37a677e7-6661-41b5-ba68-740361168ccf,37a677e7-6661-41b5-ba68-740361168ccf,1,0,2a41d20d-d57a-4ce8-832f-c1b83099e563,2a41d20d-d57a-4ce8-832f-c1b83099e563,1,0,a0701ad3-572a-4806-91c0-6c5fff8dd350,a0701ad3-572a-4806-91c0-6c5fff8dd350,1,0,c9f268d1-6d2a-47d5-9371-f951b95d24a6,c9f268d1-6d2a-47d5-9371-f951b95d24a6,1,0,86b155be-d611-46b4-8275-bb19a2fa20ba,86b155be-d611-46b4-8275-bb19a2fa20ba,1,0,fedb2d36-bb2e-49dd-9d52-afcc41f3636b,fedb2d36-bb2e-49dd-9d52-afcc41f3636b,1,0,5d74d2d1-a2af-4a52-a884-a60e6b07ffac,5d74d2d1-a2af-4a52-a884-a60e6b07ffac,1,0,69e67507-e063-4221-9b84-2ee9d8903c1a,69e67507-e063-4221-9b84-2ee9d8903c1a,1,0,a649cb56-2a53-4508-8bf4-9aa01373ede2,a649cb56-2a53-4508-8bf4-9aa01373ede2,1,0,7e572d75-3a89-43c0-ad68-18498d67f8ca,7e572d75-3a89-43c0-ad68-18498d67f8ca,1,0,3c159a42-d9f9-4de4-a86f-893b1fc65b46,3c159a42-d9f9-4de4-a86f-893b1fc65b46,1,0,545cd0e7-4125-48f1-9123-0bc39e436e5e,545cd0e7-4125-48f1-9123-0bc39e436e5e,1,0,9a17eec6-b517-4133-8d25-bb953d84461f,9a17eec6-b517-4133-8d25-bb953d84461f,1,0,a0a61d7f-879d-4e92-98a3-5291c834c341,a0a61d7f-879d-4e92-98a3-5291c834c341,1,0,7bf60016-2edc-443b-98b4-0864b548c482,7bf60016-2edc-443b-98b4-0864b548c482,1,0,74139209-f345-4fd9-9ade-15cc4d399836,74139209-f345-4fd9-9ade-15cc4d399836,1,0,e39de1c5-b43b-4f71-aa32-c03b8afd6f65,e39de1c5-b43b-4f71-aa32-c03b8afd6f65,1,0,d5b6aad4-b1bd-464b-aca0-f8455d6388b4,d5b6aad4-b1bd-464b-aca0-f8455d6388b4,1,0,033ab408-fa51-4af2-a82c-f3167de00681,033ab408-fa51-4af2-a82c-f3167de00681,1,0,f7267120-f367-4d47-be5e-e2aa7a2ada46,f7267120-f367-4d47-be5e-e2aa7a2ada46,1,0,911b4ba4-1902-4c69-a4c9-963ab93d35b0,911b4ba4-1902-4c69-a4c9-963ab93d35b0,1,0,70cf60eb-a5f8-4573-a28b-6844721459de,70cf60eb-a5f8-4573-a28b-6844721459de,1,0,e2666bd9-bf44-408b-98fa-b9be26bde33f,e2666bd9-bf44-408b-98fa-b9be26bde33f,1,0,9151fa13-6612-4c4c-a264-3fd669205de7,9151fa13-6612-4c4c-a264-3fd669205de7,1,0,fee8fd9d-be7d-4560-9b96-819ffd497c88,fee8fd9d-be7d-4560-9b96-819ffd497c88,1,0,c86135b4-063c-4ca8-99e2-35c61026b43f,c86135b4-063c-4ca8-99e2-35c61026b43f,1,0,186792a9-0a07-4b6d-a9a0-337221f6b009,186792a9-0a07-4b6d-a9a0-337221f6b009,1,0,49163bf6-4a6a-4da9-a0ed-257c22224b47,49163bf6-4a6a-4da9-a0ed-257c22224b47,1,0,74c71abe-90eb-4c05-a4a6-375a93e7b99c,74c71abe-90eb-4c05-a4a6-375a93e7b99c,1,0,d36efd98-34a7-41b4-99b6-34c09e71525a,d36efd98-34a7-41b4-99b6-34c09e71525a,1,0,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,1,0,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,1,0,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,1,0,ee0412d3-58e7-4715-8774-d49778e1ef73,ee0412d3-58e7-4715-8774-d49778e1ef73,1,0,ea31df21-1402-417a-9788-b17a7116e842,ea31df21-1402-417a-9788-b17a7116e842,1,0,7a93efb9-62bb-437a-8095-b26a2c8ce8ed,7a93efb9-62bb-437a-8095-b26a2c8ce8ed,1,0,e964753f-7f4c-4f9f-bd17-cdac317c1d35,e964753f-7f4c-4f9f-bd17-cdac317c1d35,1,0,20c2aba0-e2b2-4e4f-9d48-1515c0ae7b4d,20c2aba0-e2b2-4e4f-9d48-1515c0ae7b4d,1,0,43c22498-3fd6-4038-a291-05f0db9ab66a,43c22498-3fd6-4038-a291-05f0db9ab66a,1,0,4ffc9d16-c450-4ecb-b8f6-9ec6fe37fc75,4ffc9d16-c450-4ecb-b8f6-9ec6fe37fc75,1,0,ee6e5e56-5848-46b6-89bf-b9345a57d94c,ee6e5e56-5848-46b6-89bf-b9345a57d94c,1,0,8817c872-bdee-4577-bcc3-4046edc72803,8817c872-bdee-4577-bcc3-4046edc72803,1,0,5b88c214-4e4e-45c2-b8c5-14eb852e9900,5b88c214-4e4e-45c2-b8c5-14eb852e9900,1,0,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,1,0,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,1,0,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,1,0,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,1,0,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,1,0,a2f19cb2-9f2e-442b-b9f2-e5253c70871c,a2f19cb2-9f2e-442b-b9f2-e5253c70871c,1,0,0c67453e-038b-46f3-8c13-2786e8622ad8,0c67453e-038b-46f3-8c13-2786e8622ad8,1,0,8ff1dc4d-b46c-4519-80fe-19448e620e74,8ff1dc4d-b46c-4519-80fe-19448e620e74,1,0,7cd5ca8c-cc97-4664-964e-152fdcb5bdef,7cd5ca8c-cc97-4664-964e-152fdcb5bdef,1,0,be0a5f9a-ffab-41d8-b55a-a61355f5d269,be0a5f9a-ffab-41d8-b55a-a61355f5d269,1,0,9286105d-9aa9-44f9-ae63-bbbcec64eade,9286105d-9aa9-44f9-ae63-bbbcec64eade,1,0,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,1,0,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,1,0,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,1,0,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1,0,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,1,0,483720db-6c9e-4179-b5c7-56159c9b6073,483720db-6c9e-4179-b5c7-56159c9b6073,1,0,1725c619-9c4a-40ac-9044-00fee71945a4,1725c619-9c4a-40ac-9044-00fee71945a4,1,0,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,1,0,e95b126d-797d-4071-b7b4-b14aaf595f2d,e95b126d-797d-4071-b7b4-b14aaf595f2d,1,0,9241ea3c-633f-4469-9e70-c5a20e464da8,9241ea3c-633f-4469-9e70-c5a20e464da8,1,0,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,1,0,961ae0fb-7f7b-414d-8fbf-32b893b41085,961ae0fb-7f7b-414d-8fbf-32b893b41085,1,0,10adf8c8-6f5f-477f-b244-4452b774b766,10adf8c8-6f5f-477f-b244-4452b774b766,1,0,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,1,0,04ec5e44-8469-4e9c-8021-83d258f2ec54,04ec5e44-8469-4e9c-8021-83d258f2ec54,1,0,cff36ede-0bd1-424b-8c75-b9695133f32e,cff36ede-0bd1-424b-8c75-b9695133f32e,1,0,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,1,0,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,1,0,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,1,0,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,1,0,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,1,0,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,1,0,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,1,0,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,1,0,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,1,0,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,1,0,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,1,0,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,1,0,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,1,0,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,1,0,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,1,0,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,1,0,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,1,0,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,1,0,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,1,0,aa114d56-2faf-4925-8319-f0aa3993e9ee,aa114d56-2faf-4925-8319-f0aa3993e9ee,1,0,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,1,0,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,1,0,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,1,0,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,1,0,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,1,0,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,1,0,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,1,0,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,1,0,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,1,0,2b94076d-39ee-45ad-9ba5-435115cf5d4f,2b94076d-39ee-45ad-9ba5-435115cf5d4f,1,0,72ace16c-e90a-4d05-bc23-4351d4c87683,72ace16c-e90a-4d05-bc23-4351d4c87683,1,0,bd86e378-84bb-486a-be7b-319a3fe3b70b,bd86e378-84bb-486a-be7b-319a3fe3b70b,1,0,ef3bc279-6721-4949-8dc0-f96141f7f05c,ef3bc279-6721-4949-8dc0-f96141f7f05c,1,0,f81c7e21-48ad-4b64-975d-e62d34c7235a,f81c7e21-48ad-4b64-975d-e62d34c7235a,1,0,d0523c14-585e-45d3-9735-891235631004,d0523c14-585e-45d3-9735-891235631004,1,0,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,1,0,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,1,0,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,1,0,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,1,0,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,1,0,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,1,0,45af8f5d-d505-466b-a798-19f2219a180c,45af8f5d-d505-466b-a798-19f2219a180c,1,0,8a8229bc-f70a-4434-bacc-8a81fc58154b,8a8229bc-f70a-4434-bacc-8a81fc58154b,1,0,6324ad14-82ca-467b-b6b7-8d5f6049ca65,6324ad14-82ca-467b-b6b7-8d5f6049ca65,1,0,273446f0-f28b-4ce2-874c-3c6a57299b71,273446f0-f28b-4ce2-874c-3c6a57299b71,1,0,eb2f7449-ee42-43ec-b59c-3e07a6e3c139,eb2f7449-ee42-43ec-b59c-3e07a6e3c139,1,0,f8a7913a-2c64-47e1-8ae9-622fc6e9477e,f8a7913a-2c64-47e1-8ae9-622fc6e9477e,1,0,9b46a2b4-223d-4527-a94e-37ecd4fe72d7,9b46a2b4-223d-4527-a94e-37ecd4fe72d7,1,0,7a4e17bf-3649-4982-a9c6-5982390f1f1d,7a4e17bf-3649-4982-a9c6-5982390f1f1d,1,0,722be6e0-2698-431b-9206-777a36e6742f,722be6e0-2698-431b-9206-777a36e6742f,1,0,75bb0122-26bd-40be-8de8-7a57680c85ae,75bb0122-26bd-40be-8de8-7a57680c85ae,1,0,28dd22df-07cc-4e6d-89b2-b15a13f76615,28dd22df-07cc-4e6d-89b2-b15a13f76615,1,0,0c98b025-5adb-44dc-ab14-4c6517cc230b,0c98b025-5adb-44dc-ab14-4c6517cc230b,1,0,da2f09bd-109f-43aa-a90b-f033d17ed689,da2f09bd-109f-43aa-a90b-f033d17ed689,1,0,c4b3cb31-356e-4868-921c-f6710349def8,c4b3cb31-356e-4868-921c-f6710349def8,1,0,f98a7b6d-f364-4b84-9aeb-8dd822ef582f,f98a7b6d-f364-4b84-9aeb-8dd822ef582f,1,0,44526cb1-561d-4b87-a628-d79cc64ccdec,44526cb1-561d-4b87-a628-d79cc64ccdec,1,0,5e4dbba3-07df-4e30-be14-d9244f5ec21c,5e4dbba3-07df-4e30-be14-d9244f5ec21c,1,0,c8116351-4487-40f3-ae04-1e0741cc5df6,c8116351-4487-40f3-ae04-1e0741cc5df6,1,0,a6be80f7-d6aa-4371-a180-3d355080d849,a6be80f7-d6aa-4371-a180-3d355080d849,1,0,b37722c3-e29f-4a40-b4eb-0317919fc7a5,b37722c3-e29f-4a40-b4eb-0317919fc7a5,1,0,b1b1cd90-094d-428b-a6bc-156521c1c54d,b1b1cd90-094d-428b-a6bc-156521c1c54d,1,0,4f79ef7c-79be-4a69-acc0-bd591c712d03,4f79ef7c-79be-4a69-acc0-bd591c712d03,1,0,a0dd2129-d3a1-4bca-b555-72b065be1c13,a0dd2129-d3a1-4bca-b555-72b065be1c13,1,0,dc5e8229-e301-477c-846e-2e7078e3ee5f,dc5e8229-e301-477c-846e-2e7078e3ee5f,1,0,24836e44-8fdd-44bd-91d8-4ddab2caf485,24836e44-8fdd-44bd-91d8-4ddab2caf485,1,0,3727bcfe-4d75-4270-86e7-4a66ab14866c,3727bcfe-4d75-4270-86e7-4a66ab14866c,1,0,870a4708-0b5a-4fa3-9978-d94b161d289a,870a4708-0b5a-4fa3-9978-d94b161d289a,1,0,30e9f89d-7b94-488e-9963-886c271b1af7,30e9f89d-7b94-488e-9963-886c271b1af7,1,0,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,1,0,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1,0,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,1,0,9693cc78-852e-445b-a7d2-f1689fa9eeec,9693cc78-852e-445b-a7d2-f1689fa9eeec,1,0,eb33e555-db41-462a-a45d-c7e0945cece8,eb33e555-db41-462a-a45d-c7e0945cece8,1,0,9cfd517c-1008-483a-9f65-7d15feb2cefc,9cfd517c-1008-483a-9f65-7d15feb2cefc,1,0,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,1,0,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,1,0,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,1,0,1d76f613-f4f6-4772-8c16-d97b3104a553,1d76f613-f4f6-4772-8c16-d97b3104a553,1,0,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,1,0,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,1,0,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,1,0,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,1,0,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,1,0,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,1,0,2e233e3c-687c-4516-87c6-5d6c5f9f04a2,2e233e3c-687c-4516-87c6-5d6c5f9f04a2,1,0,2afdcde7-46ef-4624-8b84-c6381ff2f3a4,2afdcde7-46ef-4624-8b84-c6381ff2f3a4,1,0,2d279d24-1953-4a2f-8206-77481d2fd718,2d279d24-1953-4a2f-8206-77481d2fd718,1,0,aa6abffe-1b09-48f9-9aee-4f234db6b2a2,aa6abffe-1b09-48f9-9aee-4f234db6b2a2,1,0,0a920200-77d0-42ea-abf6-0d40d63289b0,0a920200-77d0-42ea-abf6-0d40d63289b0,1,0,c850bafc-4073-44ef-b148-194f87c46f0e,c850bafc-4073-44ef-b148-194f87c46f0e,1,0,6d1dd726-815d-476e-b668-95cff4182e54,6d1dd726-815d-476e-b668-95cff4182e54,1,0,12f4a0ed-4798-4467-8834-de3eb385e22d,12f4a0ed-4798-4467-8834-de3eb385e22d,1,0,5710809e-4c41-42ab-952f-f7778fe9be0f,5710809e-4c41-42ab-952f-f7778fe9be0f,1,0,0811f6c2-6bb3-43b8-9944-910adc4c6f23,0811f6c2-6bb3-43b8-9944-910adc4c6f23,1,0,c1646df4-9fce-44f0-9cc3-a5dab0bbef2e,c1646df4-9fce-44f0-9cc3-a5dab0bbef2e,1,0,c86b02ab-3532-4f4c-b993-e237ed0d4d12,c86b02ab-3532-4f4c-b993-e237ed0d4d12,1,0,83c860a2-d0d7-4b7c-a127-78d86b155cfa,83c860a2-d0d7-4b7c-a127-78d86b155cfa,1,0,06e45039-8bc4-44dd-8a93-2cec34ad51ee,06e45039-8bc4-44dd-8a93-2cec34ad51ee,1,0,46e01647-cbdd-4387-affc-29b92ede8644,46e01647-cbdd-4387-affc-29b92ede8644,1,0,faa44953-118b-4027-a913-c485bca7a93f,faa44953-118b-4027-a913-c485bca7a93f,1,0,c9bd0dcd-98ec-4dc9-869a-e735fd269046,c9bd0dcd-98ec-4dc9-869a-e735fd269046,1,0,d039bfa4-39a0-43d4-ab6a-0697f9d2b375,d039bfa4-39a0-43d4-ab6a-0697f9d2b375,1,0,09072c75-75c7-4050-b674-9454558a1f87,09072c75-75c7-4050-b674-9454558a1f87,1,0,f0c8d2d2-d597-4f09-8257-0fa7524f1e44,f0c8d2d2-d597-4f09-8257-0fa7524f1e44,1,0,3e2f75ab-4143-48ca-83db-3006cb2a8584,3e2f75ab-4143-48ca-83db-3006cb2a8584,1,0,91a82492-5e27-46b6-b1a8-48e89a437715,91a82492-5e27-46b6-b1a8-48e89a437715,1,0,53bc7bfd-8786-464f-a615-ceae2971cbc9,53bc7bfd-8786-464f-a615-ceae2971cbc9,1,0,aa77817b-bd2f-4757-99b0-5e67a1b032d3,aa77817b-bd2f-4757-99b0-5e67a1b032d3,1,0,8cc27936-976d-4f31-91c6-644d15b69c55,8cc27936-976d-4f31-91c6-644d15b69c55,1,0,cf9de063-89f4-4632-b7a1-0cfbea6df643,cf9de063-89f4-4632-b7a1-0cfbea6df643,1,0,ee3bab2c-bd6a-4a33-89a2-78b4dd89bb88,ee3bab2c-bd6a-4a33-89a2-78b4dd89bb88,1,0,2478fb43-57a3-4348-b3d4-61f015e4e231,2478fb43-57a3-4348-b3d4-61f015e4e231,1,0,daa99b45-b2d2-47bc-9d7e-2d21b1a3dfd8,daa99b45-b2d2-47bc-9d7e-2d21b1a3dfd8,1,0,0449c160-01e5-4fe4-8759-5b93c484b467,0449c160-01e5-4fe4-8759-5b93c484b467,1,0,0684e4ba-28c7-4032-a43f-a3a4a37ec50b,0684e4ba-28c7-4032-a43f-a3a4a37ec50b,1,0,bcac012d-b4a9-49bb-9c54-722c741d183c,bcac012d-b4a9-49bb-9c54-722c741d183c,1,0,5370d079-975f-4f7c-95c3-7868147ecc76,5370d079-975f-4f7c-95c3-7868147ecc76,1,0,4dd66f76-e4e0-4f84-9fad-bb922cd51503,4dd66f76-e4e0-4f84-9fad-bb922cd51503,1,0,e76a411a-121b-4791-a785-dd54795eaa7f,e76a411a-121b-4791-a785-dd54795eaa7f,1,0,66844ae3-f098-462c-aef8-1fd38c403760,66844ae3-f098-462c-aef8-1fd38c403760,1,0,be96718a-223d-4597-bccf-2fb7d16dbbcc,be96718a-223d-4597-bccf-2fb7d16dbbcc,1,0,eb551461-ae0d-41dd-89fa-2f6e7f3c4840,eb551461-ae0d-41dd-89fa-2f6e7f3c4840,1,0,acec1961-a953-4f7b-b42b-baa1b8b3be14,acec1961-a953-4f7b-b42b-baa1b8b3be14,1,0,eb6394d4-1679-4494-8d23-419f5a714cdc,eb6394d4-1679-4494-8d23-419f5a714cdc,1,0,ffb3c2e4-bb9b-4d12-80bb-79e3c6d5700d,ffb3c2e4-bb9b-4d12-80bb-79e3c6d5700d,1,0,7e9fadd6-d0ad-4856-a195-1058f00bf488,7e9fadd6-d0ad-4856-a195-1058f00bf488,1,0,76d0c5ee-5b85-4670-ba1c-8fdaa7ba872a,76d0c5ee-5b85-4670-ba1c-8fdaa7ba872a,1,0,84f67d35-ca48-4fff-94e4-5f4beb7e3c08,84f67d35-ca48-4fff-94e4-5f4beb7e3c08,1,0,2972c142-0aac-4e36-b34e-4e73f18ba9cb,2972c142-0aac-4e36-b34e-4e73f18ba9cb,1,0,d6915227-4ede-4cd2-9e7c-d23dc409936e,d6915227-4ede-4cd2-9e7c-d23dc409936e,1,0,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,1,0,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,1,0,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,1,0,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,1,0,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,1,0,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,1,0,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1,0,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,1,0,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,1,0,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,1,0,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,1,0,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,1,0,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,1,0,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,1,0,6381b8d2-7722-45c7-8800-19f6574d7d7a,6381b8d2-7722-45c7-8800-19f6574d7d7a,1,0,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,1,0,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,1,0,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,1,0,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,1,0,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,1,0,7086199b-20ec-4a74-a52f-71824134e8c5,7086199b-20ec-4a74-a52f-71824134e8c5,1,0,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,1,0,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,1,0,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,1,0,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,1,0,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,1,0,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,1,0,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,1,0,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,1,0,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,1,0,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,1,0,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,1,0,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,1,0,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,1,0,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,1,0,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,1,0,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,1,0,08eb74b6-1e1c-4004-a0f8-b6f1fdfc68ef,08eb74b6-1e1c-4004-a0f8-b6f1fdfc68ef,1,0,d4eb3e9a-feb5-42d9-841b-ff20288228b6,d4eb3e9a-feb5-42d9-841b-ff20288228b6,1,0,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,1,0,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,1,0,bd0e4aeb-19f9-48fc-b838-38d785004360,bd0e4aeb-19f9-48fc-b838-38d785004360,1,0,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,1,0,0f2ec7ac-6d3f-4fcf-af3d-b0bfaa187a4b,0f2ec7ac-6d3f-4fcf-af3d-b0bfaa187a4b,1,0,6d351276-2c04-4198-a3e4-865881c12f5c,6d351276-2c04-4198-a3e4-865881c12f5c,1,0,73b1d2e2-0eeb-45dc-8ca3-3bda594d6823,73b1d2e2-0eeb-45dc-8ca3-3bda594d6823,1,0,5c4abd61-2f29-499e-a2ca-d133e9eeeaea,5c4abd61-2f29-499e-a2ca-d133e9eeeaea,1,0,8e07a76d-db30-491c-b296-181c8e689382,8e07a76d-db30-491c-b296-181c8e689382,1,0,4f1752ae-42d0-477d-854b-de143c428a85,4f1752ae-42d0-477d-854b-de143c428a85,1,0,29674b66-c542-4a34-8caa-8e57a51bd190,29674b66-c542-4a34-8caa-8e57a51bd190,1,0,1a41acdd-3503-4c69-b93b-eb1cb6749712,1a41acdd-3503-4c69-b93b-eb1cb6749712,1,0,0e45c53e-7571-49bf-b673-cff53d32af89,0e45c53e-7571-49bf-b673-cff53d32af89,1,0,169b0670-8fa7-48d1-b6b1-2cf581b18390,169b0670-8fa7-48d1-b6b1-2cf581b18390,1,0,2e239650-973b-4908-b91e-477062046528,2e239650-973b-4908-b91e-477062046528,1,0,4692eeee-5b73-42f3-ad39-794141af9e2b,4692eeee-5b73-42f3-ad39-794141af9e2b,1,0,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,1,0,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,1,0,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,1,0,47714327-dd28-4e32-a1c9-20ee47d9afd0,47714327-dd28-4e32-a1c9-20ee47d9afd0,1,0,4d76ef7a-f1a6-4147-84f4-6e1717dfd77e,4d76ef7a-f1a6-4147-84f4-6e1717dfd77e,1,0,d1eb0aa7-b485-4f3a-846d-be069ca807c0,d1eb0aa7-b485-4f3a-846d-be069ca807c0,1,0,afde7867-15d3-43fa-b439-6d9e40df580b,afde7867-15d3-43fa-b439-6d9e40df580b,1,0,a676ff94-a0d1-4de9-8690-ec67f2c891d8,a676ff94-a0d1-4de9-8690-ec67f2c891d8,1,0,012bf716-3672-462e-b390-7bb4384ab4b1,012bf716-3672-462e-b390-7bb4384ab4b1,1,0,65342599-ff37-4f99-8e40-f05d87403bcf,65342599-ff37-4f99-8e40-f05d87403bcf,1,0,3a3f505a-7a50-4111-8029-5b9057fed232,3a3f505a-7a50-4111-8029-5b9057fed232,1,0,1d66cd80-fd61-4bf2-a7f9-34b33443e1ea,1d66cd80-fd61-4bf2-a7f9-34b33443e1ea,1,0,7b638691-416d-4484-81f4-e4c796a92818,7b638691-416d-4484-81f4-e4c796a92818,1,0,03ab92e2-81a3-4e38-84a8-85c1d78d51e9,03ab92e2-81a3-4e38-84a8-85c1d78d51e9,1,0,ef09e296-af08-44ff-8303-4833b23a12c3,ef09e296-af08-44ff-8303-4833b23a12c3,1,0,8984f28e-8c83-499a-838c-5f51410d7b0e,8984f28e-8c83-499a-838c-5f51410d7b0e,1,0,73bf8c40-76ee-4c61-b56a-898bcd6da1ca,73bf8c40-76ee-4c61-b56a-898bcd6da1ca,1,0,434a0471-1389-4764-a901-69249e1fdc38,434a0471-1389-4764-a901-69249e1fdc38,1,0,7b6c1d9f-968e-4126-990e-fa2787ad83b2,7b6c1d9f-968e-4126-990e-fa2787ad83b2,1,0,b89108a9-8b4e-4b34-8f72-4eb502963743,b89108a9-8b4e-4b34-8f72-4eb502963743,1,0,398b93b1-620d-4942-ba44-7ea0f9cc14f0,398b93b1-620d-4942-ba44-7ea0f9cc14f0,1,0,7b06537e-d818-41b3-acc5-b6b63b543be8,7b06537e-d818-41b3-acc5-b6b63b543be8,1,0,74226c30-5f9b-4e47-b7cc-35e92139cbfa,74226c30-5f9b-4e47-b7cc-35e92139cbfa,1,0,09f812cb-770c-4f85-87f0-db35952c764e,09f812cb-770c-4f85-87f0-db35952c764e,1,0,8bbbcfd9-b6da-41f6-b543-863b12b9fb59,8bbbcfd9-b6da-41f6-b543-863b12b9fb59,1,0,eb48f8a9-1644-432d-a8a8-e63bc013a2fe,eb48f8a9-1644-432d-a8a8-e63bc013a2fe,1,0,36951804-70a4-45fa-9fad-1c37fd3ce7b7,36951804-70a4-45fa-9fad-1c37fd3ce7b7,1,0,d0031774-fa35-469f-9f8a-3aaa920928a0,d0031774-fa35-469f-9f8a-3aaa920928a0,1,0,6da02618-2454-48fe-b1dc-399d0d40d043,6da02618-2454-48fe-b1dc-399d0d40d043,1,0,5a080203-ecd2-4f40-ac64-c8024eda595e,5a080203-ecd2-4f40-ac64-c8024eda595e,1,0,3eabcb69-398b-43f5-bf53-c20f90bee5c4,3eabcb69-398b-43f5-bf53-c20f90bee5c4,1,0,9c33639e-529a-490f-9365-80778b54c3f7,9c33639e-529a-490f-9365-80778b54c3f7,1,0,561b97a0-9d42-4735-a606-8d5b5862689f,561b97a0-9d42-4735-a606-8d5b5862689f,1,0,10d5c0c2-301f-4477-a88f-254f99a30fa0,10d5c0c2-301f-4477-a88f-254f99a30fa0,1,0,84ba4ba7-2743-438a-8b65-cc14090f8a92,84ba4ba7-2743-438a-8b65-cc14090f8a92,1,0,cdc4312c-b1af-407c-bfc3-28db04915aa6,cdc4312c-b1af-407c-bfc3-28db04915aa6,1,0,97b76ee8-c73f-456b-9008-b453bd376317,97b76ee8-c73f-456b-9008-b453bd376317,1,0,ee305e39-978b-4069-a4e6-05e761a5d6ae,ee305e39-978b-4069-a4e6-05e761a5d6ae,1,0,965650ae-8a6e-469a-869a-0ce821818058,965650ae-8a6e-469a-869a-0ce821818058,1,0,00fde8e2-3eb3-484a-a960-a390cbdaa16a,00fde8e2-3eb3-484a-a960-a390cbdaa16a,1,0,c7a82aa5-043c-46a2-9f5a-cba098ca36bd,c7a82aa5-043c-46a2-9f5a-cba098ca36bd,1,0,94744edd-61d0-4329-95d8-fc19dc7c6af1,94744edd-61d0-4329-95d8-fc19dc7c6af1,1,0,43bbf87f-8f21-49b9-be2f-eceb64c2c650,43bbf87f-8f21-49b9-be2f-eceb64c2c650,1,0,69db1a1c-3e9d-4e3c-b31e-731f2b8635b9,69db1a1c-3e9d-4e3c-b31e-731f2b8635b9,1,0,621b1881-9a7f-4fa4-a373-46467743e29c,621b1881-9a7f-4fa4-a373-46467743e29c,1,0,932ef5a0-4bad-424d-9772-ad8393c12006,932ef5a0-4bad-424d-9772-ad8393c12006,1,0,35dbc542-3ad9-4a72-9863-229a67cda425,35dbc542-3ad9-4a72-9863-229a67cda425,1,0,8e4277e9-983a-4d43-b08e-a4f918df87bf,8e4277e9-983a-4d43-b08e-a4f918df87bf,1,0,110e76d3-26ad-4392-9f82-255d792478a1,110e76d3-26ad-4392-9f82-255d792478a1,1,0,9117730e-1d3f-47b6-84fc-7a02377f86a0,9117730e-1d3f-47b6-84fc-7a02377f86a0,1,0,0a7eec2f-41c6-4d77-98a4-5e0bfc698997,0a7eec2f-41c6-4d77-98a4-5e0bfc698997,1,0,ec06e6a7-7894-4411-9b54-f811837b8a2e,ec06e6a7-7894-4411-9b54-f811837b8a2e,1,0,f43f3a1b-7f71-4a4f-9ec2-5f4d7d77efca,f43f3a1b-7f71-4a4f-9ec2-5f4d7d77efca,1,0,0947bd87-9542-4d2b-8439-9f6ccdb2c9cc,0947bd87-9542-4d2b-8439-9f6ccdb2c9cc,1,0,c0e2673a-1846-4ae5-933a-4e33b73a866b,c0e2673a-1846-4ae5-933a-4e33b73a866b,1,0,3996aff6-b6ce-4f6b-a2f3-1b0bf8b1d0c2,3996aff6-b6ce-4f6b-a2f3-1b0bf8b1d0c2,1,0,f5fadf27-b8ca-421b-8a73-c3f10aef248b,f5fadf27-b8ca-421b-8a73-c3f10aef248b,1,0,006fa20c-ba4b-4003-a743-b47c4b7bd815,006fa20c-ba4b-4003-a743-b47c4b7bd815,1,0,4ecd2da3-4d0c-416b-ae97-66f6f753226b,4ecd2da3-4d0c-416b-ae97-66f6f753226b,1,0,ec680d71-eb28-4b42-a664-c6137c259eaa,ec680d71-eb28-4b42-a664-c6137c259eaa,1,0,efa1d27f-0620-4b3a-b058-12f160008478,efa1d27f-0620-4b3a-b058-12f160008478,1,0,2dd0ec2e-457d-4147-b806-ff3d6fa091fb,2dd0ec2e-457d-4147-b806-ff3d6fa091fb,1,0,005d4afc-7d09-4cef-acaa-50d49e455df0,005d4afc-7d09-4cef-acaa-50d49e455df0,1,0,d773673e-992d-4f22-9fb3-acfb8863217d,d773673e-992d-4f22-9fb3-acfb8863217d,1,0,6cf00002-d685-4340-a873-196126a19664,6cf00002-d685-4340-a873-196126a19664,1,0,e422c08d-f54f-4a49-b0c5-a50bf63973c9,e422c08d-f54f-4a49-b0c5-a50bf63973c9,1,0,8288078e-0d2f-47c5-8e58-c5a17a76cc11,8288078e-0d2f-47c5-8e58-c5a17a76cc11,1,0,82abcc34-c8aa-42a0-b2fe-f66b7cafc2a0,82abcc34-c8aa-42a0-b2fe-f66b7cafc2a0,1,0,304feda3-6d33-466c-9e0d-9cea97d763be,304feda3-6d33-466c-9e0d-9cea97d763be,1,0,d6d20d2e-ac18-4bed-aa98-2466871996ac,d6d20d2e-ac18-4bed-aa98-2466871996ac,1,0,53617fbd-4c88-4b13-b3f5-acc78064fdea,53617fbd-4c88-4b13-b3f5-acc78064fdea,1,0,fae5d2ca-4a2d-4ba3-945c-d6545a6b57f1,fae5d2ca-4a2d-4ba3-945c-d6545a6b57f1,1,0,7a043029-1b09-4c11-adfd-9f0588e323e8,7a043029-1b09-4c11-adfd-9f0588e323e8,1,0,ecaf5d2f-0cea-4ad0-8550-51be37cead5c,ecaf5d2f-0cea-4ad0-8550-51be37cead5c,1,0,448e7386-cc56-4578-9c57-ef270980a0ff,448e7386-cc56-4578-9c57-ef270980a0ff,1,0,c2cdc60c-157d-450f-b3ba-2b6242459ebb,c2cdc60c-157d-450f-b3ba-2b6242459ebb,1,0,186f87ca-b9d5-48fa-b196-eed2794bade4,186f87ca-b9d5-48fa-b196-eed2794bade4,1,0,b87d9e04-9e12-42a5-b9fd-ea9a9bab59eb,b87d9e04-9e12-42a5-b9fd-ea9a9bab59eb,1,0,65b653b7-1298-40e4-9d69-2ce7810d5985,65b653b7-1298-40e4-9d69-2ce7810d5985,1,0,5fd170a9-44fc-4d18-9e51-2dbf09ca902e,5fd170a9-44fc-4d18-9e51-2dbf09ca902e,1,0,66359bb1-8692-415a-86d9-f40545f88d3a,66359bb1-8692-415a-86d9-f40545f88d3a,1,0,83be7bdf-e915-440f-a39f-1bb74db34b3e,83be7bdf-e915-440f-a39f-1bb74db34b3e,1,0,190b6efe-e67e-4274-abb9-263178a6ec4a,190b6efe-e67e-4274-abb9-263178a6ec4a,1,0,1363523a-929e-49ac-ae39-d43acf9f0478,1363523a-929e-49ac-ae39-d43acf9f0478,1,0,f6ff0bb8-c1fd-4eae-b919-6d10d4504f0c,f6ff0bb8-c1fd-4eae-b919-6d10d4504f0c,1,0,2876c476-8280-426d-8bf9-c93beda0ddd5,2876c476-8280-426d-8bf9-c93beda0ddd5,1,0,963e0813-4f6b-4d31-b66d-77125c47ce19,963e0813-4f6b-4d31-b66d-77125c47ce19,1,0,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,1,0,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,1,0,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,1,0,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,1,0,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,1,0,d9f76f2f-2b32-4986-8987-a585f831d951,d9f76f2f-2b32-4986-8987-a585f831d951,1,0,b1a96083-1c12-43f4-ba61-3a0588fc7310,b1a96083-1c12-43f4-ba61-3a0588fc7310,1,0,2e37c7d0-b97f-4c72-821e-b2bb77fb3140,2e37c7d0-b97f-4c72-821e-b2bb77fb3140,1,0,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,1,0,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,1,0,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,1,0,ee49981d-91f6-4002-9205-b8a53e6f54e0,ee49981d-91f6-4002-9205-b8a53e6f54e0,1,0,64a74365-ca32-4b7d-af8e-695624e3dcb6,64a74365-ca32-4b7d-af8e-695624e3dcb6,1,0,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,1,0,d3aca87c-2b47-48da-82dd-18ca867c8463,d3aca87c-2b47-48da-82dd-18ca867c8463,1,0,669b81a6-6526-4b5c-aafa-1988ae5253ce,669b81a6-6526-4b5c-aafa-1988ae5253ce,1,0,ab138a0c-71fe-4ca2-9d82-21f5830dde24,ab138a0c-71fe-4ca2-9d82-21f5830dde24,1,0,ffa6c000-ec84-4749-8ffe-42b0599751cd,ffa6c000-ec84-4749-8ffe-42b0599751cd,1,0,740bde9c-9fe1-4183-ab01-3fbe91d33b61,740bde9c-9fe1-4183-ab01-3fbe91d33b61,1,0,e8e19542-c5c8-418b-8a83-20336fd9075a,e8e19542-c5c8-418b-8a83-20336fd9075a,1,0,ebedc283-5eb0-459b-b686-f8643666b8b8,ebedc283-5eb0-459b-b686-f8643666b8b8,1,0,6a6afffd-cfed-4801-8b59-34d27e46565c,6a6afffd-cfed-4801-8b59-34d27e46565c,1,0,a469b12d-4537-419c-91e0-37abc9d31505,a469b12d-4537-419c-91e0-37abc9d31505,1,0,6f312bda-1f4d-48a6-bd95-f23f34f0ea4b,6f312bda-1f4d-48a6-bd95-f23f34f0ea4b,1,0,82c42232-531e-403f-8599-cc21a248fa2c,82c42232-531e-403f-8599-cc21a248fa2c,1,0,9104b791-9ac4-41ba-a7f0-9e609db3b578,9104b791-9ac4-41ba-a7f0-9e609db3b578,1,0,2d3721d1-816f-4e84-9df1-863cb269d83d,2d3721d1-816f-4e84-9df1-863cb269d83d,1,0,5ffc2b03-28c0-45da-ab3e-e4c5d449a898,5ffc2b03-28c0-45da-ab3e-e4c5d449a898,1,0,5c1a1206-0521-44db-8cdd-3e132f2e5a34,5c1a1206-0521-44db-8cdd-3e132f2e5a34,1,0,a630b2d5-2a8e-471e-a7ca-2498e15ace47,a630b2d5-2a8e-471e-a7ca-2498e15ace47,1,0,ba0855a3-8384-4681-a6f0-6373f23cf52d,ba0855a3-8384-4681-a6f0-6373f23cf52d,1,0,eaa11272-8cc2-4f82-808f-e4f641748574,eaa11272-8cc2-4f82-808f-e4f641748574,1,0,9dfd78a7-74ba-4c7a-8842-4baf4ffd5e4f,9dfd78a7-74ba-4c7a-8842-4baf4ffd5e4f,1,0,7d422da3-8ec4-4bc8-94ba-88d92625d4c7,7d422da3-8ec4-4bc8-94ba-88d92625d4c7,1,0,8035e1ce-a36a-4628-8196-1f04f50e230a,8035e1ce-a36a-4628-8196-1f04f50e230a,1,0,51f08b3c-2f03-408e-89d5-53ccbaec4e74,51f08b3c-2f03-408e-89d5-53ccbaec4e74,1,0,920ebc04-3018-4948-bae2-16de8f0f0c9a,920ebc04-3018-4948-bae2-16de8f0f0c9a,1,0,4c4fc449-05a5-4223-bd28-c73d27780a9b,4c4fc449-05a5-4223-bd28-c73d27780a9b,1,0,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,1,0,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,1,0,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,1,0,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,1,0,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,1,0,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,1,0,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,1,0,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,1,0,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,1,0,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,1,0,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,1,0,703453e8-cb49-491b-8e19-a17b89894d1e,703453e8-cb49-491b-8e19-a17b89894d1e,1,0,f0b0608c-178f-4dea-b461-0d8f00d79d30,f0b0608c-178f-4dea-b461-0d8f00d79d30,1,0,ed2dba0c-7fe3-4d24-b6a6-b104beadc286,ed2dba0c-7fe3-4d24-b6a6-b104beadc286,1,0,a4c98768-c9fc-4f95-b89b-bb1cb0e8fade,a4c98768-c9fc-4f95-b89b-bb1cb0e8fade,1,0,5546b9a9-a4fe-4a2b-9492-883bcb37a210,5546b9a9-a4fe-4a2b-9492-883bcb37a210,1,0,6fb76c5f-844f-4cbc-ae7c-4ac834fddfc9,6fb76c5f-844f-4cbc-ae7c-4ac834fddfc9,1,0,275a5772-8428-497a-81ef-c919f15fcccd,275a5772-8428-497a-81ef-c919f15fcccd,1,0,8df6e7e6-2a1e-4cf3-bdc9-60e52ea3f625,8df6e7e6-2a1e-4cf3-bdc9-60e52ea3f625,1,0,b5278cbd-1771-4739-9013-a28682689778,b5278cbd-1771-4739-9013-a28682689778,1,0,a52f2de4-f414-4837-9b1a-6d8f282e1327,a52f2de4-f414-4837-9b1a-6d8f282e1327,1,0,82573440-0ef5-4c07-bb1e-fe90295981d2,82573440-0ef5-4c07-bb1e-fe90295981d2,1,0,804be484-09cf-45a4-bd1f-c8850067e2b2,804be484-09cf-45a4-bd1f-c8850067e2b2,1,0,f1a145ce-a199-475c-ab8a-065c11a27277,f1a145ce-a199-475c-ab8a-065c11a27277,1,0,8d509c4e-fcea-4ccd-aec4-e146f2d4319b,8d509c4e-fcea-4ccd-aec4-e146f2d4319b,1,0,d126a11e-c770-4309-941f-cbcdd5cbad5d,d126a11e-c770-4309-941f-cbcdd5cbad5d,1,0,f4d88096-bff9-416a-8f75-9143ede1213f,f4d88096-bff9-416a-8f75-9143ede1213f,1,0,6b0721fe-d27f-4d1a-b377-26fce2ed1687,6b0721fe-d27f-4d1a-b377-26fce2ed1687,1,0,25c97480-330c-42f2-a2a5-031062a3a683,25c97480-330c-42f2-a2a5-031062a3a683,1,0,a2fb1bf9-d29a-4bfe-95f1-10883fa019b3,a2fb1bf9-d29a-4bfe-95f1-10883fa019b3,1,0,6adc3aa8-8784-467d-8e12-b60418a5c729,6adc3aa8-8784-467d-8e12-b60418a5c729,1,0,265206ed-4d41-497e-a483-c14052134500,265206ed-4d41-497e-a483-c14052134500,1,0,bf070420-9eb7-4372-96a6-b0d00ac3ce8c,bf070420-9eb7-4372-96a6-b0d00ac3ce8c,1,0,10336352-f3a1-4bc3-bdec-1a2eef15f176,10336352-f3a1-4bc3-bdec-1a2eef15f176,1,0,cacabf2f-6d1c-4c33-80c7-c27a5e757cc9,cacabf2f-6d1c-4c33-80c7-c27a5e757cc9,1,0,3b7c713e-81ae-4adc-9519-99c936599ef7,3b7c713e-81ae-4adc-9519-99c936599ef7,1,0,1c8ffbbd-035c-45cf-8ec8-dc5d26d7f673,1c8ffbbd-035c-45cf-8ec8-dc5d26d7f673,1,0,ecda2c4b-6411-4b47-ab59-1918bad5acdd,ecda2c4b-6411-4b47-ab59-1918bad5acdd,1,0,a9a05a66-0a1c-4e53-9d09-1abe8f45e354,a9a05a66-0a1c-4e53-9d09-1abe8f45e354,1,0,2c811ee8-f50d-4c39-82ee-0492feb1c431,2c811ee8-f50d-4c39-82ee-0492feb1c431,1,0,399f679b-f48a-4d4e-b890-5eab9e4598c3,399f679b-f48a-4d4e-b890-5eab9e4598c3,1,0,da9ca4c4-c291-4f8b-accd-bc1b123ed4f8,da9ca4c4-c291-4f8b-accd-bc1b123ed4f8,1,0,9ad1ea04-1aee-4a80-b4df-60526cdf3ad0,9ad1ea04-1aee-4a80-b4df-60526cdf3ad0,1,0,0a92df3d-fb51-4fba-938c-55846929bd5f,0a92df3d-fb51-4fba-938c-55846929bd5f,1,0,1d005a8d-aaac-4442-a7dc-12634d03f6f3,1d005a8d-aaac-4442-a7dc-12634d03f6f3,1,0,348d0ad2-f64e-4ea0-8b8e-11bbc10926f7,348d0ad2-f64e-4ea0-8b8e-11bbc10926f7,1,0,7f7eb00d-7a38-4025-8853-9d1cf2dab1e3,7f7eb00d-7a38-4025-8853-9d1cf2dab1e3,1,0,36221881-a9c8-4b91-acac-44f7c065c05a,36221881-a9c8-4b91-acac-44f7c065c05a,1,0,3fdcf013-38e0-4a30-9ae8-19100e6704ba,3fdcf013-38e0-4a30-9ae8-19100e6704ba,1,0,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,1,0,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,1,0,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,1,0,b6424caf-3db8-4cfe-b92d-7435c23606a5,b6424caf-3db8-4cfe-b92d-7435c23606a5,1,0,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,1,0,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,1,0,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,1,0,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,1,0,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,1,0,b5ea4aff-11be-4232-94a2-cb92801b6c49,b5ea4aff-11be-4232-94a2-cb92801b6c49,1,0,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,1,0,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,1,0,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,1,0,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,1,0,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,1,0,f6d79449-eca9-4d13-9ddc-8b36ae9e729e,f6d79449-eca9-4d13-9ddc-8b36ae9e729e,1,0,b9d56dc6-3a10-4795-9ca3-dbf69310813e,b9d56dc6-3a10-4795-9ca3-dbf69310813e,1,0,f4b53ce1-8c1b-4f57-b5de-acb4692a37d8,f4b53ce1-8c1b-4f57-b5de-acb4692a37d8,1,0,9b18e04f-036d-43ae-b949-9432f96d71d9,9b18e04f-036d-43ae-b949-9432f96d71d9,1,0,e99a1f54-4001-45ee-81e3-472656c05f57,e99a1f54-4001-45ee-81e3-472656c05f57,1,0,b104e7b9-8a41-4154-a84b-d1bb12fab939,b104e7b9-8a41-4154-a84b-d1bb12fab939,1,0,86b835c4-341e-4b0d-99e5-2369684ff3f4,86b835c4-341e-4b0d-99e5-2369684ff3f4,1,0,55c48fa8-8d12-4378-97a0-c0ed683f6b83,55c48fa8-8d12-4378-97a0-c0ed683f6b83,1,0,b0f74a92-f5e4-4859-9a72-643ddb5315cb,b0f74a92-f5e4-4859-9a72-643ddb5315cb,1,0,1864093d-62ac-4b12-ad16-c460432c99f6,1864093d-62ac-4b12-ad16-c460432c99f6,1,0,6eb78c87-24ed-43a8-800d-ccde02358b32,6eb78c87-24ed-43a8-800d-ccde02358b32,1,0,787d5fec-c476-4519-884b-f62492fc8396,787d5fec-c476-4519-884b-f62492fc8396,1,0,59ebd5fb-d782-46ea-b693-7885d2ababa8,59ebd5fb-d782-46ea-b693-7885d2ababa8,1,0,39a39567-43d8-47c5-9f17-0a11f31e129a,39a39567-43d8-47c5-9f17-0a11f31e129a,1,0,b24e8ff0-eb86-4ce6-84f5-49134b48f031,b24e8ff0-eb86-4ce6-84f5-49134b48f031,1,0,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,1,0,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,1,0,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,1,0,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,1,0,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,1,0,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,1,0,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,1,0,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,1,0,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,1,0,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,1,0,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,1,0,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,1,0,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,1,0,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,1,0,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,1,0,e5094d4f-ee61-4142-a97b-d96172350f65,e5094d4f-ee61-4142-a97b-d96172350f65,1,0,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,1,0,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,1,0,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,1,0,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,1,0,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,1,0,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,1,0,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,1,0,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,1,0,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,1,0,20c57e30-5856-4801-9e77-8006471d89f8,20c57e30-5856-4801-9e77-8006471d89f8,1,0,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,1,0,4a3fe393-8aea-4394-8c10-a234f1f191ad,4a3fe393-8aea-4394-8c10-a234f1f191ad,1,0,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,1,0,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,1,0,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,1,0,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,1,0,1c2103d3-3feb-4412-98c4-c731f22eef2b,1c2103d3-3feb-4412-98c4-c731f22eef2b,1,0,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,1,0,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,1,0,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,1,0,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,1,0,fd271670-bde6-4351-abec-eb82548c6c98,fd271670-bde6-4351-abec-eb82548c6c98,1,0,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,1,0,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,1,0,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,1,0,799b3dda-fbfc-4dea-a577-30321e64f4d5,799b3dda-fbfc-4dea-a577-30321e64f4d5,1,0,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,1,0,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,1,0,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,1,0,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,1,0,05ee4a7c-63e6-4587-8be7-e206345e3471,05ee4a7c-63e6-4587-8be7-e206345e3471,1,0,98d5e98b-0382-4b28-a5d9-24392925664a,98d5e98b-0382-4b28-a5d9-24392925664a,1,0,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,1,0,2a77eb39-0487-4fb0-8d5b-d4a27592ea60,2a77eb39-0487-4fb0-8d5b-d4a27592ea60,1,0,19a18193-c5d3-4e56-86c5-5a81c525e9ad,19a18193-c5d3-4e56-86c5-5a81c525e9ad,1,0,c208fcc0-d7b2-435b-963a-e18c97727f8f,c208fcc0-d7b2-435b-963a-e18c97727f8f,1,0,ac5db038-8bc3-45ff-9e8d-04ea9fef6d43,ac5db038-8bc3-45ff-9e8d-04ea9fef6d43,1,0,bf11f7b1-6332-4499-ba48-b94bc10ef869,bf11f7b1-6332-4499-ba48-b94bc10ef869,1,0,4de445f0-7c27-4540-a5a8-9c3ca2a13fd2,4de445f0-7c27-4540-a5a8-9c3ca2a13fd2,1,0,2977fedd-2c56-4d21-8eb1-a424e1b17cb3,2977fedd-2c56-4d21-8eb1-a424e1b17cb3,1,0,0b8a2936-07c5-4b90-80e6-5a058e546de6,0b8a2936-07c5-4b90-80e6-5a058e546de6,1,0,34524248-668e-48e5-a801-f489cd664de8,34524248-668e-48e5-a801-f489cd664de8,1,0,ae0891ae-ecd2-4072-8d2b-0556030c9dfd,ae0891ae-ecd2-4072-8d2b-0556030c9dfd,1,0,e8f36bca-738b-471c-b8d3-8a484978934a,e8f36bca-738b-471c-b8d3-8a484978934a,1,0,336cb96e-8867-4c9d-b74c-b4287ac9212a,336cb96e-8867-4c9d-b74c-b4287ac9212a,1,0,fc7dbc20-7bef-4cbc-9b32-5d86cef5532c,fc7dbc20-7bef-4cbc-9b32-5d86cef5532c,1,0,29f616a6-b914-4ffb-8a86-1ae17089e2f7,29f616a6-b914-4ffb-8a86-1ae17089e2f7,1,0,c50075b0-e8e2-4a6c-92ef-05882aa3cfea,c50075b0-e8e2-4a6c-92ef-05882aa3cfea,1,0,5a1058fc-35f6-43c2-95e5-ae678e19e7d6,5a1058fc-35f6-43c2-95e5-ae678e19e7d6,1,0,05c27c89-2c26-4252-842d-9aa43ba0ea2f,05c27c89-2c26-4252-842d-9aa43ba0ea2f,1,0,7c1e16c2-201d-4a3f-b0f4-9d66f5f8a68b,7c1e16c2-201d-4a3f-b0f4-9d66f5f8a68b,1,0,f092729c-6b5d-4709-8b28-15e06129731d,f092729c-6b5d-4709-8b28-15e06129731d,1,0,c03be2f7-d681-417d-975a-5c8c7b716659,c03be2f7-d681-417d-975a-5c8c7b716659,1,0,fca7af5f-bdc0-4264-be68-5e5e38545368,fca7af5f-bdc0-4264-be68-5e5e38545368,1,0,a3fc0bce-a87e-4c15-b57b-f285a694bcdf,a3fc0bce-a87e-4c15-b57b-f285a694bcdf,1,0,ae124745-edfb-11e6-4681-a8667f21fde4,ae124745-edfb-11e6-4681-a8667f21fde4,1,0,f6fcf9c2-edfb-11e6-4681-a8667f21fde4,f6fcf9c2-edfb-11e6-4681-a8667f21fde4,1,0,ec70cf10-edfb-11e6-4681-a8667f21fde4,ec70cf10-edfb-11e6-4681-a8667f21fde4,1,0,7c47f039-1ca9-4c6f-ac36-f4cb59b48b65,7c47f039-1ca9-4c6f-ac36-f4cb59b48b65,1,0,0b7cee9b-3870-49f5-a58e-063cf5353467,0b7cee9b-3870-49f5-a58e-063cf5353467,1,0,d392a791-af74-40c9-ab20-6ed6aeabe864,d392a791-af74-40c9-ab20-6ed6aeabe864,1,0,974d2430-1ff6-4be9-a5aa-aa896e9a66d4,974d2430-1ff6-4be9-a5aa-aa896e9a66d4,1,0,1612570d-b069-405a-9dd3-80b8175fb468,1612570d-b069-405a-9dd3-80b8175fb468,1,0,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,1,0,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,1,0,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,1,0,27c52afc-7127-41e1-af8a-1b1bd2c9bfa8,27c52afc-7127-41e1-af8a-1b1bd2c9bfa8,1,0,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,1,0,561ed574-617d-4a46-b32b-f022e07846c8,561ed574-617d-4a46-b32b-f022e07846c8,1,0,cba706bf-a9a7-4dda-9c5a-a26e85119396,cba706bf-a9a7-4dda-9c5a-a26e85119396,1,0,159a4eb5-00cd-426c-86e3-09cd3f569f22,159a4eb5-00cd-426c-86e3-09cd3f569f22,1,0,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,1,0,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,1,0,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,1,0,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,1,0,2ded5135-b6c3-46dd-b563-7b6fab986d23,2ded5135-b6c3-46dd-b563-7b6fab986d23,1,0,14215720-ccb3-4e5a-8345-cd42c96a3e77,14215720-ccb3-4e5a-8345-cd42c96a3e77,1,0,24fa0604-b6a5-49ad-9d03-b2cf8e81dad8,24fa0604-b6a5-49ad-9d03-b2cf8e81dad8,1,0,0690a5c7-bc25-4101-afa5-69c095d415c2,0690a5c7-bc25-4101-afa5-69c095d415c2,1,0,2ad7b509-4cd1-456a-a6ae-94649fdf8c3e,2ad7b509-4cd1-456a-a6ae-94649fdf8c3e,1,0,79013bba-a0f2-481c-a63e-095a54ee52aa,79013bba-a0f2-481c-a63e-095a54ee52aa,1,0,8523c346-f144-41b8-a702-2d588e7097c2,8523c346-f144-41b8-a702-2d588e7097c2,1,0,93969a30-d9d7-4f2f-85fa-57a4eb7495bf,93969a30-d9d7-4f2f-85fa-57a4eb7495bf,1,0,9fb73c9b-05de-4474-8a28-7e3fd5b2b143,9fb73c9b-05de-4474-8a28-7e3fd5b2b143,1,0,fa2bd6a6-bb46-4e21-8684-248578310164,fa2bd6a6-bb46-4e21-8684-248578310164,1,0,f7cf3b42-39c0-48db-b8ca-fe9ea267a45a,f7cf3b42-39c0-48db-b8ca-fe9ea267a45a,1,0,3a0c06eb-f6d5-46c3-b0b9-c8d98e572093,3a0c06eb-f6d5-46c3-b0b9-c8d98e572093,1,0,88ccac36-169d-48f8-bc68-15e3bb775b79,88ccac36-169d-48f8-bc68-15e3bb775b79,1,0,a1640988-bd60-43b3-86f1-184b9db275c6,a1640988-bd60-43b3-86f1-184b9db275c6,1,0,300a02f7-8062-4843-b11e-0321f8b40f4d,300a02f7-8062-4843-b11e-0321f8b40f4d,1,0,c8015ae6-31a7-49f4-a9e6-5d13774f64e5,c8015ae6-31a7-49f4-a9e6-5d13774f64e5,1,0,970430c4-37fc-476c-a3f6-5f6bebd2e663,970430c4-37fc-476c-a3f6-5f6bebd2e663,1,0,4cddde4a-42d5-44d0-a693-ea90eab9b169,4cddde4a-42d5-44d0-a693-ea90eab9b169,1,0,d9d612bb-6d04-4186-b243-f99aded0ba43,d9d612bb-6d04-4186-b243-f99aded0ba43,1,0,15db8b7b-59f5-4551-b2bd-b24801f056b5,15db8b7b-59f5-4551-b2bd-b24801f056b5,1,0,88d2236b-794b-485a-b075-f1a54cadcd3a,88d2236b-794b-485a-b075-f1a54cadcd3a,1,0,b7f9553f-6219-4401-a6f4-9debd47186d2,b7f9553f-6219-4401-a6f4-9debd47186d2,1,0,26a7e044-a583-40af-9daa-5aea628c8f19,26a7e044-a583-40af-9daa-5aea628c8f19,1,0,548717ca-0645-49b4-9580-c77cd4d03ebb,548717ca-0645-49b4-9580-c77cd4d03ebb,1,0,29c337bd-9811-4fce-91bb-20c253d2d14a,29c337bd-9811-4fce-91bb-20c253d2d14a,1,0,b451f2fc-ced2-418a-a803-4fe99488b394,b451f2fc-ced2-418a-a803-4fe99488b394,1,0,62269222-67a7-489e-ba59-4294902275bc,62269222-67a7-489e-ba59-4294902275bc,1,0,fed1b714-a2c9-42cf-9ced-35ed895e4167,fed1b714-a2c9-42cf-9ced-35ed895e4167,1,0,6f334263-10c8-4187-9a84-d2fd1afadc48,6f334263-10c8-4187-9a84-d2fd1afadc48,1,0,f5674a0d-a106-4cc0-a402-b378280eab3d,f5674a0d-a106-4cc0-a402-b378280eab3d,1,0,9a68a81b-c6bd-4353-baf4-da8a21f98fb9,9a68a81b-c6bd-4353-baf4-da8a21f98fb9,1,0,8db2b1d8-c415-4846-bd1a-9fec1b105ff0,8db2b1d8-c415-4846-bd1a-9fec1b105ff0,1,0,3ed20a3b-031c-4f2b-a66a-14cceed80407,3ed20a3b-031c-4f2b-a66a-14cceed80407,1,0,3831a5d8-12d5-4730-ac2e-e11f084dc684,3831a5d8-12d5-4730-ac2e-e11f084dc684,1,0,b6dce793-c652-48de-b2da-1dc3e89e1521,b6dce793-c652-48de-b2da-1dc3e89e1521,1,0,41990cad-a43e-46fd-b9bc-e8acc1d6e937,41990cad-a43e-46fd-b9bc-e8acc1d6e937,1,0,3bcce139-d42e-45c2-ace8-28aa34e01a38,3bcce139-d42e-45c2-ace8-28aa34e01a38,1,0,2e6a596c-c203-48b3-af11-bf0aef0f70a1,2e6a596c-c203-48b3-af11-bf0aef0f70a1,1,0,82eb7d08-12ad-42a2-9257-91b93f7cc890,82eb7d08-12ad-42a2-9257-91b93f7cc890,1,0,50754c7d-9c8a-497c-a4c8-76d7400b3412,50754c7d-9c8a-497c-a4c8-76d7400b3412,1,0,193f2d79-83a7-4044-89c6-0b5d7c7cf80a,193f2d79-83a7-4044-89c6-0b5d7c7cf80a,1,0,93070fc1-4204-43b7-b8eb-1bf905f5fa3f,93070fc1-4204-43b7-b8eb-1bf905f5fa3f,1,0,d29ba846-bc42-4364-b69d-4b56532920e0,d29ba846-bc42-4364-b69d-4b56532920e0,1,0,83239cd4-50cb-4281-8be3-fd89e410c15c,83239cd4-50cb-4281-8be3-fd89e410c15c,1,0,fa99302b-3e86-4330-b9ff-c38d933f81f0,fa99302b-3e86-4330-b9ff-c38d933f81f0,1,0,fb9c08ee-92e9-4bd9-8794-ef0f221eee99,fb9c08ee-92e9-4bd9-8794-ef0f221eee99,1,0,e4cd44e6-1255-490f-96d9-f805ac92cf67,e4cd44e6-1255-490f-96d9-f805ac92cf67,1,0,8ae9be37-cda5-4b66-8a97-5e77d2a2c75f,8ae9be37-cda5-4b66-8a97-5e77d2a2c75f,1,0,5a9011fc-c023-47fb-a999-2c6ca33a04b9,5a9011fc-c023-47fb-a999-2c6ca33a04b9,1,0,ab574fa5-0730-4456-b741-111e5ea8a896,ab574fa5-0730-4456-b741-111e5ea8a896,1,0,b8d5adf0-dc2f-4041-bc97-cb2442f00054,b8d5adf0-dc2f-4041-bc97-cb2442f00054,1,0,398199c4-4830-48e9-89c5-45c2c5a30ee6,398199c4-4830-48e9-89c5-45c2c5a30ee6,1,0,546ba3bb-4614-423f-954c-466530f42784,546ba3bb-4614-423f-954c-466530f42784,1,0,e5bc54f0-d7d0-471c-adda-a0e73e0dd3cf,e5bc54f0-d7d0-471c-adda-a0e73e0dd3cf,1,0,af447f33-ef41-4eda-96ec-5bac26fff33e,af447f33-ef41-4eda-96ec-5bac26fff33e,1,0,f0c83fc5-6e9a-4185-ab43-2b419ace7909,f0c83fc5-6e9a-4185-ab43-2b419ace7909,1,0,4bd15718-6a0e-4a86-921a-09d38ba4be4c,4bd15718-6a0e-4a86-921a-09d38ba4be4c,1,0,32586ba6-8922-4321-b134-70d1b77a16a4,32586ba6-8922-4321-b134-70d1b77a16a4,1,0,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,1,0,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,1,0,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,1,0,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,1,0,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,1,0,fc67b510-3fb4-4305-92d2-c252bc718f03,fc67b510-3fb4-4305-92d2-c252bc718f03,1,0,ed98a7b2-ad31-401f-a65e-dfbcc8e5a4a8,ed98a7b2-ad31-401f-a65e-dfbcc8e5a4a8,1,0,9a5e3d2c-ab69-4f9d-a56f-20bb5f0be1e2,9a5e3d2c-ab69-4f9d-a56f-20bb5f0be1e2,1,0,cf1f7915-94ad-47e7-8676-73271d0cf71e,cf1f7915-94ad-47e7-8676-73271d0cf71e,1,0,fceb6e4a-bd51-4193-a542-70d2317af669,fceb6e4a-bd51-4193-a542-70d2317af669,1,0,f9f991a6-ddf3-4953-8a1f-e6c0e1a7f4e9,f9f991a6-ddf3-4953-8a1f-e6c0e1a7f4e9,1,0,80847d57-1795-46c7-a106-926e1f43ac1e,80847d57-1795-46c7-a106-926e1f43ac1e,1,0,38685415-dc87-48b4-8cc4-f85b438f2ec2,38685415-dc87-48b4-8cc4-f85b438f2ec2,1,0,110eff8b-aeec-4ba5-b710-fefc1bd60284,110eff8b-aeec-4ba5-b710-fefc1bd60284,1,0,0a8a6bb9-8b6a-43cf-9d46-b18a8a9591d8,0a8a6bb9-8b6a-43cf-9d46-b18a8a9591d8,1,0,75eca481-002b-4046-898d-dfac9357611f,75eca481-002b-4046-898d-dfac9357611f,1,0,0110decc-d06e-43cf-9d01-30d412edcdd7,0110decc-d06e-43cf-9d01-30d412edcdd7,1,0,3ea32a24-d37b-4fad-937a-9d1357d649a9,3ea32a24-d37b-4fad-937a-9d1357d649a9,1,0,2856ee9a-0fea-4684-b7b8-4844773eae07,2856ee9a-0fea-4684-b7b8-4844773eae07,1,0,84e09840-8d67-416f-87a2-7f03c04180c9,84e09840-8d67-416f-87a2-7f03c04180c9,1,0,0388f22d-f91d-45c9-a8ae-900a24cbfe67,0388f22d-f91d-45c9-a8ae-900a24cbfe67,1,0,60fa2562-4914-46d6-a00a-1bb6e2803263,60fa2562-4914-46d6-a00a-1bb6e2803263,1,0,0d61a8d4-2dc8-435e-a238-416d7640576f,0d61a8d4-2dc8-435e-a238-416d7640576f,1,0,5ea899d4-e076-4a1c-838c-e369abc4705f,5ea899d4-e076-4a1c-838c-e369abc4705f,1,0,f2bf5f4a-e53b-4300-bbc7-97ac2e06f3c2,f2bf5f4a-e53b-4300-bbc7-97ac2e06f3c2,1,0,ab2e75f0-8da7-4b38-8f30-537424b719db,ab2e75f0-8da7-4b38-8f30-537424b719db,1,0,db344a42-61b8-4544-9aa1-8840ab8a70f0,db344a42-61b8-4544-9aa1-8840ab8a70f0,1,0,bd029e3f-a6bd-4be9-81f3-f3ea84f424ce,bd029e3f-a6bd-4be9-81f3-f3ea84f424ce,1,0,043bd776-5a7b-45ff-8b4a-5eed2bba0054,043bd776-5a7b-45ff-8b4a-5eed2bba0054,1,0,6a708860-e3b6-46ea-bea5-0d3e426c72f6,6a708860-e3b6-46ea-bea5-0d3e426c72f6,1,0,7c9e30d0-4a25-4d1d-a5ad-c48b231f453c,7c9e30d0-4a25-4d1d-a5ad-c48b231f453c,1,0,f53a3a46-edad-4cc0-8814-3755c2ea2c03,f53a3a46-edad-4cc0-8814-3755c2ea2c03,1,0,0a60b201-23f7-483b-ac16-5d270f32344e,0a60b201-23f7-483b-ac16-5d270f32344e,1,0,78058cd3-eb56-483c-96f5-1bf8883abc76,78058cd3-eb56-483c-96f5-1bf8883abc76,1,0,cd1fbfdd-d05e-4c22-aa04-83e9d36fb557,cd1fbfdd-d05e-4c22-aa04-83e9d36fb557,1,0,b67fb4f8-e895-4a8e-9230-31bc5cde4953,b67fb4f8-e895-4a8e-9230-31bc5cde4953,1,0,f3c9fde1-6d0e-4319-a798-ed8e330750de,f3c9fde1-6d0e-4319-a798-ed8e330750de,1,0,50d1bd75-3523-41c0-8da1-500731c0872b,50d1bd75-3523-41c0-8da1-500731c0872b,1,0,1a8d3872-6e19-4a49-b0ea-b120b6c09d7f,1a8d3872-6e19-4a49-b0ea-b120b6c09d7f,1,0,ab1efcef-f81b-45e5-893d-56e75c1e0a6f,ab1efcef-f81b-45e5-893d-56e75c1e0a6f,1,0,bbefbf22-6d11-4639-b53e-b72e94ff307c,bbefbf22-6d11-4639-b53e-b72e94ff307c,1,0,dca6a730-8a3f-4b78-926b-2287e21a25a1,dca6a730-8a3f-4b78-926b-2287e21a25a1,1,0,bdec80e6-4aef-4603-98dc-3332abda955c,bdec80e6-4aef-4603-98dc-3332abda955c,1,0,8be7adcd-b49a-4192-9f62-e0b0089b0386,8be7adcd-b49a-4192-9f62-e0b0089b0386,1,0,e4e8e36b-6060-43f3-8b05-bbbf61c3decc,e4e8e36b-6060-43f3-8b05-bbbf61c3decc,1,0,a53447c8-0299-4cf0-a6f9-5a3af423be38,a53447c8-0299-4cf0-a6f9-5a3af423be38,1,0,4f8a2980-bdb4-4a4f-82ec-2822dc1adc49,4f8a2980-bdb4-4a4f-82ec-2822dc1adc49,1,0,91b5a3ca-5f7b-462d-b322-ab8e938add40,91b5a3ca-5f7b-462d-b322-ab8e938add40,1,0,8db8d80c-bf04-4252-8371-46a1dd7e2720,8db8d80c-bf04-4252-8371-46a1dd7e2720,1,0,6fdb4b65-1caf-4472-8135-c6a479bda6d4,6fdb4b65-1caf-4472-8135-c6a479bda6d4,1,0,b5a8b32f-8f8d-4e13-9113-94e66f5c9621,b5a8b32f-8f8d-4e13-9113-94e66f5c9621,1,0,9b8cf6f0-2b56-4954-b982-db18ad78c5ef,9b8cf6f0-2b56-4954-b982-db18ad78c5ef,1,0,1e869478-9bff-4854-9f9c-699b7d1c8faa,1e869478-9bff-4854-9f9c-699b7d1c8faa,1,0,b8fe43d1-b9a7-4ec1-94bd-1e7fad424f8d,b8fe43d1-b9a7-4ec1-94bd-1e7fad424f8d,1,0,f64089ee-72dd-4fcf-8926-31e95c6fcf77,f64089ee-72dd-4fcf-8926-31e95c6fcf77,1,0,5d93aea8-3f41-4e77-bed5-4b2377cbfe0e,5d93aea8-3f41-4e77-bed5-4b2377cbfe0e,1,0,e1e151cc-7b8a-4125-804f-c902a522ed81,e1e151cc-7b8a-4125-804f-c902a522ed81,1,0,f475494e-fe94-4902-b2da-3ade01eba5bb,f475494e-fe94-4902-b2da-3ade01eba5bb,1,0,fbb814b2-cb2f-474d-9c96-5571cef3030e,fbb814b2-cb2f-474d-9c96-5571cef3030e,1,0,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,1,0,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,1,0,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,1,0,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,1,0,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,1,0,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,1,0,7bf36370-3761-4fd5-bea5-90fa142a9d57,7bf36370-3761-4fd5-bea5-90fa142a9d57,1,0,3b81427f-cf64-4a5e-adb3-5415d515fecd,3b81427f-cf64-4a5e-adb3-5415d515fecd,1,0,e9f2b604-7181-476d-8b34-3a544cbb353d,e9f2b604-7181-476d-8b34-3a544cbb353d,1,0,73773919-d01c-41dd-bb31-9c66648ac0ff,73773919-d01c-41dd-bb31-9c66648ac0ff,1,0,5d1afad0-3d7e-4214-b52a-72c184490084,5d1afad0-3d7e-4214-b52a-72c184490084,1,0,5f7901a1-f992-42fa-9ddb-d63574da3b56,5f7901a1-f992-42fa-9ddb-d63574da3b56,1,0,26abd45a-12b3-4312-88fb-53c90a6e6679,26abd45a-12b3-4312-88fb-53c90a6e6679,1,0,1541ad74-3e73-4699-bccf-c13313fbedfe,1541ad74-3e73-4699-bccf-c13313fbedfe,1,0,1037ecb7-6819-4ba2-8c93-eccbbdf825be,1037ecb7-6819-4ba2-8c93-eccbbdf825be,1,0,1f03420b-0480-451a-9263-8431ff0b0c73,1f03420b-0480-451a-9263-8431ff0b0c73,1,0,2bf547e4-d295-4f69-9dbf-9a9d91b2db98,2bf547e4-d295-4f69-9dbf-9a9d91b2db98,1,0,46506a80-495e-4f06-a191-54ccf5d6cc3f,46506a80-495e-4f06-a191-54ccf5d6cc3f,1,0,b9788ea3-b910-4b5b-96c3-921d62745b6e,b9788ea3-b910-4b5b-96c3-921d62745b6e,1,0,0646de72-49fd-466d-af0f-843bfa527049,0646de72-49fd-466d-af0f-843bfa527049,1,0,7c3463c8-ea36-415a-8e9d-dc7bd927b9d1,7c3463c8-ea36-415a-8e9d-dc7bd927b9d1,1,0,260f4fb1-02cb-4c32-ba4b-5aa202cd0311,260f4fb1-02cb-4c32-ba4b-5aa202cd0311,1,0,be2b4dba-e77e-4947-bd2f-0710b357ca2a,be2b4dba-e77e-4947-bd2f-0710b357ca2a,1,0,df750e63-50fc-4085-b8b8-f05e4751ff51,df750e63-50fc-4085-b8b8-f05e4751ff51,1,0,86182e9a-89e0-40d7-b2d7-fcd92ee42942,86182e9a-89e0-40d7-b2d7-fcd92ee42942,1,0,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,1,0,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,1,0,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,1,0,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,1,0,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,1,0,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,1,0,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,1,0,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,1,0,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,1,0,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,1,0,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,1,0,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,1,0,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,1,0,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,1,0,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,1,0,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,1,0,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,1,0,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,1,0,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,1,0,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,1,0,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,1,0,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,1,0,4770398f-8013-4d43-93ce-ec1165e40c4e,4770398f-8013-4d43-93ce-ec1165e40c4e,1,0,9a706997-90cb-430d-972c-d2bad87c4a79,9a706997-90cb-430d-972c-d2bad87c4a79,1,0,6f661660-b9c4-41d4-99a8-e08006cfe9c8,6f661660-b9c4-41d4-99a8-e08006cfe9c8,1,0,199e79fa-54d6-4748-aaaa-9c55283582a3,199e79fa-54d6-4748-aaaa-9c55283582a3,1,0,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,1,0,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,1,0,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,1,0,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,1,0,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,1,0,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,1,0,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,1,0,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,1,0,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,1,0,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,1,0,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,1,0,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,1,0,2093344a-47d4-43ac-98df-29c4dff7fca9,2093344a-47d4-43ac-98df-29c4dff7fca9,1,0,3343cb0c-0f80-4ef9-9871-3db9f2299186,3343cb0c-0f80-4ef9-9871-3db9f2299186,1,0,791d7289-b188-4120-a5f5-f5eb1fd675bf,791d7289-b188-4120-a5f5-f5eb1fd675bf,1,0,e996d749-1aa5-4fe5-b87b-3d8d06144d93,e996d749-1aa5-4fe5-b87b-3d8d06144d93,1,0,6613153f-4f81-4bac-8144-7562cce67f55,6613153f-4f81-4bac-8144-7562cce67f55,1,0,488ce902-b60e-4255-8aec-92dafd1d5dd0,488ce902-b60e-4255-8aec-92dafd1d5dd0,1,0,411779cc-de2c-4731-acc0-631a01367eb5,411779cc-de2c-4731-acc0-631a01367eb5,1,0,30794af1-3180-4ed5-b11d-ca139acb22fa,30794af1-3180-4ed5-b11d-ca139acb22fa,1,0,39aeb27d-62d2-480a-aa6b-33e2363194d1,39aeb27d-62d2-480a-aa6b-33e2363194d1,1,0,e69be74a-0e2c-4a7b-8814-ab15ab28f948,e69be74a-0e2c-4a7b-8814-ab15ab28f948,1,0,60410722-dca9-4c3a-a9c4-33fcd45fe584,60410722-dca9-4c3a-a9c4-33fcd45fe584,1,0,3f200f5a-01bd-4304-9c57-18703cac9ec9,3f200f5a-01bd-4304-9c57-18703cac9ec9,1,0,aa89881f-f111-4384-911c-847b04bb56dd,aa89881f-f111-4384-911c-847b04bb56dd,1,0,444d9e3b-c702-4ad6-a929-a220eff0f6e7,444d9e3b-c702-4ad6-a929-a220eff0f6e7,1,0,022c4519-1cdb-45b6-a699-89fd6688999c,022c4519-1cdb-45b6-a699-89fd6688999c,1,0,fb5b79a2-caec-4c6e-a112-27e78a184d5e,fb5b79a2-caec-4c6e-a112-27e78a184d5e,1,0,fa523958-ce1e-42e1-ae00-2dcb401b7eda,fa523958-ce1e-42e1-ae00-2dcb401b7eda,1,0,1518bca2-a004-4566-8991-7c60e6745a49,1518bca2-a004-4566-8991-7c60e6745a49,1,0,ed8618e2-3ce6-4956-856a-9f40279b4da6,ed8618e2-3ce6-4956-856a-9f40279b4da6,1,0,733f6bc2-544d-4fac-bca8-11b981b95a03,733f6bc2-544d-4fac-bca8-11b981b95a03,1,0,3d140a17-40b4-46a7-a846-78f2f77d49f2,3d140a17-40b4-46a7-a846-78f2f77d49f2,1,0,965646a5-5e5b-49cd-864a-c3870844cfdb,965646a5-5e5b-49cd-864a-c3870844cfdb,1,0,27c88cf7-c0ed-44af-bb70-f14269ce1e87,27c88cf7-c0ed-44af-bb70-f14269ce1e87,1,0,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,1,0,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,1,0,25451a36-c842-44a5-94f4-7e540050b825,25451a36-c842-44a5-94f4-7e540050b825,1,0,8e0340c9-6469-4fc9-b19a-4be4e0e6ee82,8e0340c9-6469-4fc9-b19a-4be4e0e6ee82,1,0,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,1,0,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,1,0,e1e9862e-c87b-400f-bca1-b1380cb98ddc,e1e9862e-c87b-400f-bca1-b1380cb98ddc,1,0,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,1,0,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,1,0,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,1,0,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,1,0,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,1,0,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,1,0,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,1,0,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,1,0,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,1,0,0db78226-37d0-4016-b4c9-5134af1aabc7,0db78226-37d0-4016-b4c9-5134af1aabc7,1,0,8d6b4d23-a260-4352-9975-c13ce3e05220,8d6b4d23-a260-4352-9975-c13ce3e05220,1,0,e0be0bc7-def6-4ae9-9a33-9689aa829b5e,e0be0bc7-def6-4ae9-9a33-9689aa829b5e,1,0,97d4ffd0-07ef-4dc2-8fbc-449c3c8453ef,97d4ffd0-07ef-4dc2-8fbc-449c3c8453ef,1,0,6f5ac40b-ea22-47cf-acf2-614406669a72,6f5ac40b-ea22-47cf-acf2-614406669a72,1,0,b6caaa9e-a9d1-4519-a61f-7fa0ab0ff201,b6caaa9e-a9d1-4519-a61f-7fa0ab0ff201,1,0,488d2644-6fef-488a-af38-40f59c0e0d8c,488d2644-6fef-488a-af38-40f59c0e0d8c,1,0,5d76a28c-5d6c-49cb-8b91-2527e8d06aba,5d76a28c-5d6c-49cb-8b91-2527e8d06aba,1,0,688d86cd-1044-4b77-bb63-2c05aaafbcd0,688d86cd-1044-4b77-bb63-2c05aaafbcd0,1,0,f1efef30-8651-4728-becd-abe3f9026a43,f1efef30-8651-4728-becd-abe3f9026a43,1,0,c2612e22-4f0d-4713-b4eb-decd9780d088,c2612e22-4f0d-4713-b4eb-decd9780d088,1,0,11b1410f-8e14-4b2f-8890-177f4875020e,11b1410f-8e14-4b2f-8890-177f4875020e,1,0,2276b2b0-1705-4014-956f-5087e9dd5c1e,2276b2b0-1705-4014-956f-5087e9dd5c1e,1,0,f72b9d4b-7196-45a3-9349-e32fc91e875a,f72b9d4b-7196-45a3-9349-e32fc91e875a,1,0,6c509dcc-4529-4ac3-86fe-26f807991b1c,6c509dcc-4529-4ac3-86fe-26f807991b1c,1,0,529c8887-f691-4ba8-aeaf-937858d61c30,529c8887-f691-4ba8-aeaf-937858d61c30,1,0,43435d30-8c25-4757-9a29-9173415959ff,43435d30-8c25-4757-9a29-9173415959ff,1,0,4aef5419-7cf5-4443-b773-9273c983844f,4aef5419-7cf5-4443-b773-9273c983844f,1,0,b090cfa5-1bd8-43aa-84d6-6e04375c4b57,b090cfa5-1bd8-43aa-84d6-6e04375c4b57,1,0,2bb5c23c-ad87-4b66-b766-d2e3f82715bd,2bb5c23c-ad87-4b66-b766-d2e3f82715bd,1,0,d01871bb-492e-4ab8-ada9-e9d8ec1adbce,d01871bb-492e-4ab8-ada9-e9d8ec1adbce,1,0,dd931c85-8c19-42a8-a39e-7af0c5bd346c,dd931c85-8c19-42a8-a39e-7af0c5bd346c,1,0,4fa153eb-1efb-43e5-ac09-e5431d4800df,4fa153eb-1efb-43e5-ac09-e5431d4800df,1,0,ada760f3-6a9f-4b81-afc1-98eb164af747,ada760f3-6a9f-4b81-afc1-98eb164af747,1,0,262dea64-4ccd-4b97-ac7e-ec1dbdd9ac98,262dea64-4ccd-4b97-ac7e-ec1dbdd9ac98,1,0,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,1,0,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,1,0,a8e14d2e-911d-4096-9027-deb7a08838e0,a8e14d2e-911d-4096-9027-deb7a08838e0,1,0,c51d8ae2-66fe-4052-8ee4-980855b1f90c,c51d8ae2-66fe-4052-8ee4-980855b1f90c,1,0,27610803-846f-40bd-b817-f73708f1fdb7,27610803-846f-40bd-b817-f73708f1fdb7,1,0,4e2a3873-0317-44be-8dbb-e4cefc0361a8,4e2a3873-0317-44be-8dbb-e4cefc0361a8,1,0,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,1,0,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,1,0,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,1,0,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,1,0,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,1,0,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,1,0,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,1,0,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,1,0,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,1,0,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,1,0,d5b23aac-ea1c-497e-bed7-8685bb682e36,d5b23aac-ea1c-497e-bed7-8685bb682e36,1,0,2b37c085-7c70-4004-93d3-24418b7b3ef2,2b37c085-7c70-4004-93d3-24418b7b3ef2,1,0,6da15163-dd4c-4981-82e8-ad3bd2f516aa,6da15163-dd4c-4981-82e8-ad3bd2f516aa,1,0,e3000fff-aaba-4396-8026-768108ea8f2b,e3000fff-aaba-4396-8026-768108ea8f2b,1,0,1fc05949-c1ba-4363-8353-6902bc041021,1fc05949-c1ba-4363-8353-6902bc041021,1,0,d6e61d59-fe83-4a9e-aa15-e072a39fd8fd,d6e61d59-fe83-4a9e-aa15-e072a39fd8fd,1,0,614fc08c-78b6-4d49-9488-05fcf9b76d58,614fc08c-78b6-4d49-9488-05fcf9b76d58,1,0,d983cae8-edbb-4f26-9c0a-2f701cb11046,d983cae8-edbb-4f26-9c0a-2f701cb11046,1,0,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,1,0,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,1,0,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,1,0,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,1,0,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,1,0,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,1,0,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,1,0,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,1,0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1,0,b50f3157-3c3a-4553-a16a-7fcd660e2824,b50f3157-3c3a-4553-a16a-7fcd660e2824,1,0,19858faf-2bc5-4cfb-b258-cb101ab66e87,19858faf-2bc5-4cfb-b258-cb101ab66e87,1,0,f779f4a1-1fab-46d4-8043-ac25c247d361,f779f4a1-1fab-46d4-8043-ac25c247d361,1,0,308358bc-773a-43fa-adff-dcc5884a2bd4,308358bc-773a-43fa-adff-dcc5884a2bd4,1,0,ed541a1c-a842-40a9-b357-612db71ec32c,ed541a1c-a842-40a9-b357-612db71ec32c,1,0,b0e37495-7d9e-41d0-8225-652f9ac328cf,b0e37495-7d9e-41d0-8225-652f9ac328cf,1,0,3bd2e1c8-9ef3-449b-acf6-397b90669c49,3bd2e1c8-9ef3-449b-acf6-397b90669c49,1,0,cb334191-2ff3-439e-bdaf-4b8fe6561c3b,cb334191-2ff3-439e-bdaf-4b8fe6561c3b,1,0,f9865a2a-50e3-4f9c-a509-319be62dc468,f9865a2a-50e3-4f9c-a509-319be62dc468,1,0,5f3a30b0-1ba8-423c-9bc2-f9a87cafe818,5f3a30b0-1ba8-423c-9bc2-f9a87cafe818,1,0,766d8852-3bb4-4a6c-81c0-911722af4e8e,766d8852-3bb4-4a6c-81c0-911722af4e8e,1,0,f6dae699-06eb-41ef-878b-3fdfe1b1f213,f6dae699-06eb-41ef-878b-3fdfe1b1f213,1,0,fe6de86a-54c9-4ae2-9f17-cfce38b7b560,fe6de86a-54c9-4ae2-9f17-cfce38b7b560,1,0,911f8810-e96e-4f02-9377-47e49919f87e,911f8810-e96e-4f02-9377-47e49919f87e,1,0,cde46d6d-9f8a-45b6-98a7-9411030ccd72,cde46d6d-9f8a-45b6-98a7-9411030ccd72,1,0,ff1a4c30-03ff-4bdd-9df2-a2579aeb4157,ff1a4c30-03ff-4bdd-9df2-a2579aeb4157,1,0,224b9439-4b30-4b64-8edf-e7718ee90a7d,224b9439-4b30-4b64-8edf-e7718ee90a7d,1,0,74dc2374-daf1-4a8a-ba10-d3aced96af3b,74dc2374-daf1-4a8a-ba10-d3aced96af3b,1,0,15f1a3a8-5d42-486d-95f9-3d43ff1d5d56,15f1a3a8-5d42-486d-95f9-3d43ff1d5d56,1,0,e28e953f-93b3-4d4d-9ee4-c56df26037eb,e28e953f-93b3-4d4d-9ee4-c56df26037eb,1,0,578e0fd2-997c-437a-befc-33d128097a7e,578e0fd2-997c-437a-befc-33d128097a7e,1,0,14089231-31a8-4471-b85b-064836794ff3,14089231-31a8-4471-b85b-064836794ff3,1,0,014de276-fb2f-4deb-873f-475729be0f66,014de276-fb2f-4deb-873f-475729be0f66,1,0,40a60ff7-96ca-485b-a2d9-640a208a7de6,40a60ff7-96ca-485b-a2d9-640a208a7de6,1,0,03e6caa4-eaa2-43aa-bdd1-768f9cce7848,03e6caa4-eaa2-43aa-bdd1-768f9cce7848,1,0,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,1,0,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,1,0,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,1,0,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,1,0,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,1,0,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,1,0,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,1,0,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,1,0,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,1,0,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,1,0,feb5f490-e791-11e6-508c-a8667f21fde4,feb5f490-e791-11e6-508c-a8667f21fde4,1,0,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,1,0,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,1,0,6962f838-e792-11e6-508c-a8667f21fde4,6962f838-e792-11e6-508c-a8667f21fde4,1,0,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,1,0,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,1,0,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,1,0,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,1,0,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,1,0,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,1,0,4f2b6bf8-e792-11e6-508c-a8667f21fde4,4f2b6bf8-e792-11e6-508c-a8667f21fde4,1,0,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,1,0,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,1,0,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,1,0,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,1,0,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,1,0,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,1,0,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,1,0,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,1,0,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,1,0,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,1,0,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,1,0,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,1,0,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,1,0,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,1,0,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,1,0,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,1,0,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,1,0,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,1,0,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,1,0,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,1,0,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,1,0,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,1,0,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,1,0,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,1,0,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,1,0,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,1,0,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,1,0,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,1,0,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,1,0,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,1,0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,1,0,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,1,0,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,1,0,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,1,0,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,1,0,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,1,0,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,1,0,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,1,0,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,1,0,56d97df6-9c8b-4fc5-a7a6-52107d38dcd5,56d97df6-9c8b-4fc5-a7a6-52107d38dcd5,1,0,a0be938b-139e-41bd-b067-f5241ff68c90,a0be938b-139e-41bd-b067-f5241ff68c90,1,0,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,1,0,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,1,0,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,1,0,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1,0,8064eb3a-d56c-4517-9db0-b7300149c7c4,8064eb3a-d56c-4517-9db0-b7300149c7c4,1,0,fe926c88-d792-4db3-abcf-3c94dfdcc407,fe926c88-d792-4db3-abcf-3c94dfdcc407,1,0,b1c3a6c1-5245-4a65-8a45-13948be6f6a1,b1c3a6c1-5245-4a65-8a45-13948be6f6a1,1,0,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,1,0,e0c51555-1614-4aa7-a075-c5e1251579ba,e0c51555-1614-4aa7-a075-c5e1251579ba,1,0,c75a1c6d-fa33-4b57-b359-6253aff5f3e7,c75a1c6d-fa33-4b57-b359-6253aff5f3e7,1,0,af88ea84-5742-4c9f-9a02-6d0f25186f72,af88ea84-5742-4c9f-9a02-6d0f25186f72,1,0,51363236-c8eb-4eb7-9692-5c18edc9a5a8,51363236-c8eb-4eb7-9692-5c18edc9a5a8,1,0,e97edb4a-468d-499d-924d-aa4e5ee16548,e97edb4a-468d-499d-924d-aa4e5ee16548,1,0,24366a86-0dae-4a68-a180-d8ea7656a286,24366a86-0dae-4a68-a180-d8ea7656a286,1,0,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,1,0,3c03f78e-c904-47da-a0a1-db5d6b9f7254,3c03f78e-c904-47da-a0a1-db5d6b9f7254,1,0,3bf03ed7-6581-4a11-8fc8-748f46c8dad7,3bf03ed7-6581-4a11-8fc8-748f46c8dad7,1,0,0f28c616-162c-4dba-bd22-f7ea5d23ea5a,0f28c616-162c-4dba-bd22-f7ea5d23ea5a,1,0,39bf2771-1d8b-44bb-8d8b-54d046589ebe,39bf2771-1d8b-44bb-8d8b-54d046589ebe,1,0,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,1,0,f237a21e-066a-48e6-a5c4-5dc2487c7a3b,f237a21e-066a-48e6-a5c4-5dc2487c7a3b,1,0,8adebe50-a946-40c2-9258-b17efe787e0e,8adebe50-a946-40c2-9258-b17efe787e0e,1,0,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,1,0,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,1,0,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,1,0,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,1,0,d12c7296-36ab-41e0-83ef-143484958597,d12c7296-36ab-41e0-83ef-143484958597,1,0,2b6c3bcd-7d2a-4e95-8066-99374002689b,2b6c3bcd-7d2a-4e95-8066-99374002689b,1,0,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,1,0,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1,0,d6b72e00-018a-4fdc-b6a4-06dcecf89809,d6b72e00-018a-4fdc-b6a4-06dcecf89809,1,0,9f816562-57f0-473f-8c85-14f7521ffd7f,9f816562-57f0-473f-8c85-14f7521ffd7f,1,0,14077038-2e41-4a05-a476-99f6f88a5c29,14077038-2e41-4a05-a476-99f6f88a5c29,1,0,917b0acc-88fe-4afc-b19b-6da69e060393,917b0acc-88fe-4afc-b19b-6da69e060393,1,0,a091b76e-8ba4-4534-bbb0-9990e69b8603,a091b76e-8ba4-4534-bbb0-9990e69b8603,1,0,867ee5d2-7566-4052-a311-b56e7e46b90d,867ee5d2-7566-4052-a311-b56e7e46b90d,1,0,8f51328b-73a8-46fb-b6db-7b7a84c05c2a,8f51328b-73a8-46fb-b6db-7b7a84c05c2a,1,0,0f0f5b42-2407-44e6-85d7-26ace96b2cd9,0f0f5b42-2407-44e6-85d7-26ace96b2cd9,1,0,ffec426d-2556-46d6-b313-aeca43581865,ffec426d-2556-46d6-b313-aeca43581865,1,0,f32e0941-2061-4e12-bdae-fcb65f91ac28,f32e0941-2061-4e12-bdae-fcb65f91ac28,1,0,6f0e0f44-db5a-4a13-9131-866b77b90f14,6f0e0f44-db5a-4a13-9131-866b77b90f14,1,0,9415e0aa-391f-4798-ad7d-3b854a756de8,9415e0aa-391f-4798-ad7d-3b854a756de8,1,0,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,1,0,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,1,0,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,1,0,1813c469-da20-46a6-8947-6815b66f64c1,1813c469-da20-46a6-8947-6815b66f64c1,1,0,64e702e9-8934-4356-a1b2-be0e8b390630,64e702e9-8934-4356-a1b2-be0e8b390630,1,0,74880ac4-bdd3-48e6-82a0-a2103da42723,74880ac4-bdd3-48e6-82a0-a2103da42723,1,0,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,1,0,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,1,0,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,1,0,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,1,0,ddc6761c-a32a-41e1-b110-fdc39ad440d3,ddc6761c-a32a-41e1-b110-fdc39ad440d3,1,0,0b322ee2-b018-4d00-8f05-62ee16e519ff,0b322ee2-b018-4d00-8f05-62ee16e519ff,1,0,0866e282-055a-49bb-9aa5-b1af7c74c344,0866e282-055a-49bb-9aa5-b1af7c74c344,1,0,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,1,0,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,1,0,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,1,0,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,1,0,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,1,0,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,1,0,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,1,0,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,1,0,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,1,0,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,1,0,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,1,0,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,1,0,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,1,0,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,1,0,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,1,0,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,1,0,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,1,0,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,1,0,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,1,0,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,1,0,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,1,0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,1,0,71102d3f-f020-4d6f-9582-9a7eefb4e797,71102d3f-f020-4d6f-9582-9a7eefb4e797,1,0,53ef6849-a3f3-4171-9167-f349f2d6a736,53ef6849-a3f3-4171-9167-f349f2d6a736,1,0,3f588bd3-d461-42b7-8ab1-386af6399d56,3f588bd3-d461-42b7-8ab1-386af6399d56,1,0,c04ff85e-b4af-4a9f-b0e9-c5c65e3d10a1,c04ff85e-b4af-4a9f-b0e9-c5c65e3d10a1,1,0,8c576405-29c1-46b1-ab2e-40e52c21cab0,8c576405-29c1-46b1-ab2e-40e52c21cab0,1,0,b33a89da-8589-4902-83fa-6545e5fce23e,b33a89da-8589-4902-83fa-6545e5fce23e,1,0,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,1,0,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,1,0,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,1,0,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,1,0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,1,0,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,1,0,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,1,0,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,1,0,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,1,0,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,1,0,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,1,0,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,1,0,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,1,0,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,1,0,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,1,0,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,1,0,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,1,0,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,1,0,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,1,0,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,1,0,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,1,0,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,1,0,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,1,0,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,1,0,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,1,0,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,1,0,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,1,0,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,1,0,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,1,0,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,1,0,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,1,0,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,1,0,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,1,0,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,1,0,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/ДанныеДляИзмененияМультиязычныхРеквизитов/ManagerModule.bsl b/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ValueManagerModule.bsl b/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ДанныеДляИзмененияМультиязычныхРеквизитов.mdo b/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ДанныеДляИзмененияМультиязычныхРеквизитов.mdo new file mode 100644 index 000000000..cf14a9dbb --- /dev/null +++ b/SSL/src/Constants/ДанныеДляИзмененияМультиязычныхРеквизитов/ДанныеДляИзмененияМультиязычныхРеквизитов.mdo @@ -0,0 +1,20 @@ + + + + + + + + ДанныеДляИзмененияМультиязычныхРеквизитов + + ru + Данные для изменения мультиязычных реквизитов + + + ValueStorage + + true + + + Managed + diff --git a/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl index a8cbbfb91..1cbe7d72d 100644 --- a/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl +++ b/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl @@ -38,6 +38,8 @@ Возврат; КонецЕсли; + Константы.ИспользоватьГруппыВнешнихПользователей.Обновить(); + Если ЗначениеИзменено Тогда ПользователиСлужебный.ОбновитьРолиВнешнихПользователей(); Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда diff --git a/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ManagerModule.bsl b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ManagerModule.bsl new file mode 100644 index 000000000..c89a1bc1e --- /dev/null +++ b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ManagerModule.bsl @@ -0,0 +1,33 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +Процедура Обновить() Экспорт + + ТекущееЗначение = Константы.ИспользоватьГруппыВнешнихПользователей.Получить(); + ВычисленноеЗначение = ВычисленноеЗначение(); + + Если ТекущееЗначение <> ВычисленноеЗначение Тогда + Константы.ИспользоватьГруппыВнешнихПользователей.Установить(ВычисленноеЗначение); + КонецЕсли; + +КонецПроцедуры + +Функция ВычисленноеЗначение() Экспорт + + Возврат Константы.ИспользоватьВнешнихПользователей.Получить() + И Константы.ИспользоватьГруппыПользователей.Получить(); + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ValueManagerModule.bsl new file mode 100644 index 000000000..f0f34ee40 --- /dev/null +++ b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ValueManagerModule.bsl @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Значение = Константы.ИспользоватьГруппыВнешнихПользователей.ВычисленноеЗначение(); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo new file mode 100644 index 000000000..09daabe25 --- /dev/null +++ b/SSL/src/Constants/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo @@ -0,0 +1,19 @@ + + + + + + + + ИспользоватьГруппыВнешнихПользователей + + ru + Использовать группы внешних пользователей + + + Boolean + + + + Managed + diff --git a/SSL/src/Constants/ИспользоватьГруппыПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьГруппыПользователей/ValueManagerModule.bsl new file mode 100644 index 000000000..3fa32aea9 --- /dev/null +++ b/SSL/src/Constants/ИспользоватьГруппыПользователей/ValueManagerModule.bsl @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Константы.ИспользоватьГруппыВнешнихПользователей.Обновить(); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Constants/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo b/SSL/src/Constants/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo new file mode 100644 index 000000000..8c7f6b952 --- /dev/null +++ b/SSL/src/Constants/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo @@ -0,0 +1,19 @@ + + + + + + + + ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста + + ru + Использовать оптимизированную запись создания автономного рабочего места + + + Boolean + + + + Managed + diff --git a/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl index 15e0830c0..95f8b2685 100644 --- a/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl +++ b/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl @@ -41,9 +41,14 @@ Если Значение Тогда Константы.НеИспользоватьРазделениеПоОбластямДанных.Установить(Ложь); - Константы.ЭтоАвтономноеРабочееМесто.Установить(Ложь); + Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда + + МодульАвтономнаяРабота = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ВыключитьСвойствоИБ(); + + КонецЕсли; - ИначеЕсли Константы.ЭтоАвтономноеРабочееМесто.Получить() Тогда + ИначеЕсли ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда Константы.НеИспользоватьРазделениеПоОбластямДанных.Установить(Ложь); diff --git a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Form.form b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Form.form index 4542d9996..1378d5d3c 100644 --- a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Form.form @@ -1972,6 +1972,33 @@ UserCmds Auto
    + + ФормаИспользоватьВнутреннийКаталогСообщений + 270 + true + true + + true + + + ФормаИспользоватьВнутреннийКаталогСообщенийРасширеннаяПодсказка + 271 + Label + true + true + + Left + + + Form.Command.ИспользоватьВнутреннийКаталогСообщений + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left @@ -2575,6 +2602,19 @@ + + ИспользоватьКаталогСообщенийОбменаДанными + 20 + + Boolean + + + true + + + true + + СохранитьXML @@ -2749,6 +2789,24 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ИспользоватьВнутреннийКаталогСообщений</name> + <title> + <key>ru</key> + <value>Использовать внутренний каталог сообщений</value> + + 10 + + true + + + + ИспользоватьВнутреннийКаталогСообщений + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Module.bsl index 662346da2..c2e589358 100644 --- a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Forms/Форма/Module.bsl @@ -246,7 +246,6 @@ КонецПроцедуры - &НаКлиенте Процедура СохранитьXML(Команда) АдресФайлаВХранилище = СохранитьXMLНаСервере(); @@ -311,6 +310,7 @@ Процедура ВключитьРежимРазработчика(Команда) РежимРазработчика = Не РежимРазработчика; + ИспользоватьКаталогСообщенийОбменаДанными = ?(РежимРазработчика, ИспользоватьКаталогСообщенийОбменаДанными, Ложь); ИсточникЗагрузки = ?(РежимРазработчика, ИсточникЗагрузки, 0); МестоВыгрузки = ?(РежимРазработчика, МестоВыгрузки, 0); Объект.ИсточникВыгрузки = ?(РежимРазработчика, Объект.ИсточникВыгрузки, "Отбор"); @@ -318,6 +318,14 @@ КонецПроцедуры +&НаКлиенте +Процедура ИспользоватьВнутреннийКаталогСообщений(Команда) + + Элементы.ФормаИспользоватьВнутреннийКаталогСообщений.Пометка = НЕ Элементы.ФормаИспользоватьВнутреннийКаталогСообщений.Пометка; + ИспользоватьКаталогСообщенийОбменаДанными = Элементы.ФормаИспользоватьВнутреннийКаталогСообщений.Пометка; + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -543,18 +551,34 @@ Функция ЗагрузитьДанныеНаСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); + СтруктураПараметров = Новый Структура; Если ИсточникЗагрузки = 1 Тогда + СтруктураПараметров.Вставить("ТекстXML", ДанныеДляЗагрузкиXDTO); + Иначе + ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки); // ДвоичныеДанные - АдресНаСервере = ПолучитьИмяВременногоФайла("xml"); - // Удаление временного файла происходит не через УдалитьФайлы(АдресНаСервере) в этой функции, - // а через УдалитьФайлы(АдресНаСервере) в процедуре ЗагрузкаСообщения модуля обработки. + Если ИспользоватьКаталогСообщенийОбменаДанными = Истина Тогда + + КаталогВременногоХранилищаФайлов = ОбменДаннымиПовтИсп.КаталогВременногоХранилищаФайлов(); + АдресНаСервере = КаталогВременногоХранилищаФайлов + "\" + Строка(Новый УникальныйИдентификатор) + ".xml"; + + Иначе + + АдресНаСервере = ПолучитьИмяВременногоФайла("xml"); + // Удаление временного файла происходит не через УдалитьФайлы(АдресНаСервере) в этой функции, + // а через УдалитьФайлы(АдресНаСервере) в процедуре ЗагрузкаСообщения модуля обработки. + + КонецЕсли; + ДвоичныеДанные.Записать(АдресНаСервере); УдалитьИзВременногоХранилища(АдресФайлаЗагрузки); СтруктураПараметров.Вставить("АдресНаСервере", АдресНаСервере); + КонецЕсли; + СтруктураПараметров.Вставить("ПутьКМенеджеруОбменаЗагрузки", ОбработкаОбъект.ПутьКМенеджеруОбменаЗагрузки); СтруктураПараметров.Вставить("ВерсияФормата", ОбработкаОбъект.ВерсияФормата); СтруктураПараметров.Вставить("ЭтоФоновоеЗадание", Истина); @@ -566,7 +590,6 @@ ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Ложь); ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; - МодульДлительныеОперации = ОбщегоНазначения.ОбщийМодуль("ДлительныеОперации"); ПараметрыВыполнения = МодульДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); @@ -772,6 +795,7 @@ Элементы.ПутьКФайлуВыгрузки.Видимость = МестоВыгрузки <> 1; Элементы.ВыгрузкаОсновное.ОтображениеСтраниц = ?(МестоВыгрузки = 1, ОтображениеСтраницФормы.ЗакладкиСверху, ОтображениеСтраницФормы.Нет); Иначе + Элементы.ФормаИспользоватьВнутреннийКаталогСообщений.Видимость = РежимРазработчика; Элементы.ПутьКМенеджеруОбменаЗагрузки.Видимость = РежимРазработчика И Не РазделениеВключено; Элементы.ИсточникЗагрузки.Видимость = РежимРазработчика; Элементы.ГруппаДанныеДляЗагрузки.Видимость = (ИсточникЗагрузки = 1); diff --git a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Help/ru.html b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Help/ru.html index 9a2e110b5..64bf46475 100644 --- a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Help/ru.html +++ b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/Help/ru.html @@ -18,4 +18,9 @@

    Режим можно включить с помощью кнопки Еще. Предоставляет следующие дополнительные возможности:

    1. Выгрузка и загрузка данных из текста. В этом случае в качестве источника и получателя данных служит не файл, а текстовое поле расположенное на форме. Данный режим удобен, если данных немного, и результат выгрузки удобно перенести в обработку загрузки через буфер обмена.
    2. Использование внешних модулей обмена через универсальный формат. Для этих целей следует указать путь к внешней обработке, в модуле которой расположен внешний модуль менеджера обмена. -
    3. Выгрузка данных, зарегистрированных на узле плана обмена. Для этих целей следует указать Узел обмена при выгрузке. В этом случае настройки состава выгружаемых данных и настройка отбора недоступны.
    \ No newline at end of file +
  • Выгрузка данных, зарегистрированных на узле плана обмена. Для этих целей следует указать Узел обмена при выгрузке. В этом случае настройки состава выгружаемых данных и настройка отбора недоступны.
  • +
  • В режиме разработчика администратору информационной базы становиться доступно переопределение каталога временных файлов при загрузке сообщения. Для этого необходимо использовать опцию Для временных файлов +использовать каталог сообщений обмена данными. При включении опции в качестве каталога временных файлов будет использовать каталог, который указан в константе КаталогСообщенийОбменаДаннымиДляWindows или +КаталогСообщенийОбменаДаннымиДляLinux. Администратор приложения самостоятельно контролирует заполненность константы, а так же доступность указанного каталога для пользователя, от лица которого будет выполнена загрузка данных.
  • + + \ No newline at end of file diff --git a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/ObjectModule.bsl b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/ObjectModule.bsl index d48ecf9b3..496fafa3e 100644 --- a/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ВыгрузкаЗагрузкаEnterpriseData/ObjectModule.bsl @@ -283,28 +283,49 @@ // Процедура ЗагрузкаСообщения(СтруктураПараметров, АдресРезультата) Экспорт + ЧтениеXML = Новый ЧтениеXML; + Если СтруктураПараметров.Свойство("ЭтоФоновоеЗадание") Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, СтруктураПараметров); + КонецЕсли; - ЧтениеXML = Новый ЧтениеXML; АдресНаСервере = ""; - Если СтруктураПараметров.Свойство("АдресНаСервере") Тогда + Если СтруктураПараметров.Свойство("АдресНаСервере", АдресНаСервере) Тогда + ЧтениеXML.ОткрытьФайл(СтруктураПараметров.АдресНаСервере); + Иначе + ЧтениеXML.УстановитьСтроку(СтруктураПараметров.ТекстXML); + КонецЕсли; РезультатЗагрузки = ЗагрузитьДанныеИзXML(ЧтениеXML); - ЧтениеXML.Закрыть(); - Если ЗначениеЗаполнено(АдресНаСервере) Тогда - УдалитьФайлы(АдресНаСервере); - КонецЕсли; + Попытка + + Если ЗначениеЗаполнено(АдресНаСервере) Тогда + + УдалитьФайлы(АдресНаСервере); + + КонецЕсли; + + Исключение + + СобытиеЖурнала = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(); + ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + + ЗаписьЖурналаРегистрации(СобытиеЖурнала, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); + + КонецПопытки; Если РезультатЗагрузки.ЕстьОшибки Тогда + ВызватьИсключение РезультатЗагрузки.ТекстОшибки; + КонецЕсли; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/РедактированиеФормулы/Form.form b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/РедактированиеФормулы/Form.form index cc19cb624..c212b4601 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/РедактированиеФормулы/Form.form +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/РедактированиеФормулы/Form.form @@ -1767,6 +1767,13 @@ DontUse Auto + + Формула + + String + + + diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl index afeb60b21..67de9ec70 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl @@ -71,8 +71,7 @@ Перем РедактируемыйСписок, ОтбираемыеПараметры; - СтандартнаяОбработка = Ложь; - + ОтключитьСтандартнуюОбработку = Истина; РедакторСоставаСвойстваИмяЭлемента = Элемент.Имя; Если РедакторСоставаСвойстваИмяЭлемента = Элементы.Пользователи.Имя Тогда @@ -105,10 +104,14 @@ ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.РазделениеДанныхСеанса", ПараметрыФормы, ЭтотОбъект); Возврат; Иначе - СтандартнаяОбработка = Истина; + ОтключитьСтандартнуюОбработку = Ложь; Возврат; КонецЕсли; + Если ОтключитьСтандартнуюОбработку Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РедактируемыйСписок", РедактируемыйСписок); diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html index 537f1225d..cbd24d73a 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html @@ -5,7 +5,7 @@

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

    - +
    - Ошибка;
    - Предупреждение;
    - Предупреждение;
    - Информация;
    - Информация по недоступным полям;
    - Примечание.
    Каждое событие фиксируется в отдельной строке журнала. diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl index be3fcb5b2..79094b3fc 100644 --- a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl +++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl @@ -697,12 +697,13 @@ &НаСервере Процедура УстановитьВидимостьЭлементовФормы() + Заголовок = ?(ПустаяСтрока(Параметры.Заголовок), НСтр("ru = 'Загрузка данных в справочник'"), Параметры.Заголовок); Если ОбщегоНазначения.ЭтоВебКлиент() Тогда Элементы.СтраницаВариантЗаполнениеТаблицы.Видимость = Ложь; + Элементы.ВариантЗагрузки.Видимость = Ложь; Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаВариантЗагрузкаИзФайла; - Элементы.ВариантЗагрузки.Видимость = Ложь; Элементы.ПояснениеДляВыбораСправочникаДляЗагрузки.Заголовок = НСтр("ru = 'Выбор справочника для загрузки данных из электронных таблиц, расположенных во внешних файлах | (например: Microsoft Office Excel, OpenOffice Calc и др.).'"); КонецЕсли; @@ -710,12 +711,13 @@ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными; Элементы.ГруппаНастройкиСопоставления.Видимость = Ложь; - Элементы.СписокКолонокСопоставления.Видимость = Ложь; + Элементы.СписокКолонокСопоставления.Видимость = Ложь; Элементы.Закрыть.Заголовок = НСтр("ru = 'Отмена'"); ИначеЕсли ТипЗагрузки = "ТабличнаяЧасть" Тогда Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными; Элементы.ГруппаНастройкиСопоставления.Видимость = Ложь; - Элементы.СписокКолонокСопоставления.Видимость = Ложь; + Элементы.СписокКолонокСопоставления.Видимость = Ложь; + Элементы.ГруппаИтогоНеСопоставленных.Видимость = Ложь; Иначе Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ВыборСправочникаДляЗагрузки; КонецЕсли; diff --git a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ManagerModule.bsl index 73794709b..1b4577e61 100644 --- a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ManagerModule.bsl @@ -8,7 +8,7 @@ #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда -#Область СлужебныеПроцедурыИФункции +#Область СлужебныйПрограммныйИнтерфейс // Инициализирует колонки таблицы правил регистрации объектов. // diff --git a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ObjectModule.bsl b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ObjectModule.bsl index 8f3ae63e1..195fa4279 100644 --- a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ObjectModule.bsl @@ -366,7 +366,7 @@ // Правила - ЧтениеXML - объект типа ЧтениеXML. // ДеревоЗначений - ДеревоЗначений - дерево правил регистрации объекта. // -Процедура ЗагрузитьДеревоОтбораПоСвойствамПланаОбмена(Правила, ДеревоЗначений) +Процедура ЗагрузитьДеревоОтбораПоСвойствамПланаОбмена(Правила, ДеревоЗначений) Экспорт СтрокиДЗ = ДеревоЗначений.Строки; @@ -401,7 +401,7 @@ // Правила - ЧтениеXML - объект типа ЧтениеXML. // ДеревоЗначений - ДеревоЗначений - дерево правил регистрации объекта. // -Процедура ЗагрузитьДеревоОтбораПоСвойствамОбъекта(Правила, ДеревоЗначений) +Процедура ЗагрузитьДеревоОтбораПоСвойствамОбъекта(Правила, ДеревоЗначений) Экспорт СтрокиДЗ = ДеревоЗначений.Строки; @@ -690,7 +690,7 @@ //////////////////////////////////////////////////////////////////////////////// // Компиляция правил регистрации объектов (ПРО) по свойствам Плана обмена. -Процедура ПодготовитьПравилоРегистрацииПоСвойствамПланаОбмена(ПРО) +Процедура ПодготовитьПравилоРегистрацииПоСвойствамПланаОбмена(ПРО) Экспорт ПравилоПустое = (ПРО.ОтборПоСвойствамПланаОбмена.Строки.Количество() = 0); @@ -714,7 +714,7 @@ КонецЕсли; ТекстЗапроса = ТекстВыборкиПолей + Символы.ПС - + "ИЗ" + Символы.ПС + ТекстТаблицДанных + Символы.ПС + + "ИЗ" + Символы.ПС + ТекстТаблицДанных + Символы.ПС // @query-part + "ГДЕ" + Символы.ПС + ТекстУсловия + Символы.ПС + "[ОбязательныеУсловия]"; // diff --git a/SSL/src/DataProcessors/ЗаполнениеКалендарныхГрафиков/ManagerModule.bsl b/SSL/src/DataProcessors/ЗаполнениеКалендарныхГрафиков/ManagerModule.bsl index 181233ee3..12611a630 100644 --- a/SSL/src/DataProcessors/ЗаполнениеКалендарныхГрафиков/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ЗаполнениеКалендарныхГрафиков/ManagerModule.bsl @@ -57,7 +57,7 @@ Функция ВерсияОбновленияДанныхПроизводственныхКалендарей() Экспорт - Возврат "3.1.5.279"; + Возврат "3.1.6.51"; КонецФункции diff --git a/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl index d4edbef34..816ea8672 100644 --- a/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl @@ -162,8 +162,8 @@ ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Журнал.Событие"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; СписокЗначений = Новый СписокЗначений; - СписокЗначений.Добавить(НСтр("ru = '_$Session$_.AuthenticationError'")); - СписокЗначений.Добавить(НСтр("ru = '_$Access$_.AccessDenied'")); + СписокЗначений.Добавить("_$Session$_.AuthenticationError"); + СписокЗначений.Добавить("_$Access$_.AccessDenied"); ОтборЭлемента.ПравоеЗначение = СписокЗначений; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.СобытиеОтказ); diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Form.form b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Form.form new file mode 100644 index 000000000..488198274 --- /dev/null +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Form.form @@ -0,0 +1,994 @@ + + + + <key>ru</key> + <value>Подтверждение информации</value> + + + ГруппаОшибка + 55 + + Описание + 79 + true + true + + true + + + Описание + + None + + ОписаниеРасширеннаяПодсказка + 81 + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 80 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппаТекстОшибки + 63 + + ТекстОшибки + 52 + true + true + + true + + + Текст + + None + + ТекстОшибкиРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + ТекстОшибкиКонтекстноеМеню + 53 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + true + + true + + + <key>ru</key> + <value>Подробно...</value> + + + Style.ГиперссылкаЦвет + + + ГруппаТекстОшибкиРасширеннаяПодсказка + 64 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + WeakSeparation + true + true + auto + Auto + Auto + + + + Причина + 70 + true + + true + + + Причина + + + ПричинаРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + ПричинаКонтекстноеМеню + 71 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + Решение + 73 + true + + true + + + Решение + + + РешениеРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + + РешениеКонтекстноеМеню + 74 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + СпособУстранения + 76 + true + + true + + + СпособУстранения + + + СпособУстраненияРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + + СпособУстраненияКонтекстноеМеню + 77 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + Normal + + + true + + true + + + <key>ru</key> + <value>Ошибка</value> + + 43 + + ГруппаОшибкаРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + Auto + + + + ГруппаЗаявление + 23 + + ТабличныйДокументГруппа + 21 + + ПодтверждаемаяИнформация + 1 + true + true + + true + + + ПодтверждаемаяИнформация + + None + + ПодтверждаемаяИнформацияРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + ПодтверждаемаяИнформацияКонтекстноеМеню + 2 + true + + SpreadsheetDocumentField + Enter + true + Left + true + + 80 + true + 15 + true + true + true + Special + ScrollAuto + ScrollAuto + Always + Auto + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Табличный документ группа</value> + + + ТабличныйДокументГруппаРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + + + СогласиеСПодтверждаемойИнформацией + 16 + + <key>ru</key> + <value>Подтверждаю, что данные владельца не изменились с момента выпуска продлеваемого сертификата</value> + + true + true + + true + + + СогласиеСПодтверждаемойИнформацией + + Right + 1 + + СогласиеСПодтверждаемойИнформациейРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + СогласиеСПодтверждаемойИнформациейКонтекстноеМеню + 17 + true + + CheckBoxField + Left + Enter + true + Left + true + + + true + + true + + + <key>ru</key> + <value>Заявление</value> + + + ГруппаЗаявлениеРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + ГруппаСертификат + 25 + + ДекорацияИнструкция + 43 + + <key>ru</key> + <value><b>Для передачи расписки в бумажном виде: +</> + 1.Распечатайте и подпишите <link ПечатьСертификата>бланк квалифицированного сертификата</>. + 2.Передайте бланк сертификата обслуживающему вас партнеру.</value> + + true + true + + true + + + ДекорацияИнструкцияРасширеннаяПодсказка + 45 + Label + true + true + + Left + + + + ДекорацияИнструкцияКонтекстноеМеню + 44 + true + + true + Label + true + + + URLProcessing + ДекорацияИнструкцияОбработкаНавигационнойСсылки + + Left + + + + ГруппаПодтверждение + 36 + + СогласиеСПодтверждаемойИнформацией1 + 27 + + <key>ru</key> + <value>Согласие</value> + + true + true + + true + + + СогласиеСПодтверждаемойИнформацией + + None + 2 + + СогласиеСПодтверждаемойИнформацией1РасширеннаяПодсказка + 29 + Label + true + true + + Left + + + + СогласиеСПодтверждаемойИнформацией1КонтекстноеМеню + 28 + true + + CheckBoxField + Enter + true + Left + true + + + + ДекорацияПодтверждение + 30 + + <key>ru</key> + <value>Подтверждаю ознакомление с информацией, содержащейся в квалифицированном сертификате +</value> + + true + true + + true + + + ДекорацияПодтверждениеРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + ДекорацияПодтверждениеКонтекстноеМеню + 31 + true + + true + Label + true + + Left + 2 + + + true + true + + true + + + <key>ru</key> + <value>Подтверждение</value> + + + ГруппаПодтверждениеРасширеннаяПодсказка + 37 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Сертификат</value> + + + Style.LargeTextFont + + + ГруппаСертификатРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + ПодвалГруппа + 10 + + ГруппаКомандыПодтверждения + 19 + + ФормаПодтверждаю + 6 + true + true + + true + + + ФормаПодтверждаюРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + UsualButton + Form.Command.Подтверждаю + Auto + true + true + true + Right + UserCmds + Auto + + + Отмена + 14 + true + true + + true + + + ОтменаРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Cancel + Normal + Auto + true + true + Right + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды подтверждения</value> + + Right + + ГруппаКомандыПодтвержденияРасширеннаяПодсказка + 20 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + + + ГруппаКомандыОшибки + 82 + + Закрыть + 84 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 85 + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Close + Normal + Auto + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Команды ошибки</value> + + Right + + ГруппаКомандыОшибкиРасширеннаяПодсказка + 83 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + WeakSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подвал группа</value> + + true + + ПодвалГруппаРасширеннаяПодсказка + 11 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + true + auto + true + + ПодтверждаемаяИнформация + + <key>ru</key> + <value>Подтверждаемая информация</value> + + 1 + + SpreadsheetDocument + + + true + + + true + + + + + СогласиеСПодтверждаемойИнформацией + + <key>ru</key> + <value>Согласие с подтверждаемой информацией</value> + + 2 + + Boolean + + + true + + + true + + ShowError + + + Текст + + <key>ru</key> + <value>Текст</value> + + 3 + + String + + + + true + + + true + + + + Код + 4 + + String + + + + true + + + true + + + + Описание + + <key>ru</key> + <value>Описание</value> + + 5 + + String + + + + true + + + true + + + + Причина + + <key>ru</key> + <value>Причина</value> + + 6 + + String + + + + true + + + true + + + + Решение + + <key>ru</key> + <value>Решение</value> + + 7 + + String + + + + true + + + true + + + + СпособУстранения + + <key>ru</key> + <value>Способ устранения</value> + + 8 + + String + + + + true + + + true + + + + Подтверждаю + + <key>ru</key> + <value>Подтверждаю</value> + + 1 + + true + + + + Подтверждаю + + + Auto + Auto + + + ИнформацияЗаявления + + true + + + СодержаниеСертификата + + true + + + ОписаниеОшибки + + + + + + + diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Module.bsl b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Module.bsl new file mode 100644 index 000000000..3212bac5e --- /dev/null +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Информация/Module.bsl @@ -0,0 +1,97 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.ИнформацияЗаявления <> Неопределено Тогда + ПодтверждаемаяИнформация = Параметры.ИнформацияЗаявления; + Элементы.ГруппаОшибка.Видимость = Ложь; + Элементы.ГруппаЗаявление.Видимость = Истина; + Элементы.ГруппаСертификат.Видимость = Ложь; + ИначеЕсли Параметры.СодержаниеСертификата <> Неопределено Тогда + Элементы.ГруппаЗаявление.Видимость = Ложь; + Элементы.ГруппаСертификат.Видимость = Истина; + Иначе + Заголовок = НСтр("ru = 'Информация об ошибке'"); + Элементы.ГруппаКомандыОшибки.Видимость = Истина; + Элементы.ГруппаКомандыПодтверждения.Видимость = Ложь; + Элементы.ГруппаЗаявление.Видимость = Ложь; + Элементы.ГруппаСертификат.Видимость = Ложь; + КонецЕсли; + + Если Параметры.ОписаниеОшибки <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры.ОписаниеОшибки); + Элементы.ГруппаОшибка.Видимость = ЗначениеЗаполнено(Описание); + Элементы.ГруппаТекстОшибки.Видимость = ЗначениеЗаполнено(Текст); + Если ЗначениеЗаполнено(Код) Тогда + ОписаниеИзвестнойОшибки = ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(Код); + ЭтоИзвестнаяОшибка = ОписаниеИзвестнойОшибки <> Неопределено; + Если ЭтоИзвестнаяОшибка Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ОписаниеИзвестнойОшибки); + Элементы.Причина.Видимость = ЗначениеЗаполнено(Причина); + Элементы.Решение.Видимость = ЗначениеЗаполнено(Решение); + Элементы.СпособУстранения.Видимость = ЗначениеЗаполнено(СпособУстранения); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ЭлектроннаяПодписьСлужебный.СброситьРазмерыИПоложениеОкна(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подтверждаю(Команда) + + Если Не СогласиеСПодтверждаемойИнформацией Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю( + НСтр("ru = 'Поставьте отметку о подтверждении'"),, "СогласиеСПодтверждаемойИнформацией"); + Возврат; + КонецЕсли; + Закрыть(Истина); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ДекорацияИнструкцияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ИдентификаторПечатнойФормы = "СодержаниеСертификата"; + НазваниеПечатнойФормы = НСтр("ru = 'Содержание сертификата'"); + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Параметры.СодержаниеСертификата.Показать(НазваниеПечатнойФормы); + Возврат; + КонецЕсли; + + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + КоллекцияПечатныхФорм = МодульУправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторПечатнойФормы); + + ПечатнаяФорма = МодульУправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормы); + ПечатнаяФорма.СинонимМакета = НазваниеПечатнойФормы; + ПечатнаяФорма.ТабличныйДокумент = Параметры.СодержаниеСертификата; + ПечатнаяФорма.ИмяФайлаПечатнойФормы = НазваниеПечатнойФормы; + + ОбластиОбъектов = Новый СписокЗначений; + МодульУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов); + +КонецПроцедуры + + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Form.form b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Form.form index 83fb9d8c6..2393ed5e9 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Form.form +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Form.form @@ -132,7 +132,6 @@ ru Служба поддержки: <b>8-800-333-9313 podpis@1c.ru</> - true true true @@ -313,6 +312,20 @@ true + + ИдентификаторАбонента + 10 + + String + + + + true + + + true + + СостояниеОбработкиЗаявления @@ -381,6 +394,13 @@ + + ИдентификаторАбонента + + String + + + diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Module.bsl b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Module.bsl index 5069da767..f3cc53164 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Module.bsl +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/ТехническаяИнформация/Module.bsl @@ -12,7 +12,7 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, - "ИмяФайла, ИдентификаторДокументооборота, АдресЗапросаНаСертификат, АдресСертификата," + "ИмяФайла, ИдентификаторАбонента, ИдентификаторДокументооборота, АдресЗапросаНаСертификат, АдресСертификата," + "АдресКорневогоСертификата, АдресОтветаСервиса, СостояниеОбработкиЗаявления," + "ДатаОбновленияСостояния, СостояниеОбработкиЗаявленияАктуально"); diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Form.form b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Form.form index 66ededfad..0f6b98de8 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Form.form @@ -40,24 +40,21 @@ Auto - - СостояниеОбработкиЗаявления - 375 + + ДекорацияСостояние + 910 <key>ru</key> - <value>Состояние</value> + <value>Состояние заявления</value> true true true - - СостояниеОбработкиЗаявления - - СостояниеОбработкиЗаявленияРасширеннаяПодсказка - 377 + ДекорацияСостояниеРасширеннаяПодсказка + 912 Label true true @@ -66,29 +63,37 @@ - СостояниеОбработкиЗаявленияКонтекстноеМеню - 376 + ДекорацияСостояниеКонтекстноеМеню + 911 true - LabelField - true - Enter - true - Left - true - + Label + 60 + true + true + + Left + - - ТехническаяИнформация - 815 + + НапомнитьОГотовности + 887 true true true + + НапомнитьОГотовности + + Right + + OnChange + НапомнитьОГотовностиПриИзменении + - ТехническаяИнформацияРасширеннаяПодсказка - 816 + НапомнитьОГотовностиРасширеннаяПодсказка + 889 Label true true @@ -96,14 +101,18 @@ Left - Hyperlink - Form.Command.ТехническаяИнформация - Normal - Auto - true - true - UserCmds - Auto + + НапомнитьОГотовностиКонтекстноеМеню + 888 + true + + CheckBoxField + Right + Enter + true + Left + true + true true @@ -114,6 +123,7 @@ ru Обработка заявления + true Top ГруппаОбработкаЗаявленияРасширеннаяПодсказка @@ -138,6 +148,172 @@ Auto + + ГруппаВидПродления + 849 + + ОформленоВЭлектронномВиде + 851 + + <key>ru</key> + <value>Оформить</value> + + true + true + + true + + + ДанныеЗаявления.ОформленоВЭлектронномВиде + + None + + OnChange + ЭлектронноеПродлениеПриИзменении + + + ОформленоВЭлектронномВидеРасширеннаяПодсказка + 853 + Label + true + true + + Left + + + + ОформленоВЭлектронномВидеКонтекстноеМеню + 852 + true + + InputField + Enter + true + Left + true + + 18 + true + false + true + true + true + true + + + ru + В бумажном виде + + + + + + ru + В электронном виде + + + true + + + + Style.ФонУправляющегоПоля + + Normal + + + + СертификатОснование + 854 + + <key>ru</key> + <value>для продления сертификата</value> + + true + true + + true + + + ДанныеЗаявления.СертификатОснование + + Button + + OnChange + СертификатОснованиеПриИзменении + + + СертификатОснованиеРасширеннаяПодсказка + 856 + + <key>ru</key> + <value>Сертификат, которым будет подписано заявление, оформленное в электронном виде</value> + + Label + true + true + + Left + + + + СертификатОснованиеКонтекстноеМеню + 855 + true + + InputField + true + Enter + true + Left + true + + + StartChoice + СертификатОснованиеНачалоВыбора + + true + true + true + true + false + true + ShowInInputField + false + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Вид продления</value> + + + ГруппаВидПродленияРасширеннаяПодсказка + 850 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + ГруппаОрганизация 728 @@ -666,38 +842,204 @@ - ГруппаПодписантЗаявления - 736 - - ДокументыРуководитель - 315 + ГруппаБумажноеПродление + 861 + + ГруппаПодписантЗаявления + 736 + + ДокументыРуководитель + 315 + + <key>ru</key> + <value>Подписант заявления</value> + + + Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт + + true + true + + true + + + ДокументыРуководитель + + + ru + Представитель организации, имеющий полномочия подписать заявление. + + Button + + OnChange + ДокументыРуководительПриИзменении + + + ДокументыРуководительРасширеннаяПодсказка + 317 + Label + true + true + + Left + + + + ДокументыРуководительКонтекстноеМеню + 316 + true + + InputField + true + Enter + true + Left + true + + + StartChoice + ДокументыРуководительНачалоВыбора + + + Opening + ДокументыРуководительОткрытие + + + Clearing + ДокументыРуководительОчистка + + + ChoiceProcessing + ДокументыРуководительОбработкаВыбора + + true + true + true + true + true + true + true + true + Normal + + + + ДокументыРуководительДолжность + 320 + true + true + + true + + + ДокументыРуководительДолжность + + + OnChange + РеквизитПриИзменении + + + ДокументыРуководительДолжностьРасширеннаяПодсказка + 322 + Label + true + true + + Left + + + + ДокументыРуководительДолжностьКонтекстноеМеню + 321 + true + + InputField + true + Enter + true + Left + true + + 25 + true + true + false + true + true + true + true + true + Normal + + + + ДокументыРуководительОснование + 546 + true + true + + true + + + ДокументыРуководительОснование + + + ru + Основание, на котором действует подписант: правовой акт, устав, доверенность. + + Button + + OnChange + РеквизитПриИзменении + + + ДокументыРуководительОснованиеРасширеннаяПодсказка + 548 + Label + true + true + + Left + + + + ДокументыРуководительОснованиеКонтекстноеМеню + 547 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Правовой акт, устав, доверенность + + + + true + true + + true + <key>ru</key> <value>Подписант заявления</value> - - Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт - - true - true - - true - - - ДокументыРуководитель - - - ru - Представитель организации, имеющий полномочия подписать заявление. - - Button - - OnChange - ДокументыРуководительПриИзменении - + Top - ДокументыРуководительРасширеннаяПодсказка - 317 + ГруппаПодписантЗаявленияРасширеннаяПодсказка + 737 Label true true @@ -705,212 +1047,206 @@ Left - - ДокументыРуководительКонтекстноеМеню - 316 - true - - InputField - true - Enter - true - Left - true - - - StartChoice - ДокументыРуководительНачалоВыбора - - - Opening - ДокументыРуководительОткрытие - - - Clearing - ДокументыРуководительОчистка - - - ChoiceProcessing - ДокументыРуководительОбработкаВыбора - - true - true - true - true - true - true - true - true - Normal + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto - - ДокументыРуководительДолжность - 320 - true - true - - true - - - ДокументыРуководительДолжность - - - OnChange - РеквизитПриИзменении - - - ДокументыРуководительДолжностьРасширеннаяПодсказка - 322 - Label - true - true - - Left - - - - ДокументыРуководительДолжностьКонтекстноеМеню - 321 - true - - InputField - true - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - true - Normal - - - - ДокументыРуководительОснование - 546 - true - true - - true - - - ДокументыРуководительОснование - - - ru - Основание, на котором действует подписант: правовой акт, устав, доверенность. - - Button - - OnChange - РеквизитПриИзменении - - - ДокументыРуководительОснованиеРасширеннаяПодсказка - 548 - Label - true - true - - Left - - - - ДокументыРуководительОснованиеКонтекстноеМеню - 547 - true - - InputField - true - Enter - true - Left - true - - true - true - true - true - true - true - Normal - + + ГруппаОбслуживающаяОрганизация + 738 + + ДокументыПартнер + 512 + <key>ru</key> - <value>Правовой акт, устав, доверенность</value> - </inputHint> - </extInfo> - </items> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <title> - <key>ru</key> - <value>Подписант заявления</value> - - Top - - ГруппаПодписантЗаявленияРасширеннаяПодсказка - 737 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - WeakSeparation - true - true - Auto - - - - ГруппаОбслуживающаяОрганизация - 738 - - ДокументыПартнер - 512 + Обслуживающая организация + + + Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт + + true + true + + true + + + ДокументыПартнер + + + ru + Партнер фирмы 1С, который будет обрабатывать заявление. + + Button + + OnChange + ДокументыПартнерПриИзменении + + + ДокументыПартнерРасширеннаяПодсказка + 514 + Label + true + true + + Left + + + + ДокументыПартнерКонтекстноеМеню + 513 + true + + InputField + true + Enter + true + Left + true + + + StartChoice + ДокументыПартнерНачалоВыбора + + + Opening + ДокументыПартнерОткрытие + + + Clearing + ДокументыПартнерОчистка + + + ChoiceProcessing + ДокументыПартнерОбработкаВыбора + + true + true + true + true + true + true + true + true + Normal + + ru + Наименование + + + + + ДокументыПартнерИНН + 335 + true + true + + true + + + ДокументыПартнерИНН + + + OnChange + ДокументыПартнерИННПриИзменении + + + ДокументыПартнерИННРасширеннаяПодсказка + 337 + Label + true + true + + Left + + + + ДокументыПартнерИННКонтекстноеМеню + 336 + true + + InputField + Enter + true + Left + true + + 14 + true + true + false + true + true + true + true + Normal + + + + ДокументыПартнерКПП + 338 + true + true + + true + + + ДокументыПартнерКПП + + + OnChange + ДокументыПартнерКПППриИзменении + + + ДокументыПартнерКППРасширеннаяПодсказка + 340 + Label + true + true + + Left + + + + ДокументыПартнерКППКонтекстноеМеню + 339 + true + + InputField + Enter + true + Left + true + + 14 + true + true + false + true + true + true + true + Normal + + + true + true + + true + <key>ru</key> <value>Обслуживающая организация</value> - - Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт - - true - true - - true - - - ДокументыПартнер - - - ru - Партнер фирмы 1С, который будет обрабатывать заявление. - - Button - - OnChange - ДокументыПартнерПриИзменении - + Top - ДокументыПартнерРасширеннаяПодсказка - 514 + ГруппаОбслуживающаяОрганизацияРасширеннаяПодсказка + 739 Label true true @@ -918,141 +1254,14 @@ Left - - ДокументыПартнерКонтекстноеМеню - 513 - true - - InputField - true - Enter - true - Left - true - - - StartChoice - ДокументыПартнерНачалоВыбора - - - Opening - ДокументыПартнерОткрытие - - - Clearing - ДокументыПартнерОчистка - - - ChoiceProcessing - ДокументыПартнерОбработкаВыбора - - true - true - true - true - true - true - true - true - Normal - - ru - Наименование - - - - - ДокументыПартнерИНН - 335 - true - true - - true - - - ДокументыПартнерИНН - - - OnChange - ДокументыПартнерИННПриИзменении - - - ДокументыПартнерИННРасширеннаяПодсказка - 337 - Label - true - true - - Left - - - - ДокументыПартнерИННКонтекстноеМеню - 336 - true - - InputField - Enter - true - Left - true - - 14 - true - true - false - true - true - true - true - Normal - - - - ДокументыПартнерКПП - 338 - true - true - - true - - - ДокументыПартнерКПП - - - OnChange - ДокументыПартнерКПППриИзменении - - - ДокументыПартнерКППРасширеннаяПодсказка - 340 - Label - true - true - - Left - - - - ДокументыПартнерКППКонтекстноеМеню - 339 - true - - InputField - Enter - true - Left - true - - 14 - true - true - false - true - true - true - true - Normal + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto true @@ -1062,12 +1271,11 @@ <key>ru</key> - <value>Обслуживающая организация</value> + <value>Бумажное продление</value> - Top - ГруппаОбслуживающаяОрганизацияРасширеннаяПодсказка - 739 + ГруппаБумажноеПродлениеРасширеннаяПодсказка + 862 Label true true @@ -1082,6 +1290,7 @@ WeakSeparation true true + Auto Auto @@ -1156,13 +1365,13 @@ 3 <key>ru</key> - <value><color #807a59>Если не установлена программа электронной подписи, установите КриптоПро CSP или VipNet CSP.</><color #807a59> + <value><color #807A59>Если не установлена программа электронной подписи, установите КриптоПро CSP или VipNet CSP.</><color #807A59> -По вопросам работы программы обратитесь к ее документации. Или воспользуйтесь </><link %1>дополнительной инструкцией на сайте 1С</><color #807a59>. +По вопросам работы программы обратитесь к ее документации. Или воспользуйтесь </><link %1>дополнительной инструкцией на сайте 1С</><color #807A59>. -</><b><color #807a59>Ключ электронной подписи</></><color #807a59> - это секретная информация, которая сохраняется на компьютер, флешку, дискету или другой носитель информации и используется в дальнейшем для создания электронных подписей. +</><b><color #807A59>Ключ электронной подписи</></><color #807A59> - это секретная информация, которая сохраняется на компьютер, флешку, дискету или другой носитель информации и используется в дальнейшем для создания электронных подписей. -</><b><color #807a59>Запрос на сертификат</></><color #807a59> - это не секретная информация, которая создается на основе ключа электронной подписи, отправляется вместе с заявлением на выпуск сертификата и требуется для выпуска сертификата.</></value> +</><b><color #807A59>Запрос на сертификат</></><color #807A59> - это не секретная информация, которая создается на основе ключа электронной подписи, отправляется вместе с заявлением на выпуск сертификата и требуется для выпуска сертификата.</></value> true Label @@ -1204,11 +1413,12 @@ ChoiceProcessing ПрограммаОбработкаВыбора - 20 + 30 true true false true + true false false false @@ -1244,45 +1454,382 @@ Vertical Auto + NormalSeparation true true Auto Auto - true - true - - true - - - <key>ru</key> - <value>Шапка заявления</value> - - true - - ШапкаЗаявленияРасширеннаяПодсказка - 814 - Label - true - true - - Left + + ГруппаЭлектронноеПродление + 863 + + ГруппаПаспорт + 865 + + ДекорацияПаспорт + 873 + + <key>ru</key> + <value>Паспорт (разворот с фото):</value> + + true + true + + true + + + ДекорацияПаспортРасширеннаяПодсказка + 875 + Label + true + true + + Left + + + + ДекорацияПаспортКонтекстноеМеню + 874 + true + + Label + true + true + + Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт + + + Left + + + + ВыбратьПаспорт + 876 + + <key>ru</key> + <value><link ВыбратьДокумент>выбрать файл</></value> + + true + true + + true + + + ВыбратьПаспортРасширеннаяПодсказка + 878 + Label + true + true + + Left + + + + ВыбратьПаспортКонтекстноеМеню + 877 + true + + true + Label + true + true + + + URLProcessing + ВыбратьДокументОбработкаНавигационнойСсылки + + Left + + + + ОчиститьПаспорт + 879 + + <key>ru</key> + <value>Очистить</value> + + true + true + + true + + + ОчиститьПаспортРасширеннаяПодсказка + 881 + Label + true + true + + Left + + + + ОчиститьПаспортКонтекстноеМеню + 880 + true + + true + true + + + Click + ОчиститьДокумент + + + StdPicture.InputFieldClear + + true + AsFileRef + + + true + true + + true + + + <key>ru</key> + <value>Паспорт</value> + + + ГруппаПаспортРасширеннаяПодсказка + 866 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + NormalSeparation + true + true + Auto + Auto + + + + ГруппаДоверенность + 930 + + ДекорацияДоверенность + 932 + + <key>ru</key> + <value>Доверенность (<link БланкДоверенности>бланк</>):</value> + + true + true + + true + + + ДекорацияДоверенностьРасширеннаяПодсказка + 934 + Label + true + true + + Left + + + + ДекорацияДоверенностьКонтекстноеМеню + 933 + true + + true + Label + true + true + + Style.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт + + + + URLProcessing + ДекорацияДоверенностьОбработкаНавигационнойСсылки + + Left + + + + ВыбратьДоверенность + 935 + + <key>ru</key> + <value><link ВыбратьДокумент>выбрать файл</></value> + + true + true + + true + + + ВыбратьДоверенностьРасширеннаяПодсказка + 937 + Label + true + true + + Left + + + + ВыбратьДоверенностьКонтекстноеМеню + 936 + true + + true + Label + true + true + + + URLProcessing + ВыбратьДокументОбработкаНавигационнойСсылки + + Left + + + + ОчиститьДоверенность + 938 + + <key>ru</key> + <value>Очистить</value> + + true + true + + true + + + ОчиститьДоверенностьРасширеннаяПодсказка + 940 + Label + true + true + + Left + + + + ОчиститьДоверенностьКонтекстноеМеню + 939 + true + + true + true + + + Click + ОчиститьДокумент + + + StdPicture.InputFieldClear + + true + AsFileRef + + + true + true + + true + + + <key>ru</key> + <value>Доверенность</value> + + + ГруппаДоверенностьРасширеннаяПодсказка + 931 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + NormalSeparation + true + true + Auto + Auto + + + + СведенияОЗаявленииИВладельцеСертификата + 859 + + <key>ru</key> + <value>Сведения о заявлении и владельце сертификата</value> + + true + true + + true + + + СведенияОЗаявленииИВладельцеСертификатаРасширеннаяПодсказка + 860 + Label + true + true + + Left + + + Hyperlink + Form.Command.СведенияОЗаявленииИВладельцеСертификата + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Электронное продление</value> + + + ГруппаЭлектронноеПродлениеРасширеннаяПодсказка + 864 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + Auto - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - - Подвал - 811 + ГруппаПечатьЗаявления 748 @@ -1330,7 +1877,7 @@ 753 <key>ru</key> - <value>Подготовьте <link КомплектДокументов>комплект документов</> и передайте представителю обслуживающей организации. + <value>Подготовьте <link КомплектДокументов>комплект документов</> и передайте представителю обслуживающей организации.  При первичной идентификации потребуется фото заявителя с паспортом.</value> true @@ -1355,9 +1902,8 @@ true Label - 57 - 57 true + true false Style.ПоясняющийТекст @@ -1405,19 +1951,23 @@ - ГруппаОтправкаЗаявления - 759 + ГруппаСодержаниеСертификата + 904 - ОтправитьЗаявление - 761 + СодержаниеСертификата + 892 + + <key>ru</key> + <value>Информация, содержащаяся в квалифицированном сертификате</value> + true true true - ОтправитьЗаявлениеРасширеннаяПодсказка - 762 + СодержаниеСертификатаРасширеннаяПодсказка + 893 Label true true @@ -1425,204 +1975,15 @@ Left - UsualButton - Form.Command.ОтправитьЗаявление + Hyperlink + Form.Command.СодержаниеСертификата + Normal Auto - true true true UserCmds Auto - - ДекорацияУсловияСоглашения - 763 - - <key>ru</key> - <value>Нажимая кнопку <b>Отправить, </>вы принимаете <link УсловияСоглашения>условия соглашения</> о -присоединении к <link ПорядокУдостоверяющегоЦентра>Порядку удостоверяющего центра</>.</value> - - true - true - - true - - - ДекорацияУсловияСоглашенияРасширеннаяПодсказка - 765 - Label - true - true - - Left - - - - ДекорацияУсловияСоглашенияКонтекстноеМеню - 764 - true - - true - Label - true - false - - Style.ПоясняющийТекст - - - Style.NormalTextFont - 10.0 - - - - URLProcessing - ДекорацияУсловияСоглашенияОбработкаНавигационнойСсылки - - Left - - - - ДекорацияОтступ - 791 - true - true - - true - - - ДекорацияОтступРасширеннаяПодсказка - 793 - Label - true - true - - Left - - - - ДекорацияОтступКонтекстноеМеню - 792 - true - - Label - 6 - true - true - - Left - - - - ГруппаТребуетсяПомощь - 789 - - ДекорацияОписание - 802 - - <key>ru</key> - <value>Описание, условия и цены</value> - - true - true - - true - - - ДекорацияОписаниеРасширеннаяПодсказка - 804 - Label - true - true - - Left - - - - ДекорацияОписаниеКонтекстноеМеню - 803 - true - - Label - true - true - - - Click - ДекорацияОписаниеНажатие - - true - Left - - - - СлужбаПоддержки - 772 - - <key>ru</key> - <value>Служба поддержки: <b>8-800-333-9313 podpis@1c.ru</></value> - - true - true - - true - - - СлужбаПоддержкиРасширеннаяПодсказка - 774 - Label - true - true - - Left - - - - СлужбаПоддержкиКонтекстноеМеню - 773 - true - - true - Label - true - - Style.ПоясняющийТекст - - - Left - Bottom - - - true - true - - true - - - <key>ru</key> - <value>Требуется помощь?</value> - - - ГруппаТребуетсяПомощьРасширеннаяПодсказка - 790 - Label - true - true - - Left - - - UsualGroup - - Vertical - PopUp - WeakSeparation - true - true - auto - Auto - Auto - - true true @@ -1630,12 +1991,11 @@ <key>ru</key> - <value>Отправка заявления</value> + <value>Содержание сертификата</value> - Bottom - ГруппаОтправкаЗаявленияРасширеннаяПодсказка - 760 + ГруппаСодержаниеСертификатаРасширеннаяПодсказка + 905 Label true true @@ -1645,8 +2005,9 @@ UsualGroup - AlwaysHorizontal + HorizontalIfPossible Auto + NormalSeparation true true Auto @@ -1660,12 +2021,12 @@ <key>ru</key> - <value>Подвал</value> + <value>Шапка заявления</value> - false + true - ПодвалРасширеннаяПодсказка - 812 + ШапкаЗаявленияРасширеннаяПодсказка + 814 Label true true @@ -1683,6 +2044,387 @@ Auto + + ГруппаКомандыЗаявления + 908 + + ОтправитьЗаявление + 906 + true + true + + true + + + ОтправитьЗаявлениеРасширеннаяПодсказка + 907 + Label + true + true + + Left + + + UsualButton + Form.Command.ОтправитьЗаявление + Auto + true + true + true + UserCmds + Auto + + + ПодписатьИОтправитьСертификат + 890 + true + true + + true + + + ПодписатьИОтправитьСертификатРасширеннаяПодсказка + 891 + Label + true + true + + Left + + + UsualButton + Form.Command.ПодписатьИОтправитьСертификат + Normal + Auto + true + true + UserCmds + Auto + + + УстановитьСертификат + 900 + true + + true + + + УстановитьСертификатРасширеннаяПодсказка + 901 + Label + true + true + + Left + + + UsualButton + Form.Command.УстановитьСертификат + Normal + Auto + true + true + UserCmds + Auto + + + Закрыть + 882 + true + + true + + + ЗакрытьРасширеннаяПодсказка + 883 + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Close + Normal + Auto + true + true + UserCmds + Auto + + + Готово + 902 + true + + true + + + ГотовоРасширеннаяПодсказка + 903 + Label + true + true + + Left + + + UsualButton + Form.Command.Готово + Normal + Auto + true + true + UserCmds + Auto + + + ДекорацияУсловияСоглашения + 763 + + <key>ru</key> + <value>Нажимая кнопку <b>Отправить, </>вы принимаете <link УсловияСоглашения>условия соглашения</> о +присоединении к <link ПорядокУдостоверяющегоЦентра>Порядку удостоверяющего центра</>.</value> + + true + true + + true + + + ДекорацияУсловияСоглашенияРасширеннаяПодсказка + 765 + Label + true + true + + Left + + + + ДекорацияУсловияСоглашенияКонтекстноеМеню + 764 + true + + true + Label + true + false + + Style.ПоясняющийТекст + + + Style.NormalTextFont + 10.0 + + + + URLProcessing + ДекорацияУсловияСоглашенияОбработкаНавигационнойСсылки + + Left + + + + ДекорацияОтступ + 791 + true + true + + true + + + ДекорацияОтступРасширеннаяПодсказка + 793 + Label + true + true + + Left + + + + ДекорацияОтступКонтекстноеМеню + 792 + true + + Label + 6 + true + true + + Left + + + + ГруппаТребуетсяПомощь + 789 + + ТехническаяИнформация + 815 + true + true + + true + + + ТехническаяИнформацияРасширеннаяПодсказка + 816 + Label + true + true + + Left + + + Hyperlink + Form.Command.ТехническаяИнформация + Normal + Auto + true + true + UserCmds + Auto + + + ДекорацияОписание + 802 + + <key>ru</key> + <value>Описание, условия и цены</value> + + true + true + + true + + + ДекорацияОписаниеРасширеннаяПодсказка + 804 + Label + true + true + + Left + + + + ДекорацияОписаниеКонтекстноеМеню + 803 + true + + Label + true + true + + + Click + ДекорацияОписаниеНажатие + + true + Left + + + + СлужбаПоддержки + 772 + + <key>ru</key> + <value>Служба поддержки: <b>8-800-333-9313 podpis@1c.ru</></value> + + true + true + + true + + + СлужбаПоддержкиРасширеннаяПодсказка + 774 + Label + true + true + + Left + + + + СлужбаПоддержкиКонтекстноеМеню + 773 + true + + true + Label + true + + Style.ПоясняющийТекст + + + Left + Bottom + + + true + true + + true + + + <key>ru</key> + <value>Требуется помощь?</value> + + + ГруппаТребуетсяПомощьРасширеннаяПодсказка + 790 + Label + true + true + + Left + + + UsualGroup + + Vertical + PopUp + WeakSeparation + true + true + auto + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Команды заявления</value> + + + ГруппаКомандыЗаявленияРасширеннаяПодсказка + 909 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + Bottom true @@ -2324,10 +3066,6 @@ СостояниеОбработкиЗаявления - - <key>ru</key> - <value>Состояние обработки заявления</value> - 43 String @@ -2506,20 +3244,6 @@ true - - ИдентификаторДокументооборота - 59 - - String - - - - true - - - true - - БИК 60 @@ -2702,20 +3426,6 @@ true - - ИдентификаторАбонента - 66 - - String - - - - true - - - true - - ОповеститьОбИзмененииЗаявления 71 @@ -3275,8 +3985,22 @@ - ЗаявлениеДляИндивидуальныхПредпринимателейДоступно - 103 + ДанныеЗаявления + 104 + + InformationRegisterRecordManager.ЗаявленияНаВыпускСертификата + + + true + + + true + + true + + + ЭлектронноеПродлениеДоступно + 109 Boolean @@ -3288,8 +4012,68 @@ - ЗаявлениеДляРуководителейЮридическихЛицДоступно - 104 + АдресФайлаПаспорт + 110 + + String + + + + true + + + true + + + + НапомнитьОГотовности + + <key>ru</key> + <value>Напомнить о готовности</value> + + 115 + + Boolean + + + true + + + true + + + + ДоступныНапоминанияПользователя + 116 + + Boolean + + + true + + + true + + + + СертификатОснованиеДействуетДо + 117 + + Date + + Date + + + + true + + + true + + + + ТолькоПросмотрЗаявления + 118 Boolean @@ -3302,7 +4086,7 @@ ЗаявлениеДляСотрудниковЮридическихЛицДоступно - 105 + 124 Boolean @@ -3313,6 +4097,46 @@ true + + ЗаявлениеДляРуководителейЮридическихЛицДоступно + 125 + + Boolean + + + true + + + true + + + + ЗаявлениеДляИндивидуальныхПредпринимателейДоступно + 126 + + Boolean + + + true + + + true + + + + АдресФайлаДоверенность + 127 + + String + + + + true + + + true + + УказатьСведенияОбОрганизации @@ -3453,6 +4277,96 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>СведенияОЗаявленииИВладельцеСертификата</name> + <title> + <key>ru</key> + <value>Сведения о заявлении и владельце сертификата</value> + + 11 + + true + + + + СведенияОЗаявленииИВладельцеСертификата + + + Auto + Auto + + + ПодписатьИОтправитьСертификат + + <key>ru</key> + <value>Подписать и отправить</value> + + 13 + + true + + + + ПодписатьИОтправитьСертификат + + + Auto + Auto + + + СодержаниеСертификата + + <key>ru</key> + <value>Содержание сертификата</value> + + 14 + + true + + + + СодержаниеСертификата + + + Auto + Auto + + + УстановитьСертификат + + <key>ru</key> + <value>Установить сертификат</value> + + 15 + + true + + + + УстановитьСертификат + + + Auto + Auto + + + Готово + + <key>ru</key> + <value>Готово</value> + + 16 + + true + + + + Готово + + + Auto + Auto + СертификатСсылка diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Module.bsl index 96412cc7e..a0a230949 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Forms/Форма/Module.bsl @@ -20,8 +20,20 @@ УстановитьДоступностьВариантовЗаявления(); + Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.ЗаявленияНаВыпускСертификата) Тогда + ТолькоПросмотрЗаявления = Истина; + КонецЕсли; + + Если ЭлектроннаяПодпись.УправлениеОповещениямиОСертификатах() + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда + МодульНапоминанияПользователя = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователя"); + ДоступныНапоминанияПользователя = МодульНапоминанияПользователя.ИспользуютсяНапоминанияПользователя(); + КонецЕсли; + Элементы.НаименованиеСокращенное.Видимость = Ложь; Элементы.ВладелецСертификатаСтрокой.Видимость = Ложь; + Элементы.ОчиститьПаспорт.Видимость = Ложь; + Элементы.ОчиститьДоверенность.Видимость = Ложь; ЭтоПодчиненныйУзелРИБ = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ(); ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(); @@ -36,11 +48,21 @@ ЗаполнитьЗаголовкиРеквизитов(); Если ЗначениеЗаполнено(Параметры.СертификатСсылка) Тогда - ЗагрузитьЗаявление(); - ПриИзмененииОрганизацииНаСервере(Истина); + + Попытка + ЗагрузитьЗаявление(); + Если ЗначениеЗаполнено(ДанныеЗаявления.СертификатОснование) Тогда + СертификатОснованиеДействуетДо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта( + ДанныеЗаявления.СертификатОснование, "ДействителенДо"); + КонецЕсли; + ПриИзмененииОрганизацииНаСервере(Истина); + Исключение + РазблокироватьДанныеДляРедактирования(Параметры.СертификатСсылка, УникальныйИдентификатор); + ВызватьИсключение; + КонецПопытки; ИначеЕсли ЗначениеЗаполнено(Параметры.СертификатОснование) Тогда - СкопироватьЗаявление(); + СкопироватьЗаявление(Параметры.СертификатОснование); ПриИзмененииОрганизацииНаСервере(Истина); Иначе ДокументыПартнерЭтоИП = Ложь; @@ -65,18 +87,19 @@ ПриИзмененииОрганизацииНаСервере(Ложь); КонецЕсли; - Если Не ЗначениеЗаполнено(Объект.СостояниеЗаявления) Тогда - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено; + Если Не ЗначениеЗаполнено(ДанныеЗаявления.СостояниеЗаявления) Тогда + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено; КонецЕсли; - УстановитьДоступность(); + УстановитьВидимостьИДоступность(); + УстановитьОтображениеРеквизитовЗависимыхОтВидаПродления(); - Если ЗначениеЗаполнено(Параметры.СертификатСсылка) - И Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Подготовлено + Если Не ТолькоПросмотрЗаявления + И ЗначениеЗаполнено(Параметры.СертификатСсылка) + И ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Подготовлено И Не ЗначениеЗаполнено(ВладелецИНН) - И Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель - И ПравоДоступа("Редактирование", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования)Тогда - // Заявление на сертификат юридического лица было подготовлено без указания ИНН сотрудника. + И Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель Тогда + ПриПотереГотовности(ЭтотОбъект, Истина); Иначе @@ -90,7 +113,7 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) - Если Объект.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") Тогда + Если ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") Тогда ПодключитьОбработчикОжидания("ПриИзмененияСоставаИлиНастроекПрограмм", 0.1, Истина); КонецЕсли; @@ -203,6 +226,87 @@ КонецПроцедуры +&НаКлиенте +Процедура ЭлектронноеПродлениеПриИзменении(Элемент) + + ОчиститьСообщения(); + ПриПотереГотовности(ЭтотОбъект); + ПодключитьОбработчикОжидания( + "ЭлектронноеПродлениеПриИзмененииОбработчикОжидания", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОснованиеПриИзменении(Элемент) + + ПриПотереГотовности(ЭтотОбъект); + + Если ЗначениеЗаполнено(ДанныеЗаявления.СертификатОснование) Тогда + СкопироватьЗаявление(ДанныеЗаявления.СертификатОснование); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СертификатОснованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ЭлектроннаяПодписьКлиент.СертификатНачалоВыбораСПодтверждением( + Элемент, ДанныеЗаявления.СертификатОснование, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьДокумент(Элемент) + + ВидДокумента = Сред(Элемент.Имя, СтрДлина("Очистить") + 1); + + Элементы["Выбрать" + ВидДокумента].Заголовок = Новый ФорматированнаяСтрока( + НСтр("ru = 'выбрать файл'"), , , , "ВыбратьДокумент"); + ЭтотОбъект["АдресФайла" + ВидДокумента] = ""; + Элементы["Очистить" + ВидДокумента].Видимость = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьДокументОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если НавигационнаяСсылкаФорматированнойСтроки = "ВыбратьДокумент" Тогда + + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеДобавленияДокумента", ЭтотОбъект, Элемент.Имя); + + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ДействиеПередНачаломПомещенияФайлов = Новый ОписаниеОповещения("ПроверитьФайл", ЭтотОбъект); + ПараметрыЗагрузки.Диалог.Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сканированные документы (%1)'"), "*.pdf;*.png;*.jpg;*.zip") + + "|*.pdf;*.png;*.jpg;*.jpeg;*.zip"; + + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + + ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузки); + + ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьФайл" Тогда + + ВидДокумента = Сред(Элемент.Имя, СтрДлина("Выбрать") + 1); + + #Если ВебКлиент Тогда + ФайловаяСистемаКлиент.ОткрытьФайл(ЭтотОбъект["АдресФайла" + ВидДокумента],, Строка(Элемент.Заголовок)); + #Иначе + ФайловаяСистемаКлиент.ОткрытьФайл(Строка(Элемент.Заголовок)); + #КонецЕсли + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НапомнитьОГотовностиПриИзменении(Элемент) + + ПодключитьОбработчикОжидания("ОбработчикОжиданияНапомнитьОГотовности", 0.1, Истина); + +КонецПроцедуры + #Область Организация &НаКлиенте @@ -291,7 +395,6 @@ ОчиститьСообщения(); Если ЗначениеЗаполнено(Сотрудник) Тогда ПриИзмененииВладельцаСертификатаНаСервере(); - ПроверитьДоступностьОтправки(); Иначе Сотрудник = Неопределено; ПодключитьОбработчикОжидания( @@ -591,13 +694,21 @@ |4. Копия* документа, подтверждающего полномочия представителя организации, указанного для выпуска сертификата (решение собственника, протокол собрания учредителей, выписка ЕГРЮЛ или доверенность). | |* Копии документов заверяются подписью руководителя и печатью организации.'"), - "http://ca.1c.ru/doc/doverennost_p3.rtf")); + СсылкаНаДоверенность())); КонецЕсли; ПоказатьПредупреждение(, ТекстПредупреждения); КонецПроцедуры +&НаКлиенте +Процедура ДекорацияДоверенностьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(СсылкаНаДоверенность()); + +КонецПроцедуры + &НаКлиенте Процедура ДекорацияУсловияСоглашенияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) @@ -630,7 +741,7 @@ КонецЕсли; Если ДокументыПечатались И Не Модифицированность Тогда - ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Истина, Неопределено); + ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Истина, Неопределено); Возврат; КонецЕсли; @@ -645,7 +756,7 @@ Доступность = Ложь; - ДекорацияТекстЗаявленияОбработкаНавигационнойСсылкиПродолжение(); + СозданиеКлючаИЗапросаНаСертификатНачало(); КонецПроцедуры @@ -703,6 +814,7 @@ &НаКлиенте Процедура ОтправитьЗаявление(Команда) + ОчиститьСообщения(); Если Не ЗначениеЗаполнено(ПрограммаИмя) Тогда ПриПотереГотовности(ЭтотОбъект, Ложь); КонецЕсли; @@ -715,14 +827,14 @@ Процедура ОбновитьСостояниеОбработкиЗаявления(Команда) РезультатОбновления = ОбновитьСостояниеОбработкиЗаявленияНаСервере(); + СостояниеОбработкиЗаявленияАктуально = Истина; Если РезультатОбновления = Истина Тогда - Если Объект.Программа = ПрограммаОблачногоСервиса Тогда - УстановитьСертификатОблачногоСервиса(); - Иначе - УстановитьСертификат(Новый ОписаниеОповещения("ПослеУстановкиСертификата", ЭтотОбъект)); - КонецЕсли; + УстановитьПолученныйСертификат(); + ИначеЕсли ЗначениеЗаполнено(ДанныеЗаявления.СостояниеОбработкиЗаявления) Тогда + ПоказатьПредупреждение(Неопределено, + ДанныеЗаявления.СостояниеОбработкиЗаявления); КонецЕсли; КонецПроцедуры @@ -732,14 +844,15 @@ ПараметрыВывода = Новый Структура(); ПараметрыВывода.Вставить("ИмяФайла", ИмяФайлаБезРасширения()); - ПараметрыВывода.Вставить("ИдентификаторДокументооборота", ИдентификаторДокументооборота); + ПараметрыВывода.Вставить("ИдентификаторАбонента", ДанныеЗаявления.ИдентификаторАбонента); + ПараметрыВывода.Вставить("ИдентификаторДокументооборота", ДанныеЗаявления.ИдентификаторДокументооборота); ПараметрыВывода.Вставить("АдресСертификата", АдресСертификата); ПараметрыВывода.Вставить("АдресОтветаСервиса", АдресОтветаСервиса); ПараметрыВывода.Вставить("АдресЗапросаНаСертификат", АдресЗапросаНаСертификат); ПараметрыВывода.Вставить("АдресКорневогоСертификата", АдресКорневогоСертификата); - ПараметрыВывода.Вставить("СостояниеЗаявления", Объект.СостояниеЗаявления); - ПараметрыВывода.Вставить("СостояниеОбработкиЗаявления", СостояниеОбработкиЗаявления); - ПараметрыВывода.Вставить("ДатаОбновленияСостояния", ДатаОбновленияСостояния); + ПараметрыВывода.Вставить("СостояниеЗаявления", ДанныеЗаявления.СостояниеЗаявления); + ПараметрыВывода.Вставить("СостояниеОбработкиЗаявления", ДанныеЗаявления.СостояниеОбработкиЗаявления); + ПараметрыВывода.Вставить("ДатаОбновленияСостояния", ДанныеЗаявления.ДатаОбновленияСостояния); ПараметрыВывода.Вставить("СостояниеОбработкиЗаявленияАктуально", СостояниеОбработкиЗаявленияАктуально); ОткрытьФорму( @@ -748,6 +861,73 @@ КонецПроцедуры +&НаКлиенте +Процедура СведенияОЗаявленииИВладельцеСертификата(Команда) + + Документ = ПечатьИнформацииЗаявления(); + Если Документ = Неопределено Тогда + Возврат; + КонецЕсли; + + ИдентификаторПечатнойФормы = "ИнформацияЗаявления"; + НазваниеПечатнойФормы = НСтр("ru = 'Сведения о заявлении и владельце сертификата'"); + + ОткрытьПечатнуюФорму(Документ, ИдентификаторПечатнойФормы, НазваниеПечатнойФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура СодержаниеСертификата(Команда) + + Документ = ПечатьИнформацииСертификата(); + Если Документ = Неопределено Тогда + Возврат; + КонецЕсли; + + ИдентификаторПечатнойФормы = "СодержаниеСертификата"; + НазваниеПечатнойФормы = НСтр("ru = 'Содержание сертификата'"); + + ОткрытьПечатнуюФорму(Документ, ИдентификаторПечатнойФормы, НазваниеПечатнойФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодписатьИОтправитьСертификат(Команда) + + Если СертификатОснованиеДействуетДо < ОбщегоНазначенияКлиент.ДатаУниверсальная() Тогда + ОписаниеОшибки = НовыйОписаниеОшибки(); + ОписаниеОшибки.Описание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Срок действия сертификата ""%1"" истек. Электронная расписка об ознакомлении с информацией квалифицированного сертификата не может быть отправлена.'"), + ДанныеЗаявления.СертификатОснование); + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки.Описание; + ОткрытьФормуИнформацииСертификата(Новый Структура("ОписаниеОшибки", ОписаниеОшибки)); + Возврат; + КонецЕсли; + + СформироватьИОтправитьФайлРасписки(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСертификат(Команда) + + Если Не ЗначениеЗаполнено(Объект.Программа) Тогда + ТекстОшибки = НСтр("ru = 'Программа: Поле не заполнено.'"); + ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки,, "Объект.Программа"); + Возврат; + КонецЕсли; + + УстановитьПолученныйСертификат(); + +КонецПроцедуры + +&НаКлиенте +Процедура Готово(Команда) + + Закрыть(); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -778,9 +958,12 @@ ОповеститьОбИзменении(Объект.Ссылка); - Контекст = Новый Структура; + Контекст = ЭлектроннаяПодписьСлужебныйКлиент.ПараметрыОповещенияПриЗаписиСертификата(); + Если ЭтоНовый Тогда - Контекст.Вставить("ЭтоНовый"); + Контекст.ЭтоНовый = Истина; + ИначеЕсли Элементы.Готово.Видимость Тогда + Контекст.Установлен = Истина; КонецЕсли; ОповеститьОбИзмененииЗаявления = Ложь; @@ -791,7 +974,7 @@ &НаКлиенте Функция ЗаявлениеИсполнено() - Возврат Объект.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено"); + Возврат ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено"); КонецФункции @@ -804,35 +987,62 @@ ТекущийОбъект = Параметры.СертификатСсылка.ПолучитьОбъект(); ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); - ПоследнееСостояниеЗаявления = Объект.СостояниеЗаявления; + ОбновитьДанныеЗаявления(); - Содержание = ТекущийОбъект.СодержаниеЗаявления.Получить(); + Если ДоступныНапоминанияПользователя + И ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено Тогда + НапомнитьОГотовности = РегистрыСведений.ОповещенияПользователейСертификатов.ПрочитатьОтметкуОНапоминании(Объект.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьДанныеСертификата() + + ТекущийОбъект = Объект.Ссылка.ПолучитьОбъект(); + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьДанныеЗаявления() + + ДанныеЗаявленияМенеджерЗаписи = РегистрыСведений.ЗаявленияНаВыпускСертификата.СоздатьМенеджерЗаписи(); + ДанныеЗаявленияМенеджерЗаписи.Сертификат = Объект.Ссылка; + ДанныеЗаявленияМенеджерЗаписи.Прочитать(); + + ПоследнееСостояниеЗаявления = ДанныеЗаявленияМенеджерЗаписи.СостояниеЗаявления; + Содержание = ДанныеЗаявленияМенеджерЗаписи.СодержаниеЗаявления.Получить(); Если ТипЗнч(Содержание) = Тип("Структура") Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, Содержание); - КонецЕсли; - - Если Содержание.Свойство("ЗапросНаСертификат") - И ТипЗнч(Содержание.ЗапросНаСертификат) = Тип("ДвоичныеДанные") Тогда - АдресЗапросаНаСертификат = ПоместитьВоВременноеХранилище(Содержание.ЗапросНаСертификат, УникальныйИдентификатор); - КонецЕсли; - - Если Содержание.Свойство("Сертификат") - И ТипЗнч(Содержание.Сертификат) = Тип("ДвоичныеДанные") Тогда + Если Содержание.Свойство("ЗапросНаСертификат") + И ТипЗнч(Содержание.ЗапросНаСертификат) = Тип("ДвоичныеДанные") Тогда + + АдресЗапросаНаСертификат = ПоместитьВоВременноеХранилище(Содержание.ЗапросНаСертификат, УникальныйИдентификатор); + КонецЕсли; - АдресСертификата = ПоместитьВоВременноеХранилище(Содержание.Сертификат, УникальныйИдентификатор); - КонецЕсли; - - Если Содержание.Свойство("КорневойСертификат") - И ТипЗнч(Содержание.КорневойСертификат) = Тип("ДвоичныеДанные") Тогда + Если Содержание.Свойство("Сертификат") + И ТипЗнч(Содержание.Сертификат) = Тип("ДвоичныеДанные") Тогда + + АдресСертификата = ПоместитьВоВременноеХранилище(Содержание.Сертификат, УникальныйИдентификатор); + КонецЕсли; - АдресКорневогоСертификата = ПоместитьВоВременноеХранилище(Содержание.КорневойСертификат, УникальныйИдентификатор); + Если Содержание.Свойство("КорневойСертификат") + И ТипЗнч(Содержание.КорневойСертификат) = Тип("ДвоичныеДанные") Тогда + + АдресКорневогоСертификата = ПоместитьВоВременноеХранилище(Содержание.КорневойСертификат, УникальныйИдентификатор); + КонецЕсли; + КонецЕсли; - Если ТекущийОбъект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено Тогда + ЗначениеВРеквизитФормы(ДанныеЗаявленияМенеджерЗаписи, "ДанныеЗаявления"); + + Если ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено Тогда АвтоЗаголовок = Ложь; Заголовок = НСтр("ru = 'Заявление, по которому не удалось получить сертификат'"); - ИначеЕсли ТекущийОбъект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + ИначеЕсли ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда АвтоЗаголовок = Ложь; Заголовок = НСтр("ru = 'Заявление, по которому был получен сертификат'"); КонецЕсли; @@ -840,16 +1050,57 @@ КонецПроцедуры &НаСервере -Процедура СкопироватьЗаявление() +Процедура СкопироватьЗаявление(СертификатОснование) + + ДанныеЗаявленияМенеджерЗаписи = РеквизитФормыВЗначение("ДанныеЗаявления"); ДокументыПартнерЭтоИП = Ложь; Объект.Добавил = Пользователи.ТекущийПользователь(); - Объект.Пользователь = Объект.Добавил; - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено; - СертификатОбъект = Параметры.СертификатОснование.ПолучитьОбъект(); - Содержание = СертификатОбъект.СодержаниеЗаявления.Получить(); + ДанныеЗаявленияМенеджерЗаписи.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Фамилия КАК Фамилия, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Имя КАК Имя, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Отчество КАК Отчество, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователь КАК Пользователь, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК Пользователи, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Организация КАК Организация, + | СертификатыКлючейЭлектроннойПодписиИШифрования.ФизическоеЛицо КАК Сотрудник, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Программа КАК Программа, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Должность КАК Должность, + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.СодержаниеЗаявления, Неопределено) КАК СодержаниеЗаявления, + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.ИдентификаторАбонента, Неопределено) КАК ИдентификаторАбонента, + | СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо КАК ДействителенДо, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка КАК Ссылка, + | Представление(СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка) КАК СертификатПредставление, + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.СостояниеЗаявления, Неопределено) КАК СостояниеЗаявления + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", СертификатОснование); + ДанныеСертификатаОснования= Запрос.Выполнить().Выбрать(); + ДанныеСертификатаОснования.Следующий(); + + Объект.Пользователь = ДанныеСертификатаОснования.Пользователь; + Объект.Пользователи.Загрузить(ДанныеСертификатаОснования.Пользователи.Выгрузить()); + + Если ЗначениеЗаполнено(ДанныеСертификатаОснования.СодержаниеЗаявления) Тогда + Содержание = ДанныеСертификатаОснования.СодержаниеЗаявления.Получить(); + Иначе + Содержание = Неопределено; + КонецЕсли; + + ДанныеЗаявленияМенеджерЗаписи.СертификатОснование = СертификатОснование; + ДанныеЗаявленияМенеджерЗаписи.ИдентификаторАбонента = ДанныеСертификатаОснования.ИдентификаторАбонента; + Если ТипЗнч(Содержание) = Тип("Структура") Тогда КопируемыеСвойства = ""; @@ -891,21 +1142,104 @@ Иначе - Организация = СертификатОбъект.Организация; + Организация = ДанныеСертификатаОснования.Организация; ЗаполнитьРеквизитыОрганизации(); РеквизитыВладельца = РеквизитыВладельцаСертификата(); - ЗаполнитьЗначенияСвойств(РеквизитыВладельца, СертификатОбъект, "Фамилия, Имя, Отчество, Должность"); + ЗаполнитьЗначенияСвойств(РеквизитыВладельца, ДанныеСертификатаОснования, "Фамилия, Имя, Отчество, Должность"); УстановитьРеквизитыВладельца(РеквизитыВладельца); ДозаполнитьПоПредыдущемуЗаявлению(); КонецЕсли; - Объект.Программа = СертификатОбъект.Программа; + Если Не ЗначениеЗаполнено(Сотрудник) Тогда + Сотрудник = ДанныеСертификатаОснования.Сотрудник; + КонецЕсли; + + Объект.Программа = ДанныеСертификатаОснования.Программа; + + СертификатОснованиеДействуетДо = ДанныеСертификатаОснования.ДействителенДо; + Если ПроверитьСертификатНаВозможностьЭлектронногоПродления(ДанныеСертификатаОснования, Ложь) Тогда + ДанныеЗаявления.ОформленоВЭлектронномВиде = Истина; + КонецЕсли; + + ЗначениеВРеквизитФормы(ДанныеЗаявленияМенеджерЗаписи, "ДанныеЗаявления"); КонецПроцедуры +&НаСервереБезКонтекста +Функция ДанныеСертификата(Сертификат) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.ИдентификаторАбонента, Неопределено) КАК ИдентификаторАбонента, + | СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо КАК ДействителенДо, + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка КАК Ссылка, + | Представление(СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка) КАК СертификатПредставление, + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.СостояниеЗаявления, Неопределено) КАК СостояниеЗаявления + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Сертификат); + ДанныеСертификата= Запрос.Выполнить().Выбрать(); + ДанныеСертификата.Следующий(); + + Возврат ДанныеСертификата; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПроверитьСертификатНаВозможностьЭлектронногоПродления(Знач ДанныеСертификата, СообщатьОбОшибках = Истина) + + Если ТипЗнч(ДанныеСертификата) = Тип("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда + ДанныеСертификата = ДанныеСертификата(ДанныеСертификата); + КонецЕсли; + + ВозможноЭлектронноеПродление = Истина; + ШаблонСообщения = ""; + + Если ДанныеСертификата.СостояниеЗаявления = Неопределено Тогда + ВозможноЭлектронноеПродление = Ложь; + ШаблонСообщения = НСтр("ru = 'Для сертификата ""%1"" не найдено предыдущее заявление, электронное продление невозможно.'"); + ИначеЕсли ДанныеСертификата.СостояниеЗаявления <> Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + Если СообщатьОбОшибках Тогда + ШаблонСообщения = НСтр("ru = 'Для ""%1"" электронное продление невозможно, статус заявления продлеваемого сертификата ""%2""'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, + ДанныеСертификата.СертификатПредставление, ДанныеСертификата.СостояниеЗаявления), + ДанныеСертификата.Ссылка); + КонецЕсли; + Возврат Ложь; + Иначе + ТекущаяДата = ТекущаяУниверсальнаяДата(); + Если Не ЗначениеЗаполнено(ДанныеСертификата.ДействителенДо) Тогда + ВозможноЭлектронноеПродление = Ложь; + ШаблонСообщения = НСтр("ru = '""%1"" не является действующим сертификатом, электронное продление невозможно.'"); + ИначеЕсли ДанныеСертификата.ДействителенДо < ТекущаяДата Тогда + ВозможноЭлектронноеПродление = Ложь; + ШаблонСообщения = НСтр("ru = 'Сертификат ""%1"" просрочен, электронное продление невозможно.'"); + ИначеЕсли ДанныеСертификата.ДействителенДо >= ТекущаяДата + 30 * 24 * 60 * 60 Тогда + ВозможноЭлектронноеПродление = Ложь; + ШаблонСообщения = НСтр("ru = 'Срок действия сертификата ""%1"" истекает более чем через 30 дней, электронное продление невозможно.'"); + КонецЕсли; + КонецЕсли; + + Если Не ВозможноЭлектронноеПродление И СообщатьОбОшибках Тогда + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, + ДанныеСертификата.СертификатПредставление), ДанныеСертификата.Ссылка); + КонецЕсли; + + Возврат ВозможноЭлектронноеПродление; + +КонецФункции + &НаСервере Функция ЗаявлениеПроверено() @@ -920,7 +1254,9 @@ Процедура ЗаписатьЗаявление() ТекущийОбъект = РеквизитФормыВЗначение("Объект"); - Содержание = ТекущийОбъект.СодержаниеЗаявления.Получить(); + ДанныеЗаявленияМенеджерЗаписи = РеквизитФормыВЗначение("ДанныеЗаявления"); + + Содержание = ДанныеЗаявленияМенеджерЗаписи.СодержаниеЗаявления.Получить(); Если ТипЗнч(Содержание) <> Тип("Структура") Тогда Содержание = Новый Структура; КонецЕсли; @@ -971,7 +1307,7 @@ НаименованиеСертификата = СокрП(Фамилия + " " + Имя + " " + Отчество) + " (" + НСтр("ru = 'Заявление на новый сертификат'") + ")"; - Если Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено Тогда + Если ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено Тогда ОбновитьЗначение(Содержание, "ВариантАлгоритмов"); ОбновитьЗначение(Содержание, "ВариантУдостоверяющегоЦентра"); @@ -982,7 +1318,7 @@ ОбновитьЗначение(Содержание, "ПрограммаИмя"); ОбновитьЗначение(Содержание, "ПрограммаТип"); - ИначеЕсли Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Подготовлено Тогда + ИначеЕсли ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Подготовлено Тогда ОбновитьЗначение(Содержание, "ВариантАлгоритмов"); ОбновитьЗначение(Содержание, "ВариантУдостоверяющегоЦентра"); @@ -998,34 +1334,12 @@ ОбновитьЗначение(Содержание, "ДокументыПоляСертификата"); ОбновитьЗначение(Содержание, "ДатаЗаявления"); - ИначеЕсли Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено Тогда + ИначеЕсли ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен Тогда - ОбновитьЗначение(Содержание, "ИдентификаторДокументооборота"); - ОбновитьЗначение(Содержание, "ДатаОтправки"); - ОбновитьЗначение(Содержание, "ДатаОбновленияСостояния"); - ОбновитьЗначение(Содержание, "СостояниеОбработкиЗаявления"); - - ИначеЕсли Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен Тогда - - ОбновитьЗначение(Содержание, "ОтпечатокКорневогоСертификата"); - ОбновитьЗначение(Содержание, "Сертификат", ПолучитьИзВременногоХранилища(АдресСертификата)); - ОбновитьЗначение(Содержание, "КорневойСертификат", ПолучитьИзВременногоХранилища(АдресКорневогоСертификата)); - ОбновитьЗначение(Содержание, "ИдентификаторАбонента"); - ОбновитьЗначение(Содержание, "ДатаОбновленияСостояния"); - ОбновитьЗначение(Содержание, "СостояниеОбработкиЗаявления"); ОбновитьЗначение(Содержание, "ОшибкаУстановкиСертификата"); ОбновитьЗначение(Содержание, "ДатаУстановкиСертификата"); - Если ТекущийОбъект.ДанныеСертификата.Получить() <> Содержание.Сертификат Тогда - ТекущийОбъект.ДанныеСертификата = Новый ХранилищеЗначения(Содержание.Сертификат); - КонецЕсли; - ИначеЕсли Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено Тогда - - ОбновитьЗначение(Содержание, "ДатаОбновленияСостояния"); - ОбновитьЗначение(Содержание, "СостояниеОбработкиЗаявления"); - НаименованиеСертификата = СокрП(Фамилия + " " + Имя + " " + Отчество) + " (" + НСтр("ru = 'Удалить'") + ")"; - - ИначеЕсли Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + ИначеЕсли ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда ОбновитьЗначение(Содержание, "ОшибкаУстановкиСертификата"); ОбновитьЗначение(Содержание, "ДатаУстановкиСертификата"); @@ -1039,18 +1353,30 @@ КонецЕсли; ЭтоНовый = ТекущийОбъект.ЭтоНовый(); - ТекущийОбъект.Организация = Организация; + Если ЭтоНовый Тогда + ТекущийОбъект.ДатаПолученияСертификата = '39991231235959'; + КонецЕсли; + + МетаданныеРеквизиты = ТекущийОбъект.Метаданные().Реквизиты; + + ТекущийОбъект.Организация = МетаданныеРеквизиты["Организация"].Тип.ПривестиЗначение(Организация); + ТекущийОбъект.ФизическоеЛицо = МетаданныеРеквизиты["ФизическоеЛицо"].Тип.ПривестиЗначение(Сотрудник); ТекущийОбъект.Имя = Имя; ТекущийОбъект.Фамилия = Фамилия; ТекущийОбъект.Отчество = Отчество; - ТекущийОбъект.СодержаниеЗаявления = Новый ХранилищеЗначения(Содержание); ТекущийОбъект.Записать(); + ДанныеЗаявленияМенеджерЗаписи.Сертификат = ТекущийОбъект.Ссылка; + ДанныеЗаявленияМенеджерЗаписи.ДляФизическогоЛица = ЭтоФизическоеЛицо; + ДанныеЗаявленияМенеджерЗаписи.СодержаниеЗаявления = Новый ХранилищеЗначения(Содержание); + ДанныеЗаявленияМенеджерЗаписи.Записать(); + Модифицированность = Ложь; ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + ЗначениеВРеквизитФормы(ДанныеЗаявленияМенеджерЗаписи, "ДанныеЗаявления"); ОповеститьОбИзмененииЗаявления = Истина; - ПоследнееСостояниеЗаявления = Объект.СостояниеЗаявления; + ПоследнееСостояниеЗаявления = ДанныеЗаявления.СостояниеЗаявления; Если ЭтоНовый Тогда ЗаблокироватьДанныеДляРедактирования(ТекущийОбъект.Ссылка, , УникальныйИдентификатор); @@ -1116,43 +1442,149 @@ &НаСервере Функция ОбновитьСостояниеОбработкиЗаявленияНаСервере() - Результат = ПолучитьСертификат(); - Если Результат = Истина Тогда - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен; - ИначеЕсли Результат = Ложь Тогда - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено; + Если ДанныеЗаявления.СостояниеЗаявления = СостояниеЗаявления(Объект.Ссылка) Тогда + Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ОбновитьСостояниеЗаявления(Объект.Ссылка); КонецЕсли; - ЗаписатьЗаявление(); + ОбновитьДанныеСертификата(); + ОбновитьДанныеЗаявления(); - Возврат Результат; + СертификатПолучен = СертификатПолучен(ЭтотОбъект); + + Если ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено + Или СертификатПолучен Тогда + + Если ДоступныНапоминанияПользователя И НапомнитьОГотовности Тогда + НапомнитьОГотовности = Ложь; + ЭлектроннаяПодписьСлужебный.ИзменитьОтметкуОНапоминании( + Объект.Ссылка, Ложь, "АвтоматическоеНапоминаниеОбИзмененииСостоянияЗаявления"); + КонецЕсли; + Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ОтключитьОтслеживаниеИзмененияСостоянияЗаявления( + ДанныеЗаявления.ИдентификаторДокументооборота); + + КонецЕсли; + + УстановитьВидимостьИДоступность(); + + Возврат СертификатПолучен; КонецФункции +&НаСервереБезКонтекста +Функция СостояниеЗаявления(Сертификат) + Возврат Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.СостояниеЗаявления(Сертификат) +КонецФункции + &НаСервере -Процедура УстановитьДоступность() +Процедура УстановитьВидимостьИДоступность() ЗаявлениеОтправлено = ЗаявлениеОтправлено(ЭтотОбъект); + Элементы.ОформленоВЭлектронномВиде.Заголовок = ?(ЗаявлениеОтправлено, + НСтр("ru = 'Оформлено'"), НСтр("ru = 'Оформить'")); + + СертификатПолучен = СертификатПолучен(ЭтотОбъект); + СертификатКУстановке = СертификатПолучен + И Не ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено; - Элементы.ГруппаПрограмма.ТолькоПросмотр = ЗаявлениеОтправлено; - Элементы.ГруппаОрганизация.ТолькоПросмотр = ЗаявлениеОтправлено; - Элементы.ГруппаОбработкаЗаявления.Видимость = ЗаявлениеОтправлено; - Элементы.ГруппаПодписантЗаявления.ТолькоПросмотр = ЗаявлениеОтправлено; - Элементы.ГруппаВладелецСертификата.ТолькоПросмотр = ЗаявлениеОтправлено; - Элементы.ГруппаОбслуживающаяОрганизация.ТолькоПросмотр = ЗаявлениеОтправлено; + ТолькоПросмотрЭлементов = ТолькоПросмотрЗаявления ИЛИ ЗаявлениеОтправлено; - Элементы.ОтправитьЗаявление.Доступность = Не ЗаявлениеОтправлено; + Элементы.ГруппаПрограмма.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ГруппаОрганизация.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ГруппаОбработкаЗаявления.Видимость = ТолькоПросмотрЭлементов; + Элементы.ГруппаПодписантЗаявления.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ГруппаВладелецСертификата.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ГруппаОбслуживающаяОрганизация.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ГруппаВидПродления.ТолькоПросмотр = ТолькоПросмотрЭлементов; + Элементы.ДекорацияУсловияСоглашения.Видимость = Не ЗаявлениеОтправлено; + Элементы.ОтправитьЗаявление.Видимость = Не ТолькоПросмотрЭлементов; + Элементы.ТехническаяИнформация.Видимость = ЗаявлениеОтправлено; + + Если Не Элементы.Готово.Видимость Тогда + Элементы.Закрыть.Видимость = ЗаявлениеОтправлено; + Элементы.Закрыть.КнопкаПоУмолчанию = ЗаявлениеОтправлено; + Иначе + Элементы.Закрыть.Видимость = Ложь; + КонецЕсли; + + Элементы.ДекорацияСостояние.Заголовок = СтрШаблон("%1", ДанныеЗаявления.СостояниеЗаявления); + + Если СертификатКУстановке Тогда + Если ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена + И ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + + Элементы.ПодписатьИОтправитьСертификат.Видимость = Истина И Не ТолькоПросмотрЗаявления; + Элементы.УстановитьСертификат.Видимость = Ложь; + Элементы.ПодписатьИОтправитьСертификат.КнопкаПоУмолчанию = Истина И Не ТолькоПросмотрЗаявления; + Если Не ТолькоПросмотрЗаявления Тогда + Элементы.ДекорацияСостояние.Заголовок = НСтр( + "ru = 'Исполнено. Подпишите и отправьте расписку об ознакомлении с информацией, содержащейся в квалифицированном сертификате'"); + КонецЕсли; + Иначе + Элементы.УстановитьСертификат.Видимость = Истина И Не ТолькоПросмотрЗаявления; + Элементы.ПодписатьИОтправитьСертификат.Видимость = Ложь; + Элементы.УстановитьСертификат.КнопкаПоУмолчанию = Истина И Не ТолькоПросмотрЗаявления; + Если ДанныеЗаявления.СостояниеЗаявления + = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена + И Не ТолькоПросмотрЗаявления Тогда + Элементы.ДекорацияСостояние.Заголовок = НСтр( + "ru = 'Исполнено. Перед установкой сертификата передайте обслуживающей организации расписку об ознакомлении с информацией, содержащейся в квалифицированном сертификате'"); + КонецЕсли; + КонецЕсли; + Иначе + Элементы.УстановитьСертификат.Видимость = Ложь; + Элементы.ПодписатьИОтправитьСертификат.Видимость = Ложь; + КонецЕсли; + + Элементы.ОбновитьСостояниеОбработкиЗаявления.Доступность = Не ТолькоПросмотрЗаявления; + + Элементы.СведенияОЗаявленииИВладельцеСертификата.Видимость = ЗаявлениеОтправлено И ДанныеЗаявления.ОформленоВЭлектронномВиде; + Элементы.СодержаниеСертификата.Видимость = СертификатПолучен; + + Элементы.ГруппаПаспорт.Видимость = Не ЗаявлениеОтправлено; + Элементы.ГруппаДоверенность.Видимость = Не ЗаявлениеОтправлено И Не ЭтоФизическоеЛицо + И Не ЭтоИндивидуальныйПредприниматель И Не ЗаявлениеДляРуководителейЮридическихЛицДоступно; + Элементы.ОтправитьЗаявление.Доступность = Не ТолькоПросмотрЭлементов; + + Элементы.НапомнитьОГотовности.Видимость = ДоступныНапоминанияПользователя + И (ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтображениеРеквизитовЗависимыхОтВидаПродления() + + ЭлектронноеПродление = ДанныеЗаявления.ОформленоВЭлектронномВиде; + + Элементы.СертификатОснование.Видимость = ЭлектронноеПродление; + Элементы.ГруппаБумажноеПродление.Видимость = Не ЭлектронноеПродление; + Элементы.ГруппаПечатьЗаявления.Видимость = Не ЭлектронноеПродление; + Элементы.ГруппаЭлектронноеПродление.Видимость = ЭлектронноеПродление; + + Элементы.ОтправитьЗаявление.Заголовок = ?(ЭлектронноеПродление, + НСтр("ru='Подписать и отправить заявление'", "ru"), НСтр("ru='Отправить заявление'", "ru")); + КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ЗаявлениеОтправлено(Форма) - Объект = Форма.Объект; + ДанныеЗаявления = Форма.ДанныеЗаявления; - Возврат ЗначениеЗаполнено(Объект.СостояниеЗаявления) - И Объект.СостояниеЗаявления <> ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") - И Объект.СостояниеЗаявления <> ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено"); + Возврат ЗначениеЗаполнено(ДанныеЗаявления.СостояниеЗаявления) + И ДанныеЗаявления.СостояниеЗаявления <> ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено") + И ДанныеЗаявления.СостояниеЗаявления <> ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено"); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция СертификатПолучен(Форма) + + ДанныеЗаявления = Форма.ДанныеЗаявления; + + Возврат ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено") + ИЛИ ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен") + ИЛИ ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена"); КонецФункции @@ -1354,6 +1786,7 @@ КонецПроцедуры + #КонецОбласти #Область ИзменениеОсновныхРеквизитов @@ -1398,6 +1831,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработчикОжиданияНапомнитьОГотовности() + + ЭлектроннаяПодписьСлужебныйКлиент.ИзменитьОтметкуОНапоминании(Объект.Ссылка, НапомнитьОГотовности, ЭтотОбъект); + +КонецПроцедуры + &НаКлиенте Функция СведенияОбОрганизации() @@ -1603,7 +2043,7 @@ УстановитьРеквизитыВладельца(Реквизиты); Если Не ЭтоОбработкаОповещения - И ЗначениеЗаполнено(Объект.СостояниеЗаявления) Тогда + И ЗначениеЗаполнено(ДанныеЗаявления.СостояниеЗаявления) Тогда ПроверитьЗаполнениеОсновныхРеквизитов(); КонецЕсли; @@ -1702,6 +2142,7 @@ ЭтоЮридическоеЛицо = Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель; Элементы.ГруппаПодписантЗаявления.Видимость = ЭтоЮридическоеЛицо; + Элементы.ГруппаДоверенность.Видимость = ЭтоЮридическоеЛицо И Не ЗаявлениеДляРуководителейЮридическихЛицДоступно; Элементы.ДокументыРуководитель.АвтоОтметкаНезаполненного = ЭтоЮридическоеЛицо; Элементы.ДокументыРуководительОснование.АвтоОтметкаНезаполненного = ЭтоЮридическоеЛицо; Элементы.ДокументыРуководительДолжность.АвтоОтметкаНезаполненного = ЭтоЮридическоеЛицо; @@ -1819,6 +2260,18 @@ КонецПроцедуры +&НаКлиенте +Процедура ЭлектронноеПродлениеПриИзмененииОбработчикОжидания() + + УстановитьОтображениеРеквизитовЗависимыхОтВидаПродления(); + Если ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + Если ЗначениеЗаполнено(ДанныеЗаявления.СертификатОснование) Тогда + ПроверитьСертификатНаВозможностьЭлектронногоПродления(ДанныеЗаявления.СертификатОснование); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ОчиститьРеквизитыОрганизации(ОчищатьПодчиненные) @@ -1872,14 +2325,14 @@ Если Не ЭтоФизическоеЛицо Тогда ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект, ПроверяемыеРеквизиты, - РеквизитыОрганизации(ЭтотОбъект), + РеквизитыОрганизацииСписок(ЭтотОбъект), ?(Элементы.Организация.Видимость, "Организация", "НаименованиеСокращенное"), НСтр("ru = 'Организация - %1:'")); КонецЕсли; ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект, ПроверяемыеРеквизиты, - РеквизитыВладельцаСертификата(ЭтотОбъект), + РеквизитыВладельцаСертификатаСписок(ЭтотОбъект), ?(Элементы.Сотрудник.Видимость, "Сотрудник", "ВладелецСертификатаСтрокой"), ?(ЭтоФизическоеЛицо, НСтр("ru = 'Физическое лицо - %1:'"), @@ -1891,27 +2344,35 @@ КонецФункции &НаСервереБезКонтекста -Функция РеквизитыОрганизации(Форма = Неопределено) +Функция РеквизитыОрганизации() + + Реквизиты = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.РеквизитыОрганизации(Неопределено); + Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + +КонецФункции + +&НаСервереБезКонтекста +Функция РеквизитыОрганизацииСписок(Форма) Реквизиты = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.РеквизитыОрганизации(Форма); - - Если Форма = Неопределено Тогда - Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); - КонецЕсли; - Возврат Реквизиты; КонецФункции &НаСервереБезКонтекста -Функция РеквизитыВладельцаСертификата(Форма = Неопределено) +Функция РеквизитыВладельцаСертификата() + + Реквизиты = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.РеквизитыВладельцаСертификата(Неопределено); + + Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + +КонецФункции + +&НаСервереБезКонтекста +Функция РеквизитыВладельцаСертификатаСписок(Форма) Реквизиты = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.РеквизитыВладельцаСертификата(Форма); - Если Форма = Неопределено Тогда - Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); - КонецЕсли; - Возврат Реквизиты; КонецФункции @@ -2038,23 +2499,30 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | СертификатыКлючейЭлектроннойПодписиИШифрования.СодержаниеЗаявления КАК СодержаниеЗаявления + | ЗаявленияНаВыпускСертификата.СодержаниеЗаявления КАК СодержаниеЗаявления |ИЗ - | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК + | СертификатыКлючейЭлектроннойПодписиИШифрования + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка |ГДЕ - | СертификатыКлючейЭлектроннойПодписиИШифрования.Фамилия = &Фамилия + | (СертификатыКлючейЭлектроннойПодписиИШифрования.Фамилия = &Фамилия | И СертификатыКлючейЭлектроннойПодписиИШифрования.Имя = &Имя | И СертификатыКлючейЭлектроннойПодписиИШифрования.Отчество = &Отчество | И СертификатыКлючейЭлектроннойПодписиИШифрования.Организация = &Организация + | ИЛИ &ОтборПоФизическомуЛицу) | И СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка <> &ЭтаСсылка - | |УПОРЯДОЧИТЬ ПО | СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо УБЫВ"; + Запрос.УстановитьПараметр("ЭтаСсылка", Объект.Ссылка); Запрос.УстановитьПараметр("Имя", Имя); Запрос.УстановитьПараметр("Фамилия", Фамилия); Запрос.УстановитьПараметр("Отчество", Отчество); Запрос.УстановитьПараметр("Организация", Организация); + Запрос.УстановитьПараметр("ФизическоеЛицо", Сотрудник); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборПоФизическомуЛицу", + ?(ЗначениеЗаполнено(Сотрудник), "СертификатыКлючейЭлектроннойПодписиИШифрования.ФизическоеЛицо = &ФизическоеЛицо", "ЛОЖЬ")); СведенияОЗаявлении = Запрос.Выполнить().Выбрать(); РеквизитыЗаявления = Неопределено; @@ -2147,10 +2615,12 @@ ОбработкаМодуль = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата; ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект, - ПроверяемыеРеквизиты, РеквизитыПодписанта(ЭтотОбъект)); + ПроверяемыеРеквизиты, РеквизитыПодписантаСписок(ЭтотОбъект)); - ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект, - ПроверяемыеРеквизиты, РеквизитыОбслуживающейОрганизации(ЭтотОбъект)); + Если Не ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + ОбработкаМодуль.ДобавитьРеквизитыДляПроверки(ЭтотОбъект, + ПроверяемыеРеквизиты, РеквизитыОбслуживающейОрганизацииСписок(ЭтотОбъект)); + КонецЕсли; Результат = Не ОбработкаМодуль.ПроверитьЗаполнениеРеквизитов(ЭтотОбъект, ПроверяемыеРеквизиты, ДокументыПартнерЭтоИП, Ложь); @@ -2166,7 +2636,15 @@ КонецФункции &НаКлиентеНаСервереБезКонтекста -Функция РеквизитыПодписанта(Форма = Неопределено) +Функция РеквизитыПодписанта() + + Реквизиты = РеквизитыПодписантаСписок(Неопределено); + Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция РеквизитыПодписантаСписок(Форма = Неопределено) Реквизиты = Новый СписокЗначений; Реквизиты.Добавить("ДокументыРуководитель", НСтр("ru = 'Подписант заявления'")); @@ -2174,10 +2652,11 @@ Реквизиты.Добавить("ДокументыРуководительОснование", НСтр("ru = 'Основание'")); Если Форма = Неопределено Тогда - Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + Возврат Реквизиты; КонецЕсли; - Если Форма.ЭтоИндивидуальныйПредприниматель Или Форма.ЭтоФизическоеЛицо Тогда + Если Форма.ЭтоИндивидуальныйПредприниматель Или Форма.ЭтоФизическоеЛицо + Или Форма.ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда Реквизиты.НайтиПоЗначению("ДокументыРуководитель").Пометка = Истина; Реквизиты.НайтиПоЗначению("ДокументыРуководительДолжность").Пометка = Истина; Реквизиты.НайтиПоЗначению("ДокументыРуководительОснование").Пометка = Истина; @@ -2188,7 +2667,15 @@ КонецФункции &НаКлиентеНаСервереБезКонтекста -Функция РеквизитыОбслуживающейОрганизации(Форма = Неопределено) +Функция РеквизитыОбслуживающейОрганизации() + + Реквизиты = РеквизитыОбслуживающейОрганизацииСписок(Неопределено); + Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция РеквизитыОбслуживающейОрганизацииСписок(Форма = Неопределено) Реквизиты = Новый СписокЗначений; Реквизиты.Добавить("ДокументыПартнер", НСтр("ru = 'Обслуживающая организация'")); @@ -2196,10 +2683,14 @@ Реквизиты.Добавить("ДокументыПартнерКПП", НСтр("ru = 'КПП партнера'")); Если Форма = Неопределено Тогда - Возврат Новый Структура(СтрСоединить(Реквизиты.ВыгрузитьЗначения(), ",")); + Возврат Реквизиты; КонецЕсли; - Если Форма.ДокументыПартнерЭтоИП Или ПустаяСтрока(Форма.ДокументыПартнерИНН) Тогда + Если Форма.ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + Реквизиты.НайтиПоЗначению("ДокументыПартнер").Пометка = Истина; + Реквизиты.НайтиПоЗначению("ДокументыПартнерИНН").Пометка = Истина; + Реквизиты.НайтиПоЗначению("ДокументыПартнерКПП").Пометка = Истина; + ИначеЕсли Форма.ДокументыПартнерЭтоИП Или ПустаяСтрока(Форма.ДокументыПартнерИНН) Тогда Реквизиты.НайтиПоЗначению("ДокументыПартнерКПП").Пометка = Истина; КонецЕсли; @@ -2318,29 +2809,27 @@ СписокПараметров.Добавить("1.2.643.100.3", Поля.SNILS); СпособИдентификации = ""; - Если ЗапросПосле_01_09_2021() Тогда - Если ЭтоИндивидуальныйПредприниматель Тогда - // Поле INN - ИНН индивидуального предпринимателя или физического лица. - Поля.Вставить("INN", ИНН); - СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN); - Иначе - Если Не ЭтоФизическоеЛицо Тогда - // Поле INNLE - ИНН организации. - Поля.Вставить("INNLE", Прав(ИНН, 10)); - СписокПараметров.Добавить("1.2.643.100.4", Поля.INNLE); - КонецЕсли; - Поля.Вставить("INN", ВладелецИНН); - СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN); - КонецЕсли; - // Поле IdentificationKind - способ идентификации заявителя. 0 - при личном присутствии. - СпособИдентификации = СтрШаблон(" - |IdentKind:{%1}", 0); + + Если ЭтоИндивидуальныйПредприниматель Тогда + // Поле INN - ИНН индивидуального предпринимателя или физического лица. + Поля.Вставить("INN", ИНН); + СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN); Иначе - // Поле INN - ИНН организации или индивидуального предпринимателя или физического лица. - Поля.Вставить("INN", Прав("00" + ?(ЭтоФизическоеЛицо, ВладелецИНН, ИНН), 12)); + Если Не ЭтоФизическоеЛицо Тогда + // Поле INNLE - ИНН организации. + Поля.Вставить("INNLE", Прав(ИНН, 10)); + СписокПараметров.Добавить("1.2.643.100.4", Поля.INNLE); + КонецЕсли; + Поля.Вставить("INN", ВладелецИНН); СписокПараметров.Добавить("1.2.643.3.131.1.1", Поля.INN); КонецЕсли; + // Поле IdentificationKind - способ идентификации заявителя. 0 - при личном присутствии, + // 1 - с использованием квалифицированной ЭП. + + СпособИдентификации = ?(ДанныеЗаявления.ОформленоВЭлектронномВиде, 1, 0); + Поля.Вставить("IdentKind", СпособИдентификации); + // Поле E - электронная почта должностного лица организации или индивидуального предпринимателя или физического лица. Поля.Вставить("E", Лев(ЭлектроннаяПочта, 255)); СписокПараметров.Добавить("1.2.840.113549.1.9.1", Поля.E); @@ -2368,21 +2857,15 @@ |CertPolicies:{<1.2.643.100.113.1=>} |dwKeyUsage:{240} |SignTool:{%3} - |CertTemplate:{%4}%5 + |CertTemplate:{%4} + |IdentKind:{%5} |}", Свойства, ИспользованиеКлюча, ПредставлениеПрограммы, ШаблонСертификата, СпособИдентификации); - -КонецФункции -&НаСервереБезКонтекста -Функция ЗапросПосле_01_09_2021() - - Возврат МестноеВремя(ТекущаяУниверсальнаяДата(), "GMT+3") >= Дата(2021,9,1); - КонецФункции &НаСервереБезКонтекста @@ -2453,6 +2936,12 @@ КонецЕсли; КонецЕсли; + Если Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель + И Не ДокументыПоляСертификата.Свойство("INNLE") Тогда + Макет.Область("Должность").Объединить(); + Макет.Параметры.INNLE = ДокументыПоляСертификата.INN; + КонецЕсли; + Если Не ДокументыПоляСертификата.Свойство("L") Тогда Макет.УдалитьОбласть(Макет.Области.L, Смещать); КонецЕсли; @@ -2474,7 +2963,7 @@ Макет.Параметры.Телефон = ?(ЭтоФизическоеЛицо, ВладелецТелефон, Телефон); ДокументВидПредставление = ПредставлениеВидаДокумента(ДокументВид); - ДокументВидПредставление = НРег(Лев(ДокументВидПредставление, 1)) + Сред(ДокументВидПредставление, 2); + ДокументВидПредставление = НРег(Лев(ДокументВидПредставление, 1)) + Сред(ДокументВидПредставление, 2); ДокументНомерПредставление = ?(ДокументВид = "21", ПредставлениеРеквизитаНомерПаспортаРФ(ДокументНомер), ДокументНомер); @@ -2510,11 +2999,200 @@ КонецФункции +&НаСервере +Функция ПечатьИнформацииЗаявления() + + Макет = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПолучитьМакет("ИнформацияЗаявления"); + + СвойстваУЦ = СвойстваУЦ(ВариантУдостоверяющегоЦентра); + ЗаполнитьЗначенияСвойств(Макет.Параметры, СвойстваУЦ); + + Смещать = ТипСмещенияТабличногоДокумента.ПоВертикали; + + Если Не ДокументыПоляСертификата.Свойство("L") Тогда + Макет.УдалитьОбласть(Макет.Области.L, Смещать); + КонецЕсли; + + Если Не ДокументыПоляСертификата.Свойство("OGRNIP") Тогда + Макет.УдалитьОбласть(Макет.Области.OGRNIP, Смещать); + КонецЕсли; + + Если Не ДокументыПоляСертификата.Свойство("O") Тогда + Макет.УдалитьОбласть(Макет.Области.Организация, Смещать); + КонецЕсли; + + Если Не ДокументыПоляСертификата.Свойство("Street") Тогда + Макет.УдалитьОбласть(Макет.Области.Street, Смещать); + КонецЕсли; + + Документ = Новый ТабличныйДокумент; + + Макет.Параметры.ЗаголовокШапки = НСтр("ru = 'Сведения о заявлении и владельце сертификата'"); + ЗаполнитьЗначенияСвойств(Макет.Параметры, ЭтотОбъект); + ЗаполнитьЗначенияСвойств(Макет.Параметры, ДокументыПоляСертификата); + + ДокументВидПредставление = ПредставлениеВидаДокумента(ДокументВид); + ДокументВидПредставление = НРег(Лев(ДокументВидПредставление, 1)) + Сред(ДокументВидПредставление, 2); + + ДокументНомерПредставление = + ?(ДокументВид = "21", ПредставлениеРеквизитаНомерПаспортаРФ(ДокументНомер), ДокументНомер); + + ДокументКодПодразделенияПредставление = ПредставлениеРеквизитаДокументКодПодразделения(ДокументКодПодразделения); + ДокументДатаВыдачиПредставление = ПредставлениеРеквизитаДокументДатаВыдачи(ДокументДатаВыдачи); + + Макет.Параметры.УдостоверениеЛичности = ДокументВидПредставление + " " + ДокументНомерПредставление + " " + + НСтр("ru = 'от'") + " " + ДокументДатаВыдачиПредставление + " " + + НСтр("ru = 'выданный'") + " " + ДокументКемВыдан + + ?(ЗначениеЗаполнено(ДокументКодПодразделенияПредставление), ", " + НСтр("ru = 'код подразделения'") + + " " + ДокументКодПодразделенияПредставление + "", ""); + Макет.Параметры.ИдентификаторАбонента = ДанныеЗаявления.ИдентификаторАбонента; + + Документ.Вывести(Макет); + + Возврат Документ; + +КонецФункции + +&НаСервере +Функция ПечатьИнформацииСертификата() + + Макет = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПолучитьМакет("Сертификат"); + + ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата); + СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); + + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии); + СвойстваСубъектаСертификата = ЭлектроннаяПодпись.СвойстваСубъектаСертификата(СертификатКриптографии); + СвойстваИздателяСертификата = ЭлектроннаяПодпись.СвойстваИздателяСертификата(СертификатКриптографии); + + РасширенныеДанныеДляПечатиСертификата = ЭлектроннаяПодписьСлужебный.РасширенныеДанныеДляПечатиСертификата( + ДанныеСертификата); + + Макет = Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ПолучитьМакет("Сертификат"); + ЗаполнитьЗначенияСвойств(Макет.Параметры, РасширенныеДанныеДляПечатиСертификата); + + ТипИдентификацииДляПечати = ""; + Если РасширенныеДанныеДляПечатиСертификата.ТипИдентификации = 0 Тогда + ТипИдентификацииДляПечати = НСтр("ru = 'При личном присутствии'"); + ИначеЕсли РасширенныеДанныеДляПечатиСертификата.ТипИдентификации = 1 Тогда + ТипИдентификацииДляПечати = НСтр("ru = 'Без личного присутствия с использованием квалифицированной электронной подписи'"); + КонецЕсли; + + Макет.Параметры.СерийныйНомер = СвойстваСертификата.СерийныйНомер; + Макет.Параметры.ПериодДействия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 по %2'"), + Формат(СертификатКриптографии.ДатаНачала, НСтр("ru = 'ДФ=''dd MMMM yyyy ""г."" H:mm:ss'''")), + Формат(СертификатКриптографии.ДатаОкончания, НСтр("ru = 'ДФ=''dd MMMM yyyy ""г."" H:mm:ss'''"))); + + Макет.Параметры.НаименованиеУЦ = СвойстваИздателяСертификата.ОбщееИмя; + Макет.Параметры.АдресУЦ = АдресИзСертификатаКриптографии(СвойстваИздателяСертификата); + + Смещать = ТипСмещенияТабличногоДокумента.ПоВертикали; + + Если ЗначениеЗаполнено(СвойстваСубъектаСертификата.ИННЮЛ) + Или СтрДлина(СвойстваСубъектаСертификата.ИНН) = 10 + Или СтрНачинаетсяС(СвойстваСубъектаСертификата.ИНН, "00") Тогда + Макет.Параметры.Наименование = СвойстваСубъектаСертификата.Организация; + Макет.Параметры.ОГРН = СвойстваСубъектаСертификата.ОГРН; + Макет.Параметры.ИННЮЛ = ?(ЗначениеЗаполнено(СвойстваСубъектаСертификата.ИННЮЛ), + СвойстваСубъектаСертификата.ИННЮЛ, + СвойстваСубъектаСертификата.ИНН); + Макет.Параметры.Адрес = АдресИзСертификатаКриптографии(СвойстваСубъектаСертификата); + Макет.Параметры.Должность = СвойстваСубъектаСертификата.Должность; + Макет.УдалитьОбласть(Макет.Области.ОГРНИП, Смещать); + Макет.Параметры.ИНН = ?(ЗначениеЗаполнено(СвойстваСубъектаСертификата.ИННЮЛ), + СвойстваСубъектаСертификата.ИНН, ""); + Иначе + Макет.УдалитьОбласть(Макет.Области.СведенияЮЛ, Смещать); + Макет.УдалитьОбласть(Макет.Области.УполномоченноеЛицо, Смещать); + Если Не ЗначениеЗаполнено(СвойстваСубъектаСертификата.ОГРНИП) Тогда + Макет.УдалитьОбласть(Макет.Области.ОГРНИП, Смещать); + Иначе + Макет.Параметры.ОГРНИП = СвойстваСубъектаСертификата.ОГРНИП; + КонецЕсли; + Макет.Параметры.ИНН = СвойстваСубъектаСертификата.ИНН; + КонецЕсли; + + Макет.Параметры.ФИО = СокрЛП(СтрШаблон("%1 %2 %3", + СвойстваСубъектаСертификата.Фамилия, + СвойстваСубъектаСертификата.Имя, + СвойстваСубъектаСертификата.Отчество)); + Макет.Параметры.СНИЛС = СвойстваСубъектаСертификата.СНИЛС; + + Если ПустаяСтрока(ТипИдентификацииДляПечати) Тогда + Макет.УдалитьОбласть(Макет.Области.ТипИдентификации, Смещать); + Иначе + Макет.Параметры.ТипИдентификации = ТипИдентификацииДляПечати; + КонецЕсли; + + Макет.Параметры.Алгоритм = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата( + АдресСертификата, Истина); + Макет.Параметры.Класс = НСтр("ru = 'Класс средства ЭП КС1 (OID 1.2.643.100.113.1); Класс средства ЭП КС2 (OID 1.2.643.100.113.2)'"); + Макет.Параметры.КлассУЦ = НСтр("ru = 'КС2'"); + Макет.Параметры.ОбластьИспользования = НСтр("ru = 'Цифровая подпись, Неотрекаемость, Шифрование ключей, Шифрование данных'"); + Макет.Параметры.ОткрытыйКлюч = СертификатКриптографии.ОткрытыйКлюч; + + ТабличныйДокумент = Новый ТабличныйДокумент; + ТабличныйДокумент.Вывести(Макет); + + Возврат ТабличныйДокумент; + +КонецФункции + +&НаСервере +Функция АдресИзСертификатаКриптографии(Источник) + + Адрес = Новый Массив; + + Если ЗначениеЗаполнено(Источник.Страна) Тогда + Адрес.Добавить(Источник.Страна); + КонецЕсли; + + Если ЗначениеЗаполнено(Источник.Регион) Тогда + Адрес.Добавить(Источник.Регион); + КонецЕсли; + + Если ЗначениеЗаполнено(Источник.НаселенныйПункт) Тогда + Адрес.Добавить(Источник.НаселенныйПункт); + КонецЕсли; + + Если ЗначениеЗаполнено(Источник.Улица) Тогда + Адрес.Добавить(Источник.Улица); + КонецЕсли; + + Адрес = СтрСоединить(Адрес, ", "); + + Возврат Адрес; + +КонецФункции + +&НаКлиенте +Процедура ОткрытьПечатнуюФорму(ТабличныйДокумент, ИдентификаторПечатнойФормы, НазваниеПечатнойФормы) + + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + ТабличныйДокумент.Показать(НазваниеПечатнойФормы); + Возврат; + КонецЕсли; + + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + КоллекцияПечатныхФорм = МодульУправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторПечатнойФормы); + + ПечатнаяФорма = МодульУправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормы); + ПечатнаяФорма.СинонимМакета = НазваниеПечатнойФормы; + ПечатнаяФорма.ТабличныйДокумент = ТабличныйДокумент; + ПечатнаяФорма.ИмяФайлаПечатнойФормы = НазваниеПечатнойФормы; + + ОбластиОбъектов = Новый СписокЗначений; + МодульУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов); + +КонецПроцедуры + + &НаКлиенте Процедура ПечатьЗаявленияПослеУстановкиРасширенияДляРаботыСКриптографией(Результат, Контекст) Экспорт Если Результат = Неопределено Тогда - ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); + ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); Возврат; КонецЕсли; @@ -2536,33 +3214,37 @@ НСтр("ru = 'Создание ключа электронной подписи'"), "", Результат, Новый Структура, Новый Структура("ПоказатьИнструкцию", Истина)); - ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); + ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); Возврат; КонецЕсли; Если СписокПрограмм.Количество() = 0 Тогда Если Не ЗаполнитьСписокПрограмм() Тогда - ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); + ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Ложь, Контекст); Возврат; КонецЕсли; КонецЕсли; ПредставлениеПрограммы = ПоставляемоеПредставлениеПрограммы(СписокПрограмм, Объект.Программа); СоздатьКлючИЗапросНаСертификат( - Новый ОписаниеОповещения("ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат", ЭтотОбъект)); + Новый ОписаниеОповещения("ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат", ЭтотОбъект)); КонецПроцедуры &НаКлиенте -Процедура ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат(Результат, Контекст) Экспорт +Процедура ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Результат, Контекст) Экспорт Доступность = Истина; Если Результат <> Истина Тогда Возврат; КонецЕсли; - ПодключитьОбработчикОжидания("ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификатОбработчикОжидания", 0.1, Истина); + Если ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + ПодключитьОбработчикОжидания("ПодтвердитьДанныеЗаявленияПослеСозданияКлючаИЗапросаНаСертификатОбработчикОжидания", 0.1, Истина); + Иначе + ПодключитьОбработчикОжидания("ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификатОбработчикОжидания", 0.1, Истина); + КонецЕсли; КонецПроцедуры @@ -2572,7 +3254,7 @@ НапечататьДокументы(); Если Модифицированность Тогда - Объект.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено"); + ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено"); ЗаписатьЗаявление(); ПослеЗаписи(); КонецЕсли; @@ -2585,8 +3267,8 @@ Форма.ДокументыПечатались = Ложь; Форма.Модифицированность = Истина; - Если ЗначениеЗаполнено(Форма.Объект.СостояниеЗаявления) Тогда - Форма.Объект.СостояниеЗаявления = + Если ЗначениеЗаполнено(Форма.ДанныеЗаявления.СостояниеЗаявления) Тогда + Форма.ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.НеПодготовлено"); КонецЕсли; @@ -2685,6 +3367,19 @@ &НаКлиенте Процедура ОтправитьЗаявлениеПродолжениеПроверок() + Если ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + ПроверитьЗаявлениеВЭлектронномВидеПередОтправкой(); + Иначе + ПроверитьЗаявлениеВБумажномВидеПередОтправкой(); + КонецЕсли; + +КонецПроцедуры + +#Область ОтправкаЗаявленияВБумажномВиде + +&НаКлиенте +Процедура ПроверитьЗаявлениеВБумажномВидеПередОтправкой() + Если Не ДокументыПечатались Тогда ПоказатьПредупреждение(,НСтр("ru = 'Документы еще не печатались. |Заявление не будет принято пока не будут получены печатные документы.'")); @@ -2694,7 +3389,7 @@ Если ЗначениеЗаполнено(ДокументыПартнерИНН) И (ДокументыПартнерЭтоИП Или ЗначениеЗаполнено(ДокументыПартнерКПП)) Тогда - ОтправитьЗаявлениеПродолжение("Отправить", Неопределено); + ОтправитьЗаявлениеВБумажномВидеПродолжение("Отправить", Неопределено); Возврат; КонецЕсли; @@ -2720,18 +3415,406 @@ КонецЕсли; - ОповещениеОтправитьЗаявление = Новый ОписаниеОповещения("ОтправитьЗаявлениеПродолжение", ЭтотОбъект); + ОповещениеОтправитьЗаявление = Новый ОписаниеОповещения("ОтправитьЗаявлениеВБумажномВидеПродолжение", ЭтотОбъект); ПоказатьВопрос(ОповещениеОтправитьЗаявление, СокрЛП(Текст), Кнопки); КонецПроцедуры &НаКлиенте -Процедура ОтправитьЗаявлениеПродолжение(Ответ, ДополнительныеПараметры) Экспорт +Процедура ОтправитьЗаявлениеВБумажномВидеПродолжение(Ответ, ДополнительныеПараметры) Экспорт Если Ответ <> "Отправить" Тогда Возврат; КонецЕсли; + Оповещение = Новый ОписаниеОповещения("ОтправитьЗаявлениеВБумажномВидеЗавершение", ЭтотОбъект); + ПроверитьИнтернетПоддержку(Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьЗаявлениеВБумажномВидеЗавершение(Результат, Контекст) Экспорт + + Если ТипЗнч(Результат) <> Тип("Структура") Тогда + ИнтернетПоддержкаПользователейПодключена = Ложь; + Возврат; + КонецЕсли; + + ОписаниеОшибки = НовыйОписаниеОшибки(); + ИнтернетПоддержкаПользователейПодключена = Истина; + Если ОтправитьЗаявлениеНаСервере(Неопределено, "Регистрация", ОписаниеОшибки) Тогда + ПослеЗаписи(); + Иначе + + Если ИнтернетПоддержкаПользователейПодключена Тогда + ОбработкаПродолжения = Неопределено; + Иначе + ОбработкаПродолжения = Новый ОписаниеОповещения( + "ОтправитьЗаявлениеПослеПредупреждения", ЭтотОбъект); + КонецЕсли; + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось отправить заявление по причине: %1'"), ОписаниеОшибки.Текст); + ПоказатьПредупреждение(ОбработкаПродолжения, + УстановитьГиперссылку(ТекстОшибки, "its.1c.ru", "http://its.1c.ru")); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьЗаявлениеПослеПредупреждения(Контекст) Экспорт + + ОтправитьЗаявлениеВБумажномВидеПродолжение("Отправить", Неопределено); + +КонецПроцедуры + + +#КонецОбласти + +#Область ОтправкаЗаявленияВЭлектронномВиде + +&НаКлиенте +Процедура ПроверитьЗаявлениеВЭлектронномВидеПередОтправкой() + + Если Не Доступность Тогда + Возврат; + КонецЕсли; + + Отказ = Ложь; + + Если ЗначениеЗаполнено(ДанныеЗаявления.СертификатОснование) Тогда + Если Не ПроверитьСертификатНаВозможностьЭлектронногоПродления(ДанныеЗаявления.СертификатОснование) Тогда + Отказ = Истина; + КонецЕсли; + Иначе + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не заполнен продлеваемый сертификат'"),,,, Отказ); + КонецЕсли; + + Если Не ЗначениеЗаполнено(АдресФайлаПаспорт) Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не выбран файл скана паспорта'"),,,, Отказ); + КонецЕсли; + + Если Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель + И Не ЗначениеЗаполнено(АдресФайлаДоверенность) + И Не ЗаявлениеДляРуководителейЮридическихЛицДоступно Тогда + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не выбран файл доверенности'"),,,, Отказ); + КонецЕсли; + + Если Отказ Тогда + Возврат; + КонецЕсли; + + Если ДокументыПечатались И Не Модифицированность Тогда + ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат(Истина, Неопределено); + Возврат; + КонецЕсли; + + ОчиститьСообщения(); + Если Не ЗаявлениеПроверено() Тогда + Возврат; + КонецЕсли; + + Если Не ВариантУдостоверяющегоЦентраУстановлен() Тогда + Возврат; + КонецЕсли; + + Доступность = Ложь; + + СозданиеКлючаИЗапросаНаСертификатНачало(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПодтвердитьДанныеЗаявленияПослеСозданияКлючаИЗапросаНаСертификатОбработчикОжидания() + + ПараметрыФормы = Новый Структура("ИнформацияЗаявления", ПечатьИнформацииЗаявления()); + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПодтвержденияИнформации", + ЭтотОбъект, + "ИнформацияЗаявления"); + ОткрытьФорму("Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Информация", + ПараметрыФормы, ЭтотОбъект,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеПодтвержденияИнформации(РезультатЗакрытия, ДополнительныеПараметры) Экспорт + + Если РезультатЗакрытия <> Истина Тогда + Возврат; + КонецЕсли; + + Если ДополнительныеПараметры = "СодержаниеСертификата" Тогда + + ДанныеЗаявления.СостояниеЗаявления = + ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен"); + ЗаписатьЗаявление(); + ПослеЗаписи(); + УстановитьСертификатПослеПодтвержденияИнформации(); + + ИначеЕсли ДополнительныеПараметры = "ИнформацияЗаявления" Тогда + + ДокументыПечатались = Истина; + + Если Модифицированность Тогда + ДанныеЗаявления.СостояниеЗаявления = ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Подготовлено"); + ЗаписатьЗаявление(); + ПослеЗаписи(); + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("СформироватьИОтправитьФайлыЗаявления", ЭтотОбъект); + ПроверитьИнтернетПоддержку(Оповещение); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьИОтправитьФайлыЗаявления(Результат, ДополнительныеПараметры) Экспорт + + Если ТипЗнч(Результат) <> Тип("Структура") Тогда + ИнтернетПоддержкаПользователейПодключена = Ложь; + Возврат; + КонецЕсли; + + ОписаниеОшибки = НовыйОписаниеОшибки(); + ЗаявлениеXML = ЗаявлениеXMLДляЭлектронногоПродления(ОписаниеОшибки); + Если ЗаявлениеXML = Неопределено Тогда + + Если ИнтернетПоддержкаПользователейПодключена Тогда + ОбработкаПродолжения = Неопределено; + Иначе + ОбработкаПродолжения = Новый ОписаниеОповещения( + "ПослеПодтвержденияИнформации", ЭтотОбъект); + КонецЕсли; + + ПоказатьПредупреждение(ОбработкаПродолжения, + УстановитьГиперссылку(ОписаниеОшибки.Описание, "its.1c.ru", "http://its.1c.ru")); + + Возврат; + КонецЕсли; + + ДанныеДляПодписания = Новый Массив; // Массив из НовыйОписаниеДанных + + ОписаниеДанных = НовыйОписаниеДанных(); + ОписаниеДанных.Данные = ЗаявлениеXML; + ОписаниеДанных.ОписаниеДляПакета.ИдентификаторДокумента = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ТипДокумента = "Заявление"; + ОписаниеДанных.ОписаниеДляПакета.ТипСодержимого = "xml"; + ИмяФайла = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ИмяФайла = ИмяФайла + ".bin"; + ОписаниеДанных.Представление.Представление = НСтр("ru = 'Заявление (файл сформирован)'"); + ОписаниеДанных.Представление.Значение = Новый ОписаниеОповещения( + "ОткрытьФайлОбработкаОповещения", ЭтотОбъект, Новый Структура("АдресФайла, ИмяФайла", ЗаявлениеXML, ИмяФайла + ".xml")); + + ДанныеДляПодписания.Добавить(ОписаниеДанных); + + ПриложитьДокумент(ДанныеДляПодписания, "Паспорт"); + + Если Не ЭтоФизическоеЛицо И Не ЭтоИндивидуальныйПредприниматель + И Не ЗаявлениеДляРуководителейЮридическихЛицДоступно Тогда + + ПриложитьДокумент(ДанныеДляПодписания, "Доверенность"); + + КонецЕсли; + + ОтборСертификатов = Новый Массив; // Массив из СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования + ОтборСертификатов.Добавить(ДанныеЗаявления.СертификатОснование); + + ОписаниеДанныхДляПодписания = Новый Структура; + ОписаниеДанныхДляПодписания.Вставить("ОповеститьОбОкончанииСрокаДействия", Ложь); + ОписаниеДанныхДляПодписания.Вставить("НаборДанных", ДанныеДляПодписания); + ОписаниеДанныхДляПодписания.Вставить("ПредставлениеНабора", НСтр("ru = 'Файлы заявления (%1)'")); + ОписаниеДанныхДляПодписания.Вставить("СообщитьОЗавершении", Истина); + ОписаниеДанныхДляПодписания.Вставить("БезПодтверждения", Истина); + ОписаниеДанныхДляПодписания.Вставить("Операция", НСтр("ru = 'Подписание данных заявления'")); + ОписаниеДанныхДляПодписания.Вставить("ЗаголовокДанных", НСтр("ru = 'Файл'")); + ОписаниеДанныхДляПодписания.Вставить("ОтборСертификатов", ОтборСертификатов); + + ЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанныхДляПодписания, + УникальныйИдентификатор, + Новый ОписаниеОповещения("ОтправитьЗаявлениеПослеПодписанияФайлов", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриложитьДокумент(ДанныеДляПодписания, ВидДокумента) + + ИмяВыбранногоФайла = Строка(Элементы["Выбрать" + ВидДокумента].Заголовок); + Расширение = НРег(ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяВыбранногоФайла)); + ОписаниеДанных = НовыйОписаниеДанных(); + ОписаниеДанных.Данные = ЭтотОбъект["АдресФайла" + ВидДокумента]; + ОписаниеДанных.ОписаниеДляПакета.ИдентификаторДокумента = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ТипДокумента = ВидДокумента; + ОписаниеДанных.ОписаниеДляПакета.ТипСодержимого = Расширение; + ИмяФайла = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ИмяФайла = ИмяФайла + ".bin"; + ОписаниеДанных.Представление.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (файл выбран)'"), ВидДокумента); + ОписаниеДанных.Представление.Значение = Новый ОписаниеОповещения( + "ОткрытьФайлОбработкаОповещения", ЭтотОбъект, + Новый Структура("АдресФайла, ИмяФайла", ЭтотОбъект["АдресФайла" + ВидДокумента], ИмяФайла + "." + Расширение)); + + ДанныеДляПодписания.Добавить(ОписаниеДанных); + +КонецПроцедуры + +&НаКлиенте +Процедура СформироватьИОтправитьФайлРасписки() + + ДанныеДляПодписания = Новый Массив; // Массив из НовыйОписаниеДанных + + ОписаниеДанных = НовыйОписаниеДанных(); + ОписаниеДанных.Данные = АдресСертификата; + ОписаниеДанных.ОписаниеДляПакета.ИдентификаторДокумента = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ТипДокумента = "РаспискаЭП"; + ОписаниеДанных.ОписаниеДляПакета.ТипСодержимого = "cer"; + ИмяФайла = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ИмяФайла = ИмяФайла + ".bin"; + ОписаниеДанных.Представление.Представление = НСтр("ru = 'Файл сертификата'"); + ОписаниеДанных.Представление.Значение = Новый ОписаниеОповещения( + "ОткрытьФайлОбработкаОповещения", ЭтотОбъект, Новый Структура("АдресФайла, ИмяФайла", АдресСертификата, ИмяФайла + ".cer")); + + ДанныеДляПодписания.Добавить(ОписаниеДанных); + + ОтборСертификатов = Новый Массив; // Массив из СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования + ОтборСертификатов.Добавить(ДанныеЗаявления.СертификатОснование); + + ОписаниеДанныхДляПодписания = Новый Структура; + ОписаниеДанныхДляПодписания.Вставить("ОповеститьОбОкончанииСрокаДействия", Ложь); + ОписаниеДанныхДляПодписания.Вставить("НаборДанных", ДанныеДляПодписания); + ОписаниеДанныхДляПодписания.Вставить("ПредставлениеНабора", НСтр("ru = 'Файлы заявления (%1)'")); + ОписаниеДанныхДляПодписания.Вставить("СообщитьОЗавершении", Истина); + ОписаниеДанныхДляПодписания.Вставить("БезПодтверждения", Истина); + ОписаниеДанныхДляПодписания.Вставить("Операция", НСтр("ru = 'Подписание расписки об ознакомлении с информацией сертификата'")); + ОписаниеДанныхДляПодписания.Вставить("ЗаголовокДанных", НСтр("ru = 'Файл'")); + ОписаниеДанныхДляПодписания.Вставить("ОтборСертификатов", ОтборСертификатов); + + ЭлектроннаяПодписьКлиент.Подписать(ОписаниеДанныхДляПодписания, + УникальныйИдентификатор, + Новый ОписаниеОповещения("ОтправитьРаспискуПослеПодписанияФайлов", ЭтотОбъект)); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФайлОбработкаОповещения(Результат, Параметры) Экспорт + + Если ТипЗнч(Параметры) = Тип("Структура") Тогда + + ФайловаяСистемаКлиент.ОткрытьФайл(Параметры.АдресФайла,, Параметры.ИмяФайла); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьЗаявлениеПослеПодписанияФайлов(ОписаниеДанных, ДополнительныеПараметры) Экспорт + + Если ОписаниеДанных.Успех Тогда + ОписаниеОшибки = НовыйОписаниеОшибки(); + Для Каждого ДанныеДляПодписания Из ОписаниеДанных.НаборДанных Цикл + ДанныеДляПодписания.Представление.Значение = Неопределено; + КонецЦикла; + Если СформироватьИОтправитьПакетЗаявленияНаЭлектронноеПродление( + ОписаниеДанных.НаборДанных, "Регистрация", ОписаниеОшибки) Тогда + ПослеЗаписи(); + Иначе + ОписаниеОшибки.Описание = НСтр("ru = 'Не удалось отправить заявление в электронном виде.'"); + ОткрытьФормуОшибки(ОписаниеОшибки); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьРаспискуПослеПодписанияФайлов(ОписаниеДанных, ДополнительныеПараметры) Экспорт + + ОписаниеОшибки = НовыйОписаниеОшибки(); + Если ОписаниеДанных.Успех Тогда + Для Каждого ДанныеДляПодписания Из ОписаниеДанных.НаборДанных Цикл + ДанныеДляПодписания.Представление.Значение = Неопределено; + КонецЦикла; + Если СформироватьИОтправитьПакетЗаявленияНаЭлектронноеПродление( + ОписаниеДанных.НаборДанных, "Расписка", ОписаниеОшибки) Тогда + ПослеЗаписи(); + УстановитьПолученныйСертификат(); + Иначе + ОписаниеОшибки.Описание = НСтр("ru = 'Не удалось отправить электронную расписку.'"); + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки.Описание + Символы.ПС + ОписаниеОшибки.Текст; + ОткрытьФормуИнформацииСертификата(ОписаниеОшибки); + КонецЕсли; + Иначе + ОписаниеОшибки.Описание = НСтр("ru = 'Не удалось подписать электронную расписку.'"); + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки.Описание + Символы.ПС + ОписаниеОшибки.Текст; + ОткрытьФормуИнформацииСертификата(ОписаниеОшибки); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуИнформацииСертификата(ОписаниеОшибки = Неопределено) + + ПараметрыФормы = Новый Структура; + Если ОписаниеОшибки <> Неопределено Тогда + ПараметрыФормы.Вставить("ОписаниеОшибки", ОписаниеОшибки); + КонецЕсли; + + ПараметрыФормы.Вставить("СодержаниеСертификата", ПечатьИнформацииСертификата()); + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПодтвержденияИнформации", ЭтотОбъект, "СодержаниеСертификата"); + ОткрытьФорму("Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Информация", ПараметрыФормы, + ЭтотОбъект, , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуОшибки(ОписаниеОшибки) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОписаниеОшибки", ОписаниеОшибки); + ОткрытьФорму("Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Форма.Информация", + ПараметрыФормы, ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +&НаСервере +Функция СформироватьИОтправитьПакетЗаявленияНаЭлектронноеПродление(ОписаниеДанных, ТипТранзакции, ОписаниеОшибки) + + ПакетДляОтправки = ПакетЗаявления(ОписаниеДанных, ТипТранзакции); + Возврат ОтправитьЗаявлениеНаСервере(ПакетДляОтправки, ТипТранзакции, ОписаниеОшибки); + +КонецФункции + + +#КонецОбласти + +#Область ОтправкаЗаявленияОбщиеПроцедурыИФункции + +// Описание ошибки. +// +// Возвращаемое значение: +// Структура: +// * Код - Строка +// * Текст - Строка +// * Описание - Строка +// +&НаКлиенте +Функция НовыйОписаниеОшибки() + + ОписаниеОшибки = Новый Структура; + ОписаниеОшибки.Вставить("Код", ""); + ОписаниеОшибки.Вставить("Текст", ""); + ОписаниеОшибки.Вставить("Описание", ""); + + Возврат ОписаниеОшибки; + +КонецФункции + +&НаСервере +Функция КодОшибкиПортала(Метод, КодОшибки) + Возврат СтрШаблон("regservice.1c.%1(%2)", Метод, КодОшибки) +КонецФункции + +&НаКлиенте +Процедура ПроверитьИнтернетПоддержку(Оповещение) + Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда ПоказатьПредупреждение(,НСтр("ru = 'Невозможно подключиться к порталу интернет-поддержки по причине: |Библиотека интернет поддержки пользователей не внедрена в конфигурацию.'")); @@ -2745,103 +3828,245 @@ Если МодульИнтернетПоддержкаПользователейКлиент.ДоступноПодключениеИнтернетПоддержки() Тогда - ОповещениеОПодключении = Новый ОписаниеОповещения("ОтправитьЗаявлениеЗавершение", ЭтотОбъект); + МодульИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей( - ОповещениеОПодключении,ЭтотОбъект); + Оповещение,ЭтотОбъект); Иначе ПоказатьПредупреждение(, НСтр("ru = 'Для отправки заявления подключите Интернет-поддержку пользователей.'")); Возврат; КонецЕсли; - Иначе - ОтправитьЗаявлениеЗавершение(Новый Структура, Неопределено); - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ОтправитьЗаявлениеЗавершение(Результат, Контекст) Экспорт - - Если ТипЗнч(Результат) <> Тип("Структура") Тогда - ИнтернетПоддержкаПользователейПодключена = Ложь; - Возврат; - КонецЕсли; - - ОписаниеОшибки = ""; - ИнтернетПоддержкаПользователейПодключена = Истина; - Если ОтправитьЗаявлениеНаСервере(ОписаниеОшибки) Тогда - ПослеЗаписи(); Иначе - Если ИнтернетПоддержкаПользователейПодключена Тогда - ОбработкаПродолжения = Неопределено; - Иначе - ОбработкаПродолжения = Новый ОписаниеОповещения( - "ОтправитьЗаявлениеПослеПредупреждения", ЭтотОбъект); - КонецЕсли; - - ПоказатьПредупреждение(ОбработкаПродолжения, - УстановитьГиперссылку(ОписаниеОшибки, "its.1c.ru", "http://its.1c.ru")); + ВыполнитьОбработкуОповещения(Оповещение, Новый Структура); КонецЕсли; КонецПроцедуры -&НаКлиенте -Процедура ОтправитьЗаявлениеПослеПредупреждения(Контекст) Экспорт - - ОтправитьЗаявлениеПродолжение("Отправить", Неопределено); - -КонецПроцедуры - +// Пакет заявления. +// +// Параметры: +// ОписанияФайловПакета - Массив - описания файлов пакета +// ТипТранзакции - Строка - тип транзакции +// +// Возвращаемое значение: +// Структура: +// * ДанныеПакета - Строка - Base64Строка архива с файлами заявления. +// * ИдентификаторДокументооборота - Строка +// * ЭтоПовторнаяОтправкаПакета - Булево +// &НаСервере -Функция ОтправитьЗаявлениеНаСервере(ОписаниеОшибки) +Функция ПакетЗаявления(ОписанияФайловПакета, ТипТранзакции) - Доступность = Ложь; - Если Не ОтправитьЗаявлениеНаПортал(ОписаниеОшибки) Тогда - Доступность = Истина; - Возврат Ложь; + // Подготовка пакета заявления. + ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( + ПолучитьИмяВременногоФайла("package")); + + СоздатьКаталог(ВременныйКаталог); + + ЭтоПовторнаяОтправкаПакета = ЗначениеЗаполнено(ДанныеЗаявления.ИдентификаторДокументооборота) + И ТипТранзакции = "Регистрация"; + + Если Не ЭтоПовторнаяОтправкаПакета И ТипТранзакции = "Регистрация" Тогда + ИдентификаторДокументооборота = НовыйСжатыйУникальныйИдентификатор(); + Иначе + ИдентификаторДокументооборота = ДанныеЗаявления.ИдентификаторДокументооборота; КонецЕсли; + + ИмяФайлаОписания = ВременныйКаталог + "packageDescription.xml"; + ИмяФайлаПакета = ВременныйКаталог + ИдентификаторДокументооборота + ".zip"; - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено; + Для Каждого ОписаниеФайла Из ОписанияФайловПакета Цикл + ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ОписаниеФайла.Данные); // ДвоичныеДанные + ДвоичныеДанныеФайла.Записать(ВременныйКаталог + ОписаниеФайла.ОписаниеДляПакета.ИмяФайла); + Если ОписаниеФайла.Свойство("СвойстваПодписи") Тогда + ИмяФайлаПодписи = НовыйСжатыйУникальныйИдентификатор() + ".bin"; + СвойстваПодписи = ОписаниеФайла.СвойстваПодписи; // см. ЭлектроннаяПодписьСлужебныйКлиентСервер.СвойстваПодписи + СвойстваПодписи.Подпись.Записать(ВременныйКаталог + ИмяФайлаПодписи); + СвойстваПодписи.Вставить("ИмяФайлаПодписи", ИмяФайлаПодписи); + КонецЕсли; + КонецЦикла; - ДатаОбновленияСостояния = ТекущаяДатаСеанса(); - СостояниеОбработкиЗаявления = НСтр("ru = 'Заявление принято для обработки.'"); + ОписаниеПакетаXML = ОписаниеПакетаXML(ОписанияФайловПакета, ТипТранзакции, ИдентификаторДокументооборота); - Доступность = Истина; - Элементы.ГруппаОбработкаЗаявления.Видимость = Истина; + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.ОткрытьФайл(ИмяФайлаОписания, "windows-1251"); + ЗаписьXML.ЗаписатьБезОбработки(ОписаниеПакетаXML); + ЗаписьXML.Закрыть(); - ЗаписатьЗаявление(); - УстановитьДоступность(); + ЗаписьАрхива = Новый ЗаписьZipФайла(ИмяФайлаПакета, , , , УровеньСжатияZIP.Максимальный); + ЗаписьАрхива.Добавить(ИмяФайлаОписания); + Для Каждого ОписаниеФайла Из ОписанияФайловПакета Цикл + ЗаписьАрхива.Добавить(ВременныйКаталог + ОписаниеФайла.ОписаниеДляПакета.ИмяФайла); + Если ОписаниеФайла.Свойство("СвойстваПодписи") Тогда + ЗаписьАрхива.Добавить(ВременныйКаталог + ОписаниеФайла.СвойстваПодписи.ИмяФайлаПодписи); + КонецЕсли; + КонецЦикла; + ЗаписьАрхива.Записать(); - Возврат Истина; + ПакетЗаявления = Base64Строка(Новый ДвоичныеДанные(ИмяФайлаПакета)); + УдалитьФайлы(ВременныйКаталог); + + Возврат Новый Структура("ДанныеПакета, ИдентификаторДокументооборота, ЭтоПовторнаяОтправкаПакета", + ПакетЗаявления, ИдентификаторДокументооборота, ЭтоПовторнаяОтправкаПакета); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция НовыйОписаниеДанных() + + ОписаниеДанных = Новый Структура("Данные, Представление, ОписаниеДляПакета"); + + ОписаниеДляПакета = Новый Структура; + ОписаниеДляПакета.Вставить("ИмяФайла"); + ОписаниеДляПакета.Вставить("ИдентификаторДокумента"); + ОписаниеДляПакета.Вставить("ТипДокумента"); + ОписаниеДляПакета.Вставить("ТипСодержимого"); + ОписаниеДляПакета.Вставить("Сжат", "false"); + ОписаниеДляПакета.Вставить("Зашифрован", "false"); + + ОписаниеДанных.Вставить("ОписаниеДляПакета", ОписаниеДляПакета); + ОписаниеДанных.Вставить("Представление", Новый Структура("Значение, Представление")); + + Возврат ОписаниеДанных; КонецФункции &НаСервере -Функция ОтправитьЗаявлениеНаПортал(ОписаниеОшибки) - - ОписаниеОшибки = ""; - ШаблонОписанияОшибки = НСтр("ru = 'Не удалось отправить заявление по причине: - |%1'"); +Функция ОтправитьЗаявлениеНаПортал(ПакетЗаявления, ТипТранзакции, ОписаниеОшибки) Попытка ВебСервис = ВебСервисУЦ(); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + ОписаниеОшибки.Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); Возврат Ложь; КонецПопытки; - Если Не ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда - ОписаниеОшибки = НСтр("ru = 'Невозможно подключиться к порталу интернет-поддержки по причине: - |Библиотека интернет поддержки пользователей не внедрена в конфигурацию.'"); + Попытка + Ответ = ВебСервис.SendPacket(ПакетЗаявления.ДанныеПакета); + Исключение + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОписаниеОшибки.Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Возврат Ложь; + + КонецПопытки; + + Если Не ЗначениеЗаполнено(Ответ) Тогда + ОписаниеОшибки.Текст = НСтр("ru = 'Сервер вернул пустой ответ.'"); + Возврат Ложь; + КонецЕсли; + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.УстановитьСтроку(Ответ); + + ПостроительDOM = Новый ПостроительDOM(); + ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); + + ЧтениеXML.Закрыть(); + + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); + КодРезультата = УзелDOM[0].ТекстовоеСодержимое; + + Если ТипТранзакции = "Регистрация" Тогда + Если КодРезультата = "0" Тогда + ДанныеЗаявления.ДатаОтправки = ТекущаяДатаСеанса(); + ДанныеЗаявления.ИдентификаторДокументооборота = ПакетЗаявления.ИдентификаторДокументооборота; + Возврат Истина; + ИначеЕсли КодРезультата = "60" // Документооборот уже зарегистрирован. + И ПакетЗаявления.ЭтоПовторнаяОтправкаПакета Тогда + ДанныеЗаявления.ДатаОтправки = ТекущаяДатаСеанса(); + Возврат Истина; + КонецЕсли; + ИначеЕсли КодРезультата = "0" ИЛИ КодРезультата = "60" Тогда // Расписка. + Возврат Истина; + КонецЕсли; + + ОписаниеОшибки.Код = КодОшибкиПортала("SendPacket", КодРезультата); + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); + Если УзелDOM.Количество() > 0 Тогда + ОписаниеОшибки.Текст = УзелDOM[0].ТекстовоеСодержимое; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +// Отправить заявление на сервере. +// +// Параметры: +// ПакетДляОтправки - см. ПакетЗаявления. +// ТипТранзакции - Строка - тип транзакции: "Регистрация", "Расписка". +// ОписаниеОшибки - см. НовыйОписаниеОшибки. +// +// Возвращаемое значение: +// Булево - отправить заявление на сервере +// +&НаСервере +Функция ОтправитьЗаявлениеНаСервере(ПакетДляОтправки, ТипТранзакции, ОписаниеОшибки) + + Если ПакетДляОтправки = Неопределено И Не ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + Билет = ТикетАутентификацииНаПорталеПоддержки(ОписаниеОшибки); + Если Билет = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + ЗаявлениеXML = ЗаявлениеXMLДляБумажногоПродления(Билет); + ПакетДляОтправки = ПакетЗаявления(ЗаявлениеXML, ТипТранзакции); + КонецЕсли; + + Доступность = Ложь; + Если Не ОтправитьЗаявлениеНаПортал(ПакетДляОтправки, ТипТранзакции, ОписаниеОшибки) Тогда + Доступность = Истина; + Возврат Ложь; + КонецЕсли; + + ДанныеЗаявления.ДатаОбновленияСостояния = ТекущаяДатаСеанса(); + + Если ТипТранзакции = "Регистрация" Тогда // Заявление. + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено; + ДанныеЗаявления.СостояниеОбработкиЗаявления = НСтр("ru = 'Заявление принято для обработки.'"); + Иначе // Расписка. + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен; + ДанныеЗаявления.СостояниеОбработкиЗаявления = + НСтр("ru = 'Расписка об ознакомлении с информацией сертификата отправлена в электронном виде.'"); + КонецЕсли; + + Доступность = Истина; + Элементы.ГруппаОбработкаЗаявления.Видимость = Истина; + Элементы.ТехническаяИнформация.Видимость = Истина; + + ЗаписатьЗаявление(); + УстановитьВидимостьИДоступность(); + + Если ТипТранзакции = "Регистрация" Тогда + + Если ДоступныНапоминанияПользователя Тогда + НапомнитьОГотовности = Истина; + ЭлектроннаяПодписьСлужебный.ИзменитьОтметкуОНапоминании(Объект.Ссылка, Истина, "АвтоматическоеНапоминаниеОбИзмененииСостоянияЗаявления"); + КонецЕсли; + + Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ВключитьОтслеживаниеИзмененияСостоянияЗаявления( + Объект.Ссылка, ДанныеЗаявления.ИдентификаторДокументооборота); + КонецЕсли; + + Возврат Истина; + +КонецФункции + +&НаСервере +Функция ТикетАутентификацииНаПорталеПоддержки(ОписаниеОшибки) + + Если Не ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей") Тогда + ОписаниеОшибки.Описание = НСтр("ru = 'Невозможно подключиться к порталу интернет-поддержки по причине: + |Библиотека интернет поддержки пользователей не внедрена в конфигурацию.'"); + Возврат Неопределено; КонецЕсли; МодульИнтернетПоддержкаПользователей = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователей"); @@ -2856,121 +4081,19 @@ ИнтернетПоддержкаПользователейПодключена = Ложь; КонецЕсли; - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ОписаниеОшибки.Описание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось подключиться к порталу интернет-поддержки по причине: |%1'"), Результат.СообщениеОбОшибке); - Возврат Ложь; + Возврат Неопределено; Иначе - Билет = Результат.Тикет; + Возврат Результат.Тикет; КонецЕсли; - ЭтоПовторнаяОтправкаПакета = Истина; - Если Не ЗначениеЗаполнено(ИдентификаторДокументооборота) Тогда - ЭтоПовторнаяОтправкаПакета = Ложь; - ИдентификаторДокументооборота = НовыйСжатыйУникальныйИдентификатор(); - КонецЕсли; - - ШаблонОписанияОшибки = СтрЗаменить(НСтр("ru = 'Не удалось отправить заявление (%2) по причине: - |%1'"), "%2", ИдентификаторДокументооборота); - - ЗаявлениеXML = ЗаявлениеXML(Билет); - ПакетЗаявления = ПакетЗаявления(ЗаявлениеXML); - - Попытка - Ответ = ВебСервис.SendPacket(ПакетЗаявления); - Исключение - - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - - Возврат Ложь; - - КонецПопытки; - - Если Не ЗначениеЗаполнено(Ответ) Тогда - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Сервер вернул пустой ответ.'")); - Возврат Ложь; - КонецЕсли; - - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.УстановитьСтроку(Ответ); - - ПостроительDOM = Новый ПостроительDOM(); - ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); - - ЧтениеXML.Закрыть(); - - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); - КодРезультата = УзелDOM[0].ТекстовоеСодержимое; - Если КодРезультата = "0" Тогда - ДатаОтправки = ТекущаяДатаСеанса(); - Возврат Истина; - ИначеЕсли КодРезультата = "60" // Документооборот уже зарегистрирован. - И ЭтоПовторнаяОтправкаПакета Тогда - - ДатаОтправки = ТекущаяДатаСеанса(); - Возврат Истина; - КонецЕсли; - - ИдентификаторДокументооборота = ""; - - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); - Если УзелDOM.Количество() > 0 Тогда - ОписаниеОшибки = УзелDOM[0].ТекстовоеСодержимое; - КонецЕсли; - - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - ОписаниеОшибки); - - Возврат Ложь; - КонецФункции -&НаСервере -Функция ПакетЗаявления(ЗаявлениеXML) - - // Подготовка пакета заявления. - ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПолучитьИмяВременногоФайла("package")); - - СоздатьКаталог(ВременныйКаталог); - - ИмяФайлаЗаявления = ВременныйКаталог + НовыйСжатыйУникальныйИдентификатор() + ".bin"; - ИмяФайлаОписания = ВременныйКаталог + "packageDescription.xml"; - ИмяФайлаПакета = ВременныйКаталог + ИдентификаторДокументооборота + ".zip"; - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.ОткрытьФайл(ИмяФайлаЗаявления, "windows-1251"); - ЗаписьXML.ЗаписатьБезОбработки(ЗаявлениеXML); - ЗаписьXML.Закрыть(); - - ДанныеЗаявления = Новый ДвоичныеДанные(ИмяФайлаЗаявления); - УдалитьФайлы(ИмяФайлаЗаявления); - ДанныеЗаявления.Записать(ИмяФайлаЗаявления); - - ФайлЗаявления = Новый Файл(ИмяФайлаЗаявления); - ОписаниеПакетаXML = ОписаниеПакетаXML(ФайлЗаявления.Имя); - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.ОткрытьФайл(ИмяФайлаОписания, "windows-1251"); - ЗаписьXML.ЗаписатьБезОбработки(ОписаниеПакетаXML); - ЗаписьXML.Закрыть(); - - ЗаписьАрхива = Новый ЗаписьZipФайла(ИмяФайлаПакета, , , , УровеньСжатияZIP.Максимальный); - ЗаписьАрхива.Добавить(ИмяФайлаОписания); - ЗаписьАрхива.Добавить(ИмяФайлаЗаявления); - ЗаписьАрхива.Записать(); - - ПакетЗаявления = Base64Строка(Новый ДвоичныеДанные(ИмяФайлаПакета)); - УдалитьФайлы(ВременныйКаталог); - - Возврат ПакетЗаявления; - -КонецФункции +#КонецОбласти #КонецОбласти @@ -2994,7 +4117,7 @@ НовыйСписокПрограмм = Новый Массив; // Массив из см. НовыйЭлементСпискаПрограмм ТекстОшибки = ЗаполнитьСписокПрограммНаСервере(НовыйСписокПрограмм, ВариантАлгоритмов, - Объект.СостояниеЗаявления, КонтейнерКлючаПуть, ПрограммаОблачногоСервиса); + ДанныеЗаявления.СостояниеЗаявления, КонтейнерКлючаПуть, ПрограммаОблачногоСервиса); Если ЗначениеЗаполнено(ТекстОшибки) Тогда ОписаниеОшибки = ТекстОшибки; @@ -3289,13 +4412,7 @@ &НаСервереБезКонтекста Функция ВебСервисУЦ() - ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси(); - ПараметрыПодключения.АдресWSDL = "http://regservice.1c.ru/regservice/regservice.asmx?wsdl"; - ПараметрыПодключения.URIПространстваИмен = "http://regservice.keydisk.ru/"; - ПараметрыПодключения.ИмяСервиса = "RegService"; - ПараметрыПодключения.Таймаут = 7; - - Возврат ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения); + Возврат Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ВебСервисУЦ(); КонецФункции @@ -3329,8 +4446,9 @@ Если СвойстваФункции = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'В веб-сервисе ""%1"" не определена обязательная функция ""GetCertificateSettings"".'"), - ВебСервис.ТочкаПодключения.Местоположение + "?wsdl"); + НСтр("ru = 'В веб-сервисе ""%1"" не определена обязательная функция ""%2"".'"), + ВебСервис.ТочкаПодключения.Местоположение + "?wsdl", + "GetCertificateSettings"); КонецЕсли; @@ -3402,283 +4520,12 @@ КонецФункции -&НаСервере -Функция ПолучитьСертификат() - - ШаблонОписанияОшибки = - НСтр("ru = 'Не удалось обновить состояние по причине: %1'"); - - // Запрос состояния обработки заявления. - - Попытка - ВебСервис = ВебСервисУЦ(); - Ответ = ВебСервис.ReceivePacket(Строка(ИдентификаторДокументооборота)); - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ДатаОбновленияСостояния = ТекущаяДатаСеанса(); - СостояниеОбработкиЗаявления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - Возврат Неопределено; - КонецПопытки; - - ДатаОбновленияСостояния = ТекущаяДатаСеанса(); - СостояниеОбработкиЗаявленияАктуально = Истина; - - Если Не ЗначениеЗаполнено(Ответ) Тогда - СостояниеОбработкиЗаявления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул пустой ответ.'")); - Возврат Неопределено; - КонецЕсли; - - ОписаниеОшибки = ""; - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.УстановитьСтроку(Ответ); - ПостроительDOM = Новый ПостроительDOM(); - ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); - ЧтениеXML.Закрыть(); - - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); - КодРезультата = УзелDOM[0].ТекстовоеСодержимое; - - ИмяФайлаПакетОтвета = ""; - Если КодРезультата = "0" Тогда - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("packet"); - - Если УзелDOM.Количество() > 0 Тогда - - ДвоичныеДанные = Base64Значение(УзелDOM[0].ТекстовоеСодержимое); - ИмяФайлаПакетОтвета = ПолучитьИмяВременногоФайла(".zip"); - ДвоичныеДанные.Записать(ИмяФайлаПакетОтвета); - - АдресОтветаСервиса = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор); - - Иначе - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул пустые данные.'")); - КонецЕсли; - - ИначеЕсли КодРезультата = "1" Тогда - ОписаниеОшибки = НСтр("ru = 'Заявление еще не обработано, попробуйте позже.'"); - Иначе - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); - Если УзелDOM.Количество() > 0 Тогда - ОписаниеОшибки = УзелDOM[0].ТекстовоеСодержимое; - Иначе - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул код ошибки: %1'"), - Строка(КодРезультата)); - КонецЕсли; - КонецЕсли; - - Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - СостояниеОбработкиЗаявления = ОписаниеОшибки; - Возврат Неопределено; - КонецЕсли; - - ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПолучитьИмяВременногоФайла("package")); - - СоздатьКаталог(ВременныйКаталог); - - ФайлНайден = Ложь; - Попытка - Архив1 = Новый ЧтениеZipФайла(ИмяФайлаПакетОтвета); - - Для Счетчик = 0 По Архив1.Элементы.Количество() - 1 Цикл - - Если Архив1.Элементы[Счетчик].Расширение = "bin" Тогда - ФайлНайден = Истина; - - Архив1.Извлечь(Архив1.Элементы[Счетчик], ВременныйКаталог); - Архив2 = Новый ЧтениеZipФайла(ВременныйКаталог + Архив1.Элементы[Счетчик].Имя); - Архив2.ИзвлечьВсе(ВременныйКаталог); - - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.ОткрытьФайл(ВременныйКаталог + "file"); - ПостроительDOM = Новый ПостроительDOM; - ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); - ЧтениеXML.Закрыть(); - - РегистрацияУспешна = Булево(ЗначениеУзлаXML(ДокументDOM, "РегистрацияУспешна")); - СостояниеОбработкиЗаявления = ЗначениеУзлаXML(ДокументDOM, "Результат"); - - Если РегистрацияУспешна Тогда - ИдентификаторАбонента = ЗначениеУзлаXML(ДокументDOM, "ИдентификаторАбонента"); - КонецЕсли; - КонецЕсли; - КонецЦикла; - - Если Не ФайлНайден Тогда - ВызватьИсключение НСтр("ru = 'Архив не содержит файл данных.'"); - КонецЕсли; - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось разобрать результат выполнения метода ReceivePacket сервиса 1С:Подпись по причине: %1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - КонецПопытки; - - УдалитьФайлы(ИмяФайлаПакетОтвета); - УдалитьФайлы(ВременныйКаталог); - - Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - СостояниеОбработкиЗаявления = ОписаниеОшибки; - Возврат Неопределено; - КонецЕсли; - - Если Не РегистрацияУспешна Тогда - Возврат Ложь; - КонецЕсли; - - // Запрос сертификата. - - Ответ = ВебСервис.ReceiveUpdatedPacket(Строка(ИдентификаторАбонента), Дата('00010101')); - - ОписаниеОшибки = ""; - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.УстановитьСтроку(Ответ); - ПостроительDOM = Новый ПостроительDOM(); - ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); - ЧтениеXML.Закрыть(); - - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); - КодРезультата = УзелDOM[0].ТекстовоеСодержимое; - - ИмяФайлаПакетОтвета = ""; - Если КодРезультата = "0" Тогда - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("packet"); - - Если УзелDOM.Количество() > 0 Тогда - - ДвоичныеДанные = Base64Значение(УзелDOM[0].ТекстовоеСодержимое); - ИмяФайлаПакетОтвета = ПолучитьИмяВременногоФайла(".zip"); - ДвоичныеДанные.Записать(ИмяФайлаПакетОтвета); - - ПоместитьВоВременноеХранилище(ДвоичныеДанные, АдресОтветаСервиса); - - Иначе - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceiveUpdatedPacket сервиса 1С:Подпись вернул пустые данные.'")); - КонецЕсли; - Иначе - УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); - Если УзелDOM.Количество() > 0 Тогда - ОписаниеОшибки = УзелDOM[0].ТекстовоеСодержимое; - Иначе - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Метод ReceiveUpdatedPacket сервиса 1С:Подпись вернул код ошибки: %1'"), - Строка(КодРезультата)); - КонецЕсли; - КонецЕсли; - - Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - СостояниеОбработкиЗаявления = ОписаниеОшибки; - Возврат Неопределено; - КонецЕсли; - - ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПолучитьИмяВременногоФайла("package")); - - СоздатьКаталог(ВременныйКаталог); - - ФайлНайден = Ложь; - - Попытка - Архив = Новый ЧтениеZipФайла(ИмяФайлаПакетОтвета); - - Для Счетчик = 0 По Архив.Элементы.Количество() - 1 Цикл - - Если Архив.Элементы[Счетчик].Расширение = "xml" Тогда - ФайлНайден = Истина; - - Архив.Извлечь(Архив.Элементы[Счетчик], ВременныйКаталог); - - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.ОткрытьФайл(ВременныйКаталог + Архив.Элементы[Счетчик].Имя); - ПостроительDOM = Новый ПостроительDOM; - ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); - ЧтениеXML.Закрыть(); - - УзелDOM = ДокументDOM.ПолучитьЭлементыПоИмени("Сертификат"); - - СертификатСтрокой = ""; - КорневойСертификатСтрокой = ""; - - Для Каждого Узел Из УзелDOM Цикл - Хранилище = Узел.Атрибуты.ПолучитьИменованныйЭлемент("Хранилище").ТекстовоеСодержимое; - Если Хранилище = "MY" Тогда - СертификатСтрокой = Узел.ТекстовоеСодержимое; - КонецЕсли; - Если Хранилище = "ROOT" Тогда - КорневойСертификатСтрокой = Узел.ТекстовоеСодержимое; - КонецЕсли; - КонецЦикла; - - Если Не ЗначениеЗаполнено(СертификатСтрокой) Тогда - ВызватьИсключение НСтр("ru = 'Ответ не содержит сведений о выпущенном сертификате.'"); - ИначеЕсли Не ЗначениеЗаполнено(КорневойСертификатСтрокой) Тогда - ВызватьИсключение НСтр("ru = 'Ответ не содержит сведений о корневом сертификате.'"); - КонецЕсли; - - ДанныеСертификата = Base64Значение(СертификатСтрокой); - ДанныеКорневогоСертификата = Base64Значение(КорневойСертификатСтрокой); - - Сертификат = Новый СертификатКриптографии(ДанныеСертификата); - КорневойСертификат = Новый СертификатКриптографии(ДанныеКорневогоСертификата); - КонецЕсли; - КонецЦикла; - - Если Не ФайлНайден Тогда - ВызватьИсключение НСтр("ru = 'Архив не содержит файл данных.'"); - КонецЕсли; - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось разобрать результат выполнения метода ReceiveUpdatedPacket сервиса 1С:Подпись по причине: %1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - КонецПопытки; - - УдалитьФайлы(ИмяФайлаПакетОтвета); - УдалитьФайлы(ВременныйКаталог); - - Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - СостояниеОбработкиЗаявления = ОписаниеОшибки; - Возврат Неопределено; - КонецЕсли; - - СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(Сертификат); - СвойстваСубъекта = ЭлектроннаяПодпись.СвойстваСубъектаСертификата(Сертификат); - - АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор); - АдресКорневогоСертификата = ПоместитьВоВременноеХранилище(ДанныеКорневогоСертификата, УникальныйИдентификатор); - ОтпечатокКорневогоСертификата = Base64Строка(КорневойСертификат.Отпечаток); - - // Важно заполнить отпечаток, чтобы не было возможности добавить дубль сертификата. - Объект.Наименование = ЭлектроннаяПодпись.ПредставлениеСертификата(Сертификат); - - Объект.Подписание = СвойстваСертификата.Подписание; - Объект.Шифрование = СвойстваСертификата.Шифрование; - Объект.Отпечаток = СвойстваСертификата.Отпечаток; - Объект.КомуВыдан = СвойстваСертификата.КомуВыдан; - Объект.КемВыдан = СвойстваСертификата.КемВыдан; - Объект.ДействителенДо = СвойстваСертификата.ДатаОкончания; - - Объект.Фамилия = СвойстваСубъекта.Фамилия; - Объект.Имя = СвойстваСубъекта.Имя; - Объект.Отчество = СвойстваСубъекта.Отчество; - Объект.Должность = СвойстваСубъекта.Должность; - Объект.Фирма = СвойстваСубъекта.Организация; - - Возврат Истина; - -КонецФункции - #КонецОбласти #Область РаботаСXML &НаСервере -Функция ЗаявлениеXML(Билет) +Функция ЗаявлениеXMLДляБумажногоПродления(Билет) ПризнакЮридическогоЛица = Не ЭтоИндивидуальныйПредприниматель И Не ЭтоФизическоеЛицо; @@ -3695,7 +4542,7 @@ ЗаписьXMLЭлемент(ЗаписьXML, "ПризнакЮридическогоЛица", ПризнакЮридическогоЛица); ЗаписьXMLЭлемент(ЗаписьXML, "ПризнакФизическогоЛица", ЭтоФизическоеЛицо); ЗаписьXMLЭлемент(ЗаписьXML, "ИНН", ?(ЭтоФизическоеЛицо, ВладелецИНН, ИНН)); - Если ПризнакЮридическогоЛица Тогда + Если Не ЭтоИндивидуальныйПредприниматель И Не ЭтоФизическоеЛицо Тогда ЗаписьXMLЭлемент(ЗаписьXML, "КПП"); КонецЕсли; @@ -3714,6 +4561,131 @@ ЗаписьXMLАдрес(ЗаписьXML, "АдресЮридический", АдресЮридический); ЗаписьXMLАдрес(ЗаписьXML, "АдресФактический", АдресЮридический); + ЗаписьXML.ЗаписатьНачалоЭлемента("ВладельцыЭЦП"); + ЗаписьXML.ЗаписатьНачалоЭлемента("ВладелецЭЦП"); + ЗаписьXML.ЗаписатьАтрибут("СНИЛС", ПредставлениеРеквизитаСтраховойНомерПФР(СтраховойНомерПФР)); + + ЗаписьXML.ЗаписатьНачалоЭлемента("ФИО"); + ЗаписьXML.ЗаписатьАтрибут("Фамилия", Фамилия); + ЗаписьXML.ЗаписатьАтрибут("Имя", Имя); + ЗаписьXML.ЗаписатьАтрибут("Отчество", Отчество); + ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента ФИО. + + ЗаписьXML.ЗаписатьНачалоЭлемента("ЛичныеДанные"); + ЗаписьXML.ЗаписатьАтрибут("ДатаРождения", ПредставлениеРеквизитаДатаРождения(ДатаРождения)); + ЗаписьXML.ЗаписатьАтрибут("Пол", Пол); + ЗаписьXML.ЗаписатьАтрибут("МестоРождения", МестоРождения); + ЗаписьXML.ЗаписатьАтрибут("Гражданство", ГражданствоОКСМКодАльфа3); + ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента ЛичныеДанные. + + Если ПризнакЮридическогоЛица Тогда + ЗаписьXMLЭлемент(ЗаписьXML, "ИНН", ВладелецИНН); + КонецЕсли; + + Если ДокументВид = "21" Тогда + ДокументНомерПредставление = ПредставлениеРеквизитаНомерПаспортаРФ(ДокументНомер); + ДокументКодПодразделенияПредставление = + ПредставлениеРеквизитаДокументКодПодразделения(ДокументКодПодразделения); + Иначе + ДокументНомерПредставление = ДокументНомер; + ДокументКодПодразделенияПредставление = ""; + КонецЕсли; + ДокументДатаВыдачиПредставление = ПредставлениеРеквизитаДокументДатаВыдачи(ДокументДатаВыдачи); + + ЗаписьXML.ЗаписатьНачалоЭлемента("УдЛичн"); // АПК:1036 внешний идентификатор + ЗаписьXML.ЗаписатьАтрибут("КодВидДок", ДокументВид); + ЗаписьXML.ЗаписатьАтрибут("СерНомДок", ДокументНомерПредставление); + ЗаписьXML.ЗаписатьАтрибут("ДатаДок", ДокументДатаВыдачиПредставление); + ЗаписьXML.ЗаписатьАтрибут("ВыдДок", ДокументКемВыдан); // АПК:1036 внешний идентификатор + ЗаписьXML.ЗаписатьАтрибут("КодВыдДок", ДокументКодПодразделенияПредставление); // АПК:1036 внешний идентификатор + ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента УдЛичн. АПК:1036 внешний идентификатор + + Если ПризнакЮридическогоЛица Тогда + Запись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); + ОписаниеДанных.Представление.Представление = НСтр("ru = 'Файл заявления'"); + ОписаниеДанных.ОписаниеДляПакета.ИмяФайла = НовыйСжатыйУникальныйИдентификатор() + ".bin"; + ОписаниеДанных.ОписаниеДляПакета.ИдентификаторДокумента = НовыйСжатыйУникальныйИдентификатор(); + ОписаниеДанных.ОписаниеДляПакета.ТипДокумента = "Заявление"; + ОписаниеДанных.ОписаниеДляПакета.ТипСодержимого = "xml"; + + МассивОписаний = Новый Массив; // Массив из НовыйОписаниеДанных + МассивОписаний.Добавить(ОписаниеДанных); + + Возврат МассивОписаний; + +КонецФункции + +&НаСервере +Функция ЗаявлениеXMLДляЭлектронногоПродления(ОписаниеОшибки) + + Билет = ТикетАутентификацииНаПорталеПоддержки(ОписаниеОшибки); + Если Билет = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + ПризнакЮридическогоЛица = Не ЭтоИндивидуальныйПредприниматель И Не ЭтоФизическоеЛицо; + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.УстановитьСтроку("windows-1251"); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + + ЗаписьXML.ЗаписатьНачалоЭлемента("Заявление"); + ЗаписьXML.ЗаписатьАтрибут("ВерсФорм", "1.4"); // АПК:1036 внешний идентификатор + ЗаписьXML.ЗаписатьАтрибут("ДатаВремяФормирования", XMLСтрока(ТекущаяДатаСеанса())); + ЗаписьXML.ЗаписатьАтрибут("ВерсПрог", "1С"); // АПК:1036 внешний идентификатор + + ЗаписьXMLЭлемент(ЗаписьXML, "ТипЗаявления", "3"); + ЗаписьXMLЭлемент(ЗаписьXML, "УчетнаяЗапись", ДанныеЗаявления.ИдентификаторАбонента); + ЗаписьXMLЭлемент(ЗаписьXML, "ПризнакЮридическогоЛица", ПризнакЮридическогоЛица); + ЗаписьXMLЭлемент(ЗаписьXML, "ПризнакФизическогоЛица", ЭтоФизическоеЛицо); + ЗаписьXMLЭлемент(ЗаписьXML, "ИНН", ?(ЭтоФизическоеЛицо, ВладелецИНН, ИНН)); + Если ПризнакЮридическогоЛица Тогда + ЗаписьXMLЭлемент(ЗаписьXML, "КПП"); + КонецЕсли; + Если ЭтоФизическоеЛицо Тогда + ЗаписьXMLЭлемент(ЗаписьXML, "КраткоеНаименование", СокрП(Фамилия + " " + Имя + " " + Отчество)); + Иначе + ЗаписьXMLЭлемент(ЗаписьXML, "ОГРН", ?(ЭтоИностраннаяОрганизация, "0000000000000", Неопределено)); + ЗаписьXMLЭлемент(ЗаписьXML, "ПолноеНаименование", НаименованиеПолное); + ЗаписьXMLЭлемент(ЗаписьXML, "КраткоеНаименование", НаименованиеСокращенное); + КонецЕсли; + + ЗаписьXMLЭлемент(ЗаписьXML, "ТелефонОсновной", + Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ТелефонДляОтправкиВСервис( + ?(ЭтоФизическоеЛицо, ВладелецТелефонXML, ТелефонXML))); + + АдресЮридический = ?(ЭтоФизическоеЛицо, ВладелецАдресРегистрацииXML, ЮридическийАдресXML); + ЗаписьXMLАдрес(ЗаписьXML, "АдресЮридический", АдресЮридический); + ЗаписьXMLАдрес(ЗаписьXML, "АдресФактический", АдресЮридический); + ЗаписьXML.ЗаписатьНачалоЭлемента("ВладельцыЭЦП"); ЗаписьXML.ЗаписатьНачалоЭлемента("ВладелецЭЦП"); ЗаписьXML.ЗаписатьАтрибут("СНИЛС", ПредставлениеРеквизитаСтраховойНомерПФР(СтраховойНомерПФР)); @@ -3770,19 +4742,28 @@ ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента ВладелецЭЦП. ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента ВладельцыЭЦП. - ЗаписьXMLЭлемент(ЗаписьXML, "ИННПартнера", ДокументыПартнерИНН); - Если Не ДокументыПартнерЭтоИП Тогда - ЗаписьXMLЭлемент(ЗаписьXML, "КПППартнера", ДокументыПартнерКПП); - КонецЕсли; - ЗаписьXMLЭлемент(ЗаписьXML, "БилетПользователя", Билет); ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента Заявление. СтрокаXML = ЗаписьXML.Закрыть(); - Возврат СтрокаXML; + + Возврат АдресФайлаЗаявления(СтрокаXML); КонецФункции +&НаСервере +Функция АдресФайлаЗаявления(СтрокаXML) + + ПотокЗаявления = Новый ПотокВПамяти(); + ЗаписьЗаявления = Новый ЗаписьДанных(ПотокЗаявления); + ЗаписьЗаявления.ЗаписатьСтроку(СтрокаXML, "windows-1251"); + ЗаписьЗаявления.Закрыть(); + ДвоичныеДанныеЗаявления = ПотокЗаявления.ЗакрытьИПолучитьДвоичныеДанные(); + Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанныеЗаявления, УникальныйИдентификатор); + +КонецФункции + + &НаСервере Функция УдостоверяющийЦентр() @@ -3880,7 +4861,7 @@ КонецФункции &НаСервере -Функция ОписаниеПакетаXML(ИмяФайлаЗаявления) +Функция ОписаниеПакетаXML(ОписанияФайловПакета, ТипТранзакции, ИдентификаторДокументооборота) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("windows-1251"); @@ -3891,10 +4872,13 @@ ЗаписьXML.ЗаписатьАтрибут("версПрог", "1.0"); // АПК:1036 внешний идентификатор ЗаписьXML.ЗаписатьАтрибут("типДокументооборота", "РегистрацияАбонентаЭДО"); - ЗаписьXML.ЗаписатьАтрибут("типТранзакции", "Регистрация"); + ЗаписьXML.ЗаписатьАтрибут("типТранзакции", ТипТранзакции); ЗаписьXML.ЗаписатьАтрибут("идентификаторДокументооборота", ИдентификаторДокументооборота); ЗаписьXML.ЗаписатьНачалоЭлемента("отправитель"); + Если ЗначениеЗаполнено(ДанныеЗаявления.ИдентификаторАбонента) Тогда + ЗаписьXML.ЗаписатьАтрибут("идентификаторСубъекта", ДанныеЗаявления.ИдентификаторАбонента); + КонецЕсли; ЗаписьXML.ЗаписатьАтрибут("типСубъекта", "абонент"); ЗаписьXML.ЗаписатьКонецЭлемента(); @@ -3903,18 +4887,9 @@ ЗаписьXML.ЗаписатьАтрибут("типСубъекта", "спецоператор"); ЗаписьXML.ЗаписатьКонецЭлемента(); - ЗаписьXML.ЗаписатьНачалоЭлемента("документ"); - ЗаписьXML.ЗаписатьАтрибут("идентификаторДокумента", НовыйСжатыйУникальныйИдентификатор()); - ЗаписьXML.ЗаписатьАтрибут("типДокумента", "Заявление"); - ЗаписьXML.ЗаписатьАтрибут("типСодержимого", "xml"); - ЗаписьXML.ЗаписатьАтрибут("сжат", "false"); - ЗаписьXML.ЗаписатьАтрибут("зашифрован", "false"); - - ЗаписьXML.ЗаписатьНачалоЭлемента("содержимое"); - ЗаписьXML.ЗаписатьАтрибут("имяФайла", ИмяФайлаЗаявления); - ЗаписьXML.ЗаписатьКонецЭлемента(); - - ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента документ. + Для Каждого ОписаниеФайла Из ОписанияФайловПакета Цикл + ЗаписатьОписаниеФайла(ЗаписьXML, ОписаниеФайла); + КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента пакет. @@ -3924,27 +4899,29 @@ КонецФункции -&НаСервереБезКонтекста -Функция ЗначениеУзлаXML(ДокументDOM, НазваниеУзла, ЗначениеПоУмолчанию = "") +&НаСервере +Процедура ЗаписатьОписаниеФайла(ЗаписьXML, ОписаниеФайла) - УзелDOM = ДокументDOM.ПолучитьЭлементыПоИмени(НазваниеУзла); - - ПодходящийЭлементDOM = Неопределено; - - Если УзелDOM.Количество() > 0 Тогда - ПодходящийЭлементDOM = УзелDOM[0]; - КонецЕсли; - - Если ПодходящийЭлементDOM = Неопределено Тогда - Возврат ЗначениеПоУмолчанию; + ЗаписьXML.ЗаписатьНачалоЭлемента("документ"); + ЗаписьXML.ЗаписатьАтрибут("идентификаторДокумента", ОписаниеФайла.ОписаниеДляПакета.ИдентификаторДокумента); + ЗаписьXML.ЗаписатьАтрибут("типДокумента", ОписаниеФайла.ОписаниеДляПакета.ТипДокумента); + ЗаписьXML.ЗаписатьАтрибут("типСодержимого", ОписаниеФайла.ОписаниеДляПакета.ТипСодержимого); + ЗаписьXML.ЗаписатьАтрибут("сжат", ОписаниеФайла.ОписаниеДляПакета.Сжат); + ЗаписьXML.ЗаписатьАтрибут("зашифрован", ОписаниеФайла.ОписаниеДляПакета.Зашифрован); - ИначеЕсли НазваниеУзла = "Отпечаток" Тогда - Возврат НРег(ПодходящийЭлементDOM.ТекстовоеСодержимое); - Иначе - Возврат ПодходящийЭлементDOM.ТекстовоеСодержимое; - КонецЕсли; + ЗаписьXML.ЗаписатьНачалоЭлемента("содержимое"); + ЗаписьXML.ЗаписатьАтрибут("имяФайла", ОписаниеФайла.ОписаниеДляПакета.ИмяФайла); + ЗаписьXML.ЗаписатьКонецЭлемента(); + + Если ОписаниеФайла.Свойство("СвойстваПодписи") Тогда + ЗаписьXML.ЗаписатьНачалоЭлемента("подпись"); + ЗаписьXML.ЗаписатьАтрибут("имяФайла", ОписаниеФайла.СвойстваПодписи.ИмяФайлаПодписи); + ЗаписьXML.ЗаписатьКонецЭлемента(); + КонецЕсли; + + ЗаписьXML.ЗаписатьКонецЭлемента(); // КонецЭлемента документ. -КонецФункции +КонецПроцедуры #КонецОбласти @@ -4076,20 +5053,11 @@ Строки = СписокПрограмм.НайтиСтроки(Новый Структура("Ссылка", Объект.Программа)); Если Не ЗначениеЗаполнено(Путь) Тогда - Если СтрНачинаетсяС(Строки[0].Идентификатор, "CryptoPro") Тогда - ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ключ электронной подписи не создан. - | - |Следует учитывать, что для создания ключа с помощью программы %1, - |требуются права администратора операционной системы.'"), - Строки[0].Представление)); - Иначе - ПоказатьПредупреждение(, НСтр("ru = 'Ключ электронной подписи не создан.'")); - КонецЕсли; - + ПоказатьПредупреждение(, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ключ электронной подписи с помощью программы %1 не создан.'"), + Строки[0].Представление)); ВыполнитьОбработкуОповещения(Контекст.Оповещение, Ложь); Возврат; - КонецЕсли; КонтейнерКлючаИмя = Контекст.КонтейнерКлючаНовоеИмя; @@ -4952,7 +5920,38 @@ #Область УстановкаСертификата &НаКлиенте -Процедура УстановитьСертификат(Оповещение) +Процедура УстановитьПолученныйСертификат() + + Если ДанныеЗаявления.СостояниеЗаявления = + ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена") Тогда + + Если ДанныеЗаявления.ОформленоВЭлектронномВиде Тогда + СформироватьИОтправитьФайлРасписки(); + Иначе + ОткрытьФормуИнформацииСертификата(); + КонецЕсли; + + Иначе + + УстановитьСертификатПослеПодтвержденияИнформации(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСертификатПослеПодтвержденияИнформации() + + Если Объект.Программа = ПрограммаОблачногоСервиса Тогда + УстановитьСертификатОблачногоСервиса(); + Иначе + УстановитьСертификатВКонтейнер(Новый ОписаниеОповещения("ПослеУстановкиСертификата", ЭтотОбъект)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСертификатВКонтейнер(Оповещение) Если СписокПрограмм.Количество() = 0 И Не ЗаполнитьСписокПрограмм(ОшибкаУстановкиСертификата) Тогда @@ -4999,10 +5998,8 @@ Иначе СоздатьОбъектКриптографии(Новый ОписаниеОповещения( "УстановитьСертификатПослеСозданияОбъектаКриптографии", ЭтотОбъект, Контекст), - НСтр("ru = 'Для установки сертификата на компьютер требуется - |установить расширение работы с файлами.'"), - НСтр("ru = 'Для установки сертификата на компьютер требуется - |установить внешнюю компоненту.'")); + НСтр("ru = 'Для установки сертификата на компьютер установите расширение работы с файлами.'"), + НСтр("ru = 'Для установки сертификата на компьютер установите внешнюю компоненту.'")); КонецЕсли; КонецПроцедуры @@ -5267,10 +6264,8 @@ СоздатьОбъектКриптографии(Новый ОписаниеОповещения( "УстановитьСертификатПослеПроверкиНаличияСертификат", ЭтотОбъект, Контекст), - НСтр("ru = 'Для установки сертификата на компьютер требуется - |установить расширение работы с файлами.'"), - НСтр("ru = 'Для установки сертификата на компьютер требуется - |установить внешнюю компоненту.'")); + НСтр("ru = 'Для установки сертификата на компьютер установите расширение работы с файлами.'"), + НСтр("ru = 'Для установки сертификата на компьютер установите внешнюю компоненту.'")); КонецЕсли; @@ -5413,6 +6408,11 @@ ПослеУстановкиСертификатаНаСервере(Установлен); Если Установлен Тогда ПослеЗаписи(); + ИначеЕсли ЗначениеЗаполнено(ОшибкаУстановкиСертификата) Тогда + ОписаниеОшибки = НовыйОписаниеОшибки(); + ОписаниеОшибки.Описание = НСтр("ru = 'Не удалось установить сертификат.'"); + ОписаниеОшибки.Текст = ОшибкаУстановкиСертификата; + ОткрытьФормуОшибки(ОписаниеОшибки); КонецЕсли; КонецПроцедуры @@ -5421,17 +6421,24 @@ Процедура ПослеУстановкиСертификатаНаСервере(Установлен) Если Установлен Тогда - СостояниеОбработкиЗаявления = НСтр("ru = 'Заявление исполнено.'"); - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено; + ДанныеЗаявления.СостояниеОбработкиЗаявления = НСтр("ru = 'Заявление исполнено.'"); + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено; + Элементы.Готово.Видимость = Истина; + Элементы.Готово.КнопкаПоУмолчанию = Истина; + Если ДоступныНапоминанияПользователя Тогда + ЭлектроннаяПодписьСлужебный.ИзменитьОтметкуОНапоминании( + Объект.Ссылка, Истина, "АвтоматическоеНапоминаниеОПродленииСертификата"); + КонецЕсли; Иначе - СостояниеОбработкиЗаявления = НСтр("ru = 'Исполнено. Сертификат не установлен.'"); - Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен; + ДанныеЗаявления.СостояниеОбработкиЗаявления = НСтр("ru = 'Исполнено. Сертификат не установлен.'"); + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен; Если ЗначениеЗаполнено(ОшибкаУстановкиСертификата) Тогда - СостояниеОбработкиЗаявления = СостояниеОбработкиЗаявления + Символы.ПС + ОшибкаУстановкиСертификата; + ДанныеЗаявления.СостояниеОбработкиЗаявления = ДанныеЗаявления.СостояниеОбработкиЗаявления + Символы.ПС + ОшибкаУстановкиСертификата; КонецЕсли; КонецЕсли; ЗаписатьЗаявление(); + УстановитьВидимостьИДоступность(); КонецПроцедуры @@ -5800,6 +6807,61 @@ #Область Прочее +&НаКлиенте +Функция СсылкаНаДоверенность() + + Возврат "http://ca.1c.ru/doc/doverennost_p3.rtf"; + +КонецФункции + +&НаКлиенте +Процедура ПроверитьФайл(ПомещаемыйФайл, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт + + РазмерФайлаВБайтах = ПомещаемыйФайл.Размер(); + + Если РазмерФайлаВБайтах > 2*1024*1024 Тогда + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Файл ""%1"" (%2 Б) превышает максимально допустимый размер файла для загрузки - 2 МБ. + |Выберите другой файл или сохраните этот в другом формате (со сжатием).'"), + ПомещаемыйФайл.Имя, РазмерФайлаВБайтах); + + ПоказатьПредупреждение(, ТекстОшибки); + ОтказОтПомещенияФайла = Истина; + Возврат; + КонецЕсли; + + ПоддерживаемыеРасширения = "pdf,png,jpg,jpeg,zip"; + Если СтрНайти(ПоддерживаемыеРасширения, + НРег(ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ПомещаемыйФайл.Имя))) = 0 Тогда + + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Формат файла ""%1"" не поддерживается для загрузки. + |Выберите другой файл или сохраните этот в другом формате (%2).'"), + ПомещаемыйФайл.Имя, ПоддерживаемыеРасширения); + + ПоказатьПредупреждение(, ТекстОшибки); + ОтказОтПомещенияФайла = Истина; + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеДобавленияДокумента(ПомещенныйФайл, ДополнительныеПараметры) Экспорт + + Если ПомещенныйФайл = Неопределено Тогда + Возврат; + КонецЕсли; + + ВидДокумента = Сред(ДополнительныеПараметры, СтрДлина("Выбрать") + 1); + + Элементы["Выбрать" + ВидДокумента].Заголовок = Новый ФорматированнаяСтрока(ПомещенныйФайл.Имя, , , , "ОткрытьФайл"); + ЭтотОбъект["АдресФайла" + ВидДокумента] = ПомещенныйФайл.Хранение; + Элементы["Очистить" + ВидДокумента].Видимость = Истина; + +КонецПроцедуры + &НаСервере Процедура УстановитьДоступностьВариантовЗаявления() @@ -5912,16 +6974,16 @@ КонецФункции &НаКлиенте -Процедура ДекорацияТекстЗаявленияОбработкаНавигационнойСсылкиПродолжение() +Процедура СозданиеКлючаИЗапросаНаСертификатНачало() Если Объект.Программа = ПрограммаОблачногоСервиса Тогда СоздатьЗапросВОблачныйСервис(Новый ОписаниеОповещения( - "ПечатьЗаявленияПослеСозданияКлючаИЗапросаНаСертификат", ЭтотОбъект)); + "ОбработатьЗаявлениеПослеСозданияКлючаИЗапросаНаСертификат", ЭтотОбъект)); Иначе ЭлектроннаяПодписьКлиент.УстановитьРасширение(Ложь, Новый ОписаниеОповещения( "ПечатьЗаявленияПослеУстановкиРасширенияДляРаботыСКриптографией", ЭтотОбъект), НСтр("ru = 'Для создания ключа электронной подписи и запроса на сертификат - |требуется установить расширение для работы с криптографией.'")); + |установите расширение для работы с криптографией.'")); КонецЕсли; КонецПроцедуры @@ -6050,6 +7112,8 @@ КонецПроцедуры + #КонецОбласти + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ManagerModule.bsl b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ManagerModule.bsl index 31abf0b5c..6532be06a 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ManagerModule.bsl @@ -37,10 +37,10 @@ // Процедура ПриСозданииНаСервере(Объект, ОткрытьЗаявление) Экспорт - Если ЗначениеЗаполнено(Объект.Ссылка) - И ЗначениеЗаполнено(Объект.СостояниеЗаявления) - И Объект.СостояниеЗаявления <> Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + СостояниеЗаявления = СостояниеЗаявления(Объект); + Если ЗначениеЗаполнено(СостояниеЗаявления) + И СостояниеЗаявления <> Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда ОткрытьЗаявление = Истина; КонецЕсли; @@ -56,14 +56,12 @@ // Процедура ПриСозданииНаСервереПриЧтенииНаСервере(Объект, Элементы) Экспорт - Если ЗначениеЗаполнено(Объект.СостояниеЗаявления) Тогда - Если Объект.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда - + СостояниеЗаявления = СостояниеЗаявления(Объект); + Если СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда Элементы.ФормаПоказатьЗаявлениеПоКоторомуБылПолученСертификат.Доступность = Истина; Элементы.ПоказатьЗаявлениеПоКоторомуБылПолученСертификат.Доступность = Истина; - Иначе - Возврат; - КонецЕсли; + Иначе + Возврат; КонецЕсли; КонецПроцедуры @@ -85,35 +83,126 @@ КонецПроцедуры +Функция ВыпущенныеСертификаты(СертификатОснование) Экспорт + + СписокСертификатов = Новый СписокЗначений; + + Запрос = Новый Запрос; + Запрос.Текст ="ВЫБРАТЬ + | ЗаявленияНаВыпускСертификата.Сертификат, + | ЗаявленияНаВыпускСертификата.СостояниеЗаявления, + | Представление(ЗаявленияНаВыпускСертификата.Сертификат) КАК Представление + |ИЗ + | РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК + | СертификатыКлючейЭлектроннойПодписиИШифрования + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ГДЕ + | ЗаявленияНаВыпускСертификата.СертификатОснование = &СертификатОснование + | И ЗаявленияНаВыпускСертификата.СостояниеЗаявления В (&СостоянияЗаявления) + | И НЕ СертификатыКлючейЭлектроннойПодписиИШифрования.ПометкаУдаления"; + + СостоянияЗаявления = Новый Массив; + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено); + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена); + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен); + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено); + + Запрос.УстановитьПараметр("СертификатОснование", СертификатОснование); + Запрос.УстановитьПараметр("СостоянияЗаявления", СостоянияЗаявления); + РезультатЗапроса = Запрос.Выполнить(); + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + + Если Выборка.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен Тогда + Состояние = НСтр("ru = 'Требуется установка'"); + ИначеЕсли Выборка.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена Тогда + Состояние = НСтр("ru = 'Требуется расписка'"); + ИначеЕсли Выборка.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + Состояние = НСтр("ru = 'Заявление исполнено'"); + Иначе + Состояние = Выборка.СостояниеЗаявления; + КонецЕсли; + + СписокСертификатов.Добавить(Выборка.Сертификат, + СтрШаблон("%1 (%2)", Выборка.Представление, Состояние)); + + КонецЦикла; + + Возврат СписокСертификатов; + +КонецФункции + Процедура ДополнитьЗапросПриДобавленииСертификатов(ТекстЗапроса) Экспорт ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ЛОЖЬ КАК ЭтоЗаявление", "ВЫБОР - | КОГДА Сертификаты.СостояниеЗаявления = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.ПустаяСсылка) + | КОГДА ЗаявленияНаВыпускСертификата.СостояниеЗаявления Есть NULL | ТОГДА ЛОЖЬ - | КОГДА Сертификаты.СостояниеЗаявления = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено) + | КОГДА ЗаявленияНаВыпускСертификата.СостояниеЗаявления = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено) | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ЭтоЗаявление"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "И &ДополнительноеСоединение", " + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО Сертификаты.Ссылка = ЗаявленияНаВыпускСертификата.Сертификат"); КонецПроцедуры Процедура ДополнитьЗапросСпискаСертификатов(ТекстЗапроса) Экспорт + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый", " + |Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО СертификатыПереопределяемый.Ссылка = ЗаявленияНаВыпускСертификата.Сертификат"); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительноеУсловие", - "СертификатыПереопределяемый.СостояниеЗаявления В ( - | ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.ПустаяСсылка), - | ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено) )"); + "ЗаявленияНаВыпускСертификата.СостояниеЗаявления Есть NULL + | ИЛИ ЗаявленияНаВыпускСертификата.СостояниеЗаявления = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено)"); КонецПроцедуры Процедура ДополнитьЗапросСостояниемВСпискеСертификатов(ТекстЗапроса) Экспорт + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "И &ДополнительноеСоединение", " + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО СертификатыПереопределяемый.Ссылка = ЗаявленияНаВыпускСертификата.Сертификат"); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительноеПоле", - "СертификатыПереопределяемый.СостояниеЗаявления"); + "ЗаявленияНаВыпускСертификата.СостояниеЗаявления"); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "&ЭтоЗаявление", + "НЕ ЗаявленияНаВыпускСертификата.СостояниеЗаявления Есть NULL + | И ЗаявленияНаВыпускСертификата.СостояниеЗаявления <> Значение(Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено)"); + +КонецПроцедуры + +// Добавить легенду. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// ГруппаЛегенда - ГруппаФормы +// +Процедура ДобавитьЛегенду(Форма, ГруппаЛегенда) Экспорт + + ГруппаЗаявление = Форма.Элементы.Добавить("ГруппаЗаявление", Тип("ГруппаФормы"), ГруппаЛегенда); + ГруппаЗаявление.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаЗаявление.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; + ГруппаЗаявление.ОтображатьЗаголовок = Ложь; + ДекорацияКартинка = Форма.Элементы.Добавить("ДекорацияКартинкаЗаявление", Тип("ДекорацияФормы"), ГруппаЗаявление); + ДекорацияКартинка.Вид = ВидДекорацииФормы.Картинка; + ДекорацияКартинка.Картинка = БиблиотекаКартинок.ЗаявлениеНаВыпускСертификатаКлюча; + ДекорацияНадпись = Форма.Элементы.Добавить("ДекорацияНадписьЗаявление", Тип("ДекорацияФормы"), ГруппаЗаявление); + ДекорацияНадпись.Вид = ВидДекорацииФормы.Надпись; + ДекорацияНадпись.Заголовок = НСтр("ru = 'Заявление на выпуск квалифицированного сертификата'"); КонецПроцедуры @@ -122,13 +211,19 @@ // Процедура РеквизитыНеРедактируемыеВГрупповойОбработке(НеРедактируемыеРеквизиты) Экспорт - НеРедактируемыеРеквизиты.Добавить("СостояниеЗаявления"); - НеРедактируемыеРеквизиты.Добавить("СодержаниеЗаявления"); + НеРедактируемыеРеквизиты.Добавить("ДатаПолученияСертификата"); КонецПроцедуры +// Гражданство свойства. +// // Параметры: // Гражданство - СправочникСсылка.СтраныМира +// +// Возвращаемое значение: +// Структура: +// * ГражданствоОКСМКодАльфа3 - Строка - код страны +// * ГражданствоПредставление - Строка - наименование страны // Функция ГражданствоСвойства(Гражданство) Экспорт @@ -510,29 +605,33 @@ МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами"); - ТекстСообщения = ""; + ТекстСообщения = Новый Массив; ДополнительныеПараметры = Новый Структура("НаименованиеВключаетСокращение", Истина); АдресСтруктура = МодульРаботаСАдресами.СведенияОбАдресе(АдресXML, ДополнительныеПараметры); // Проверка, что адрес российский. Если Не АдресСтруктура.Свойство("КодРегиона") Тогда - Возврат ТекстСообщения + НСтр("ru = 'Это не российский адрес'"); + ТекстСообщения.Добавить(НСтр("ru = 'Это не российский адрес'")); КонецЕсли; // Проверка, что указан регион. Если Не АдресСтруктура.Свойство("Регион") Или Не ЗначениеЗаполнено(АдресСтруктура.Регион) Тогда - Возврат ТекстСообщения + НСтр("ru = 'Не указан регион'"); + ТекстСообщения.Добавить(НСтр("ru = 'Не указан регион'")); КонецЕсли; // Проверка, что регион указан правильно - код региона определен. Если Не ЗначениеЗаполнено(АдресСтруктура.КодРегиона) Тогда - Возврат ТекстСообщения + НСтр("ru = 'Некорректный регион (код региона не определен)'"); + ТекстСообщения.Добавить(НСтр("ru = 'Некорректный регион (код региона не определен)'")); КонецЕсли; // Населенный пункт полностью. НаселенныйПунктПолностью = НаселенныйПунктПолностью(АдресСтруктура); Если Не ЗначениеЗаполнено(НаселенныйПунктПолностью) Тогда - Возврат ТекстСообщения + НСтр("ru = 'Не указан населенный пункт'"); + ТекстСообщения.Добавить(НСтр("ru = 'Не указан населенный пункт'")); + КонецЕсли; + + Если ТекстСообщения.Количество() > 0 Тогда + Возврат СтрСоединить(ТекстСообщения, Символы.ПС); КонецЕсли; Возврат ""; @@ -547,26 +646,36 @@ МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); - ТекстСообщения = ""; + ТекстСообщения = Новый Массив; ТелефонСтруктура = МодульУправлениеКонтактнойИнформацией.СведенияОТелефоне(ТелефонXML); // Проверка, что телефон российский. Если СтрЗаменить(ТелефонСтруктура.КодСтраны, "+", "") <> "7" Тогда - Возврат ТекстСообщения + НСтр("ru = 'Код страны не российский (должен быть ""7"")'"); + ТекстСообщения.Добавить(НСтр("ru = 'Код страны не российский (должен быть ""7"")'")); КонецЕсли; НомерТелефонаБезКодаСтраны = ТелефонСтруктура.КодГорода + ТелефонСтруктура.НомерТелефона; Если Не ЗначениеЗаполнено(НомерТелефонаБезКодаСтраны) Тогда - Возврат ТекстСообщения + НСтр("ru = 'Не заполнен номер телефона'"); + ТекстСообщения.Добавить(НСтр("ru = 'Не заполнен номер телефона'")); + Возврат СтрСоединить(ТекстСообщения, Символы.ПС); + КонецЕсли; + + КодГородаТолькоЦифры = ТолькоЦифры(ТелефонСтруктура.КодГорода); + Если СтрДлина(КодГородаТолькоЦифры) < 3 Или СтрДлина(КодГородаТолькоЦифры) > 5 Тогда + ТекстСообщения.Добавить(НСтр("ru = 'Код города должен состоять из 3-5 цифр'")); КонецЕсли; Если СтрДлина(ТолькоЦифры(НомерТелефонаБезКодаСтраны)) <> 10 Тогда - Возврат ТекстСообщения + НСтр("ru = 'Номер телефона с кодом города должен состоять из 10-и цифр'"); + ТекстСообщения.Добавить(НСтр("ru = 'Номер телефона с кодом города должен состоять из 10-и цифр'")); КонецЕсли; Если СтрДлина(ТелефонСтруктура.Добавочный) > 6 Тогда - Возврат НСтр("ru = 'Добавочный номер телефона не может быть длиннее 6 символов.'"); + ТекстСообщения.Добавить(НСтр("ru = 'Добавочный номер телефона не может быть длиннее 6 символов.'")); + КонецЕсли; + + Если ТекстСообщения.Количество() > 0 Тогда + Возврат СтрСоединить(ТекстСообщения, Символы.ПС); КонецЕсли; Возврат ""; @@ -602,7 +711,7 @@ СтрокаЦифр = СокрЛП(КодПодразделения); Если СтрДлина(СтрокаЦифр) < 6 Тогда - Возврат НСтр("ru = 'Код подразделения задан неполностью'"); + Возврат НСтр("ru = 'Код подразделения задан не полностью'"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаЦифр) Тогда @@ -631,7 +740,7 @@ КонецЕсли; Если СтрДлина(СтрокаЦифр) < 10 Тогда - Возврат НСтр("ru = 'Номер паспорта задан неполностью'"); + Возврат НСтр("ru = 'Номер паспорта задан не полностью'"); КонецЕсли; Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаЦифр) Тогда @@ -719,10 +828,685 @@ СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Подготовлено); СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отправлено); СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено); + СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена); СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен); СписокВыбора.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено); КонецПроцедуры +// Состояние заявления. +// +// Параметры: +// Сертификат - СправочникОбъект.СертификатыКлючейЭлектроннойПодписиИШифрования +// +// Возвращаемое значение: +// Неопределено, ПеречислениеСсылка.СостоянияЗаявленияНаВыпускСертификата - состояние заявления +// +Функция СостояниеЗаявления(Сертификат) Экспорт + + СостояниеЗаявления = Неопределено; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ЗаявленияНаВыпускСертификата.СостояниеЗаявления КАК СостояниеЗаявления + |ИЗ + | РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + |ГДЕ + | ЗаявленияНаВыпускСертификата.Сертификат = &Сертификат"; + + Запрос.УстановитьПараметр("Сертификат", Сертификат.Ссылка); + + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + Если РезультатЗапроса.Следующий() Тогда + Возврат РезультатЗапроса.СостояниеЗаявления; + КонецЕсли; + + Возврат СостояниеЗаявления; + +КонецФункции + +Функция ВебСервисУЦ() Экспорт + + ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси(); + ПараметрыПодключения.АдресWSDL = "http://regservice.1c.ru/regservice/regservice.asmx?wsdl"; + ПараметрыПодключения.URIПространстваИмен = "http://regservice.keydisk.ru/"; + ПараметрыПодключения.ИмяСервиса = "RegService"; + ПараметрыПодключения.Таймаут = 7; + + Возврат ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения); + +КонецФункции + +// Обновить состояние заявления. +// +// Параметры: +// Сертификат - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +// Возвращаемое значение: +// Неопределено, Булево - булево, Неопределено +// +Функция ОбновитьСостояниеЗаявления(Сертификат) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ДанныеЗаявления = РегистрыСведений.ЗаявленияНаВыпускСертификата.СоздатьМенеджерЗаписи(); + ДанныеЗаявления.Сертификат = Сертификат; + ДанныеЗаявления.Прочитать(); + + Если Не ДанныеЗаявления.Выбран() Тогда + Возврат Неопределено; + КонецЕсли; + + ПервоначальноеСостояниеЗаявления = ДанныеЗаявления.СостояниеЗаявления; + + ШаблонОписанияОшибки = + НСтр("ru = 'Не удалось обновить состояние по причине: %1'"); + + // Запрос состояния обработки заявления. + + Попытка + ВебСервис = ВебСервисУЦ(); + Ответ = ВебСервис.ReceivePacket(ДанныеЗаявления.ИдентификаторДокументооборота); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ДанныеЗаявления.ДатаОбновленияСостояния = ТекущаяДатаСеанса(); + ДанныеЗаявления.СостояниеОбработкиЗаявления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецПопытки; + + ДанныеЗаявления.ДатаОбновленияСостояния = ТекущаяДатаСеанса(); + + Если Не ЗначениеЗаполнено(Ответ) Тогда + ДанныеЗаявления.СостояниеОбработкиЗаявления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустой ответ.'"), "ReceivePacket")); + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецЕсли; + + ОписаниеОшибки = ""; + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.УстановитьСтроку(Ответ); + ПостроительDOM = Новый ПостроительDOM(); + ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); + ЧтениеXML.Закрыть(); + + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); + КодРезультата = УзелDOM[0].ТекстовоеСодержимое; + + ИмяФайлаПакетОтвета = ""; + Если КодРезультата = "0" Тогда + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("packet"); + + Если УзелDOM.Количество() > 0 Тогда + + СодержимоеОтвета = УзелDOM[0].ТекстовоеСодержимое; + + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустые данные.'"), "ReceivePacket")); + КонецЕсли; + + ИначеЕсли КодРезультата = "1" Тогда + ОписаниеОшибки = НСтр("ru = 'Заявление еще не обработано, попробуйте позже.'"); + Иначе + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); + Если УзелDOM.Количество() > 0 Тогда + ОписаниеОшибки = УзелDOM[0].ТекстовоеСодержимое; + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул код ошибки: %2'"), + "ReceivePacket", Строка(КодРезультата)); + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки; + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецЕсли; + + ДвоичныеДанные = Base64Значение(СодержимоеОтвета); + ИмяФайлаПакетОтвета = ПолучитьИмяВременногоФайла(".zip"); + ДвоичныеДанные.Записать(ИмяФайлаПакетОтвета); + ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( + ПолучитьИмяВременногоФайла("package")); + + СоздатьКаталог(ВременныйКаталог); + + ФайлНайден = Ложь; + Попытка + Архив1 = Новый ЧтениеZipФайла(ИмяФайлаПакетОтвета); + + Для Счетчик = 0 По Архив1.Элементы.Количество() - 1 Цикл + + Если Архив1.Элементы[Счетчик].Расширение = "bin" Тогда + ФайлНайден = Истина; + + Архив1.Извлечь(Архив1.Элементы[Счетчик], ВременныйКаталог); + Архив2 = Новый ЧтениеZipФайла(ВременныйКаталог + Архив1.Элементы[Счетчик].Имя); + Архив2.ИзвлечьВсе(ВременныйКаталог); + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.ОткрытьФайл(ВременныйКаталог + "file"); + ПостроительDOM = Новый ПостроительDOM; + ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); + ЧтениеXML.Закрыть(); + + РегистрацияУспешна = Булево(ЗначениеУзлаXML(ДокументDOM, "РегистрацияУспешна")); + ДанныеЗаявления.СостояниеОбработкиЗаявления = ЗначениеУзлаXML(ДокументDOM, "Результат"); + + Если РегистрацияУспешна Тогда + ДанныеЗаявления.ИдентификаторАбонента = ЗначениеУзлаXML(ДокументDOM, "ИдентификаторАбонента"); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если Не ФайлНайден Тогда + ВызватьИсключение НСтр("ru = 'Архив не содержит файл данных.'"); + КонецЕсли; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось разобрать результат выполнения метода %1 сервиса 1С:Подпись по причине: %2'"), + "ReceivePacket", + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + + УдалитьФайлы(ИмяФайлаПакетОтвета); + УдалитьФайлы(ВременныйКаталог); + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки; + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецЕсли; + + Если Не РегистрацияУспешна Тогда + + НачатьТранзакцию(); + Попытка + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.ЗаявленияНаВыпускСертификата"); + ЭлементБлокировки.УстановитьЗначение("Сертификат", Сертификат); + ЭлементБлокировки = БлокировкаДанных.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Сертификат); + БлокировкаДанных.Заблокировать(); + + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено; + ДанныеЗаявления.Записать(); + + Объект = Сертификат.ПолучитьОбъект(); + Наименование = СокрП(Объект.Фамилия + " " + Объект.Имя + " " + Объект.Отчество) + " (" + НСтр("ru = 'Удалить'") + ")"; + + ИзменитьТекстНапоминанийПользователя(Сертификат, + "АвтоматическоеНапоминаниеОбИзмененииСостоянияЗаявления", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заявление отклонено: ""%1""'", "ru"), Наименование)); + + Объект.Наименование = Наименование; + Объект.ДатаПолученияСертификата = Дата(1,1,1); + Объект.Записать(); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Возврат Ложь; + КонецЕсли; + + // Запрос сертификата. + + Ответ = ВебСервис.ReceiveUpdatedPacket(Строка(ДанныеЗаявления.ИдентификаторАбонента), Дата('00010101')); + + ОписаниеОшибки = ""; + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.УстановитьСтроку(Ответ); + ПостроительDOM = Новый ПостроительDOM(); + ПостроительDOM = ПостроительDOM.Прочитать(ЧтениеXML); + ЧтениеXML.Закрыть(); + + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("code"); + КодРезультата = УзелDOM[0].ТекстовоеСодержимое; + + ИмяФайлаПакетОтвета = ""; + Если КодРезультата = "0" Тогда + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("packet"); + + Если УзелDOM.Количество() > 0 Тогда + + СодержимоеОтвета = УзелDOM[0].ТекстовоеСодержимое; + + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустые данные.'"), "ReceiveUpdatedPacket")); + КонецЕсли; + Иначе + УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); + Если УзелDOM.Количество() > 0 Тогда + ОписаниеОшибки = УзелDOM[0].ТекстовоеСодержимое; + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул код ошибки: %2'"), + "ReceiveUpdatedPacket", Строка(КодРезультата)); + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки; + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецЕсли; + + ДвоичныеДанные = Base64Значение(СодержимоеОтвета); + ИмяФайлаПакетОтвета = ПолучитьИмяВременногоФайла(".zip"); + ДвоичныеДанные.Записать(ИмяФайлаПакетОтвета); + + ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( + ПолучитьИмяВременногоФайла("package")); + + СоздатьКаталог(ВременныйКаталог); + + ФайлНайден = Ложь; + + Попытка + Архив = Новый ЧтениеZipФайла(ИмяФайлаПакетОтвета); + + Для Счетчик = 0 По Архив.Элементы.Количество() - 1 Цикл + + Если Архив.Элементы[Счетчик].Расширение = "xml" Тогда + ФайлНайден = Истина; + + Архив.Извлечь(Архив.Элементы[Счетчик], ВременныйКаталог); + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.ОткрытьФайл(ВременныйКаталог + Архив.Элементы[Счетчик].Имя); + ПостроительDOM = Новый ПостроительDOM; + ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); + ЧтениеXML.Закрыть(); + + УзелDOM = ДокументDOM.ПолучитьЭлементыПоИмени("Сертификат"); + + СертификатСтрокой = ""; + КорневойСертификатСтрокой = ""; + + Для Каждого Узел Из УзелDOM Цикл + Хранилище = Узел.Атрибуты.ПолучитьИменованныйЭлемент("Хранилище").ТекстовоеСодержимое; + Если Хранилище = "MY" Тогда + СертификатСтрокой = Узел.ТекстовоеСодержимое; + КонецЕсли; + Если Хранилище = "ROOT" Тогда + КорневойСертификатСтрокой = Узел.ТекстовоеСодержимое; + КонецЕсли; + КонецЦикла; + + Если Не ЗначениеЗаполнено(СертификатСтрокой) Тогда + ВызватьИсключение НСтр("ru = 'Ответ не содержит сведений о выпущенном сертификате.'"); + ИначеЕсли Не ЗначениеЗаполнено(КорневойСертификатСтрокой) Тогда + ВызватьИсключение НСтр("ru = 'Ответ не содержит сведений о корневом сертификате.'"); + КонецЕсли; + + ДанныеСертификата = Base64Значение(СертификатСтрокой); + ДанныеКорневогоСертификата = Base64Значение(КорневойСертификатСтрокой); + + СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); + КорневойСертификат = Новый СертификатКриптографии(ДанныеКорневогоСертификата); + + КонецЕсли; + КонецЦикла; + + Если Не ФайлНайден Тогда + ВызватьИсключение НСтр("ru = 'Архив не содержит файл данных.'"); + КонецЕсли; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось разобрать результат выполнения метода %1 сервиса 1С:Подпись по причине: %2'"), + "ReceiveUpdatedPacket", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + + УдалитьФайлы(ИмяФайлаПакетОтвета); + УдалитьФайлы(ВременныйКаталог); + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + ДанныеЗаявления.СостояниеОбработкиЗаявления = ОписаниеОшибки; + ДанныеЗаявления.Записать(); + Возврат Неопределено; + КонецЕсли; + + СвойстваСертификата = ЭлектроннаяПодпись.СвойстваСертификата(СертификатКриптографии); + СвойстваСубъекта = ЭлектроннаяПодпись.СвойстваСубъектаСертификата(СертификатКриптографии); + + НачатьТранзакцию(); + Попытка + БлокировкаДанных = Новый БлокировкаДанных; + ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.ЗаявленияНаВыпускСертификата"); + ЭлементБлокировки.УстановитьЗначение("Сертификат", Сертификат); + ЭлементБлокировки = БлокировкаДанных.Добавить("Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Сертификат); + БлокировкаДанных.Заблокировать(); + Объект = Сертификат.ПолучитьОбъект(); + + // Важно заполнить отпечаток, чтобы не было возможности добавить дубль сертификата. + Объект.Наименование = ЭлектроннаяПодпись.ПредставлениеСертификата(СертификатКриптографии); + + Объект.Подписание = СвойстваСертификата.Подписание; + Объект.Шифрование = СвойстваСертификата.Шифрование; + Объект.Отпечаток = СвойстваСертификата.Отпечаток; + Объект.КомуВыдан = СвойстваСертификата.КомуВыдан; + Объект.КемВыдан = СвойстваСертификата.КемВыдан; + Объект.ДействителенДо = СвойстваСертификата.ДатаОкончания; + + Объект.Фамилия = СвойстваСубъекта.Фамилия; + Объект.Имя = СвойстваСубъекта.Имя; + Объект.Отчество = СвойстваСубъекта.Отчество; + Объект.Должность = СвойстваСубъекта.Должность; + Объект.Фирма = СвойстваСубъекта.Организация; + Объект.ДатаПолученияСертификата = ТекущаяДатаСеанса(); + + Если Объект.ДанныеСертификата.Получить() <> ДанныеСертификата Тогда + Объект.ДанныеСертификата = Новый ХранилищеЗначения(ДанныеСертификата); + КонецЕсли; + + Содержание = ДанныеЗаявления.СодержаниеЗаявления.Получить(); + Содержание.Вставить("ОтпечатокКорневогоСертификата", Base64Строка(КорневойСертификат.Отпечаток)); + Содержание.Вставить("Сертификат", ДанныеСертификата); + Содержание.Вставить("КорневойСертификат", ДанныеКорневогоСертификата); + + ДанныеЗаявления.СодержаниеЗаявления = Новый ХранилищеЗначения(Содержание); + + Если ПервоначальноеСостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен + ИЛИ ПервоначальноеСостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено Тогда + ДанныеЗаявления.СостояниеЗаявления = ПервоначальноеСостояниеЗаявления; + Иначе + ДанныеЗаявления.СостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена; + КонецЕсли; + ДанныеЗаявления.Записать(); + + Если ЗначениеЗаполнено(ДанныеЗаявления.СертификатОснование) Тогда + НовыйТекстНапоминания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Сертификат перевыпущен: ""%1"" -> ""%2""'", "ru"), + ДанныеЗаявления.СертификатОснование, + Объект.Наименование); + + ИзменитьТекстНапоминанийПользователя(ДанныеЗаявления.СертификатОснование, + "АвтоматическоеНапоминаниеОПродленииСертификата", + НовыйТекстНапоминания); + КонецЕсли; + + Объект.Записать(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Возврат Истина; + +КонецФункции + +#Область РегламентноеЗадание + +// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий +Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт + + Настройка = Настройки.Добавить(); + Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСостоянияЗаявленияНаВыпускСертификата; + Настройка.Параметризуется = Истина; + Настройка.РаботаетСВнешнимиРесурсами = Истина; + +КонецПроцедуры + +Процедура ОбновлениеСостоянияЗаявленияРегламентноеЗадание(Сертификат) Экспорт + + Если ЗначениеЗаполнено(Сертификат) Тогда + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрования.ПометкаУдаления, + | ЗаявленияНаВыпускСертификата.СостояниеЗаявления, + | ЗаявленияНаВыпускСертификата.ДатаОтправки, + | ЗаявленияНаВыпускСертификата.ИдентификаторДокументооборота + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка = ЗаявленияНаВыпускСертификата.Сертификат + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Сертификат); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не найдено заявление на выпуск сертификата %1'"), Сертификат); + КонецЕсли; + + ДанныеЗаявления = РезультатЗапроса.Выбрать(); + ДанныеЗаявления.Следующий(); + + ПеречислениеСостоянияЗаявления = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + "Перечисление.СостоянияЗаявленияНаВыпускСертификата"); + + Если ДанныеЗаявления.СостояниеЗаявления = ПеречислениеСостоянияЗаявления.Отправлено + И НЕ ДанныеЗаявления.ПометкаУдаления + И ДанныеЗаявления.ДатаОтправки + 2 * 30 * 24 * 60 * 60 > ТекущаяДатаСеанса() Тогда + + РезультатОтветаСервера = ОбновитьСостояниеЗаявления(Сертификат); + + Если РезультатОтветаСервера <> Неопределено Тогда + ОтключитьОтслеживаниеИзмененияСостоянияЗаявления( + ДанныеЗаявления.ИдентификаторДокументооборота); + КонецЕсли; + + Иначе + + ОтключитьОтслеживаниеИзмененияСостоянияЗаявления( + ДанныеЗаявления.ИдентификаторДокументооборота); + + КонецЕсли; + Иначе + ВызватьИсключение НСтр("ru = 'Не заполнен сертификат'"); + КонецЕсли; + +КонецПроцедуры + +Процедура ОтключитьОтслеживаниеИзмененияСостоянияЗаявления(ИдентификаторДокументооборота) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ЗаданияПоЗаявлению = ЗаданияПоЗаявлению(ИдентификаторДокументооборота); + Для каждого Задание Из ЗаданияПоЗаявлению Цикл + РегламентныеЗаданияСервер.УдалитьЗадание(Задание.УникальныйИдентификатор); + КонецЦикла; + +КонецПроцедуры + +Процедура ВключитьОтслеживаниеИзмененияСостоянияЗаявления(Сертификат, ИдентификаторДокументооборота) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + // Повторный запуск задания по одному заявлению вызывает ошибку. + ЗаданияПоЗаявлению = ЗаданияПоЗаявлению(ИдентификаторДокументооборота); + Если ЗаданияПоЗаявлению.Количество() > 0 Тогда + Возврат; + КонецЕсли; + + // Запускаем отслеживание изменения состояния + Расписание = Новый РасписаниеРегламентногоЗадания; + Расписание.ПериодПовтораВТечениеДня = 600; + Расписание.ПериодПовтораДней = 1; + + Параметры = Новый Массив; + Параметры.Добавить(Сертификат); + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ОбновлениеСостоянияЗаявленияНаВыпускСертификата); + ПараметрыЗадания.Вставить("Ключ", ИдентификаторДокументооборота); + ПараметрыЗадания.Вставить("Параметры", Параметры); + ПараметрыЗадания.Вставить("Расписание", Расписание); + ПараметрыЗадания.Вставить("Использование", Истина); + ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 10); + ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3); + ПараметрыЗадания.Вставить("Наименование", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Отслеживание заявления на выпуск сертификата ""%1""'"), Сертификат)); + + РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); + +КонецПроцедуры + +Функция ЗаданияПоЗаявлению(ИдентификаторДокументооборота) + + ДополнительныеПараметры = Новый Структура(); + ДополнительныеПараметры.Вставить("Ключ", ИдентификаторДокументооборота); + ДополнительныеПараметры.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ОбновлениеСостоянияЗаявленияНаВыпускСертификата); + + Возврат РегламентныеЗаданияСервер.НайтиЗадания(ДополнительныеПараметры); + +КонецФункции + +#КонецОбласти + +Функция КоличествоЗаявленийВРаботе() Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ПОМЕСТИТЬ СертификатыПользователя + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователь = &Пользователь + | И НЕ СертификатыКлючейЭлектроннойПодписиИШифрования.ПометкаУдаления + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка + |ИЗ + | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК + | СертификатыКлючейЭлектроннойПодписиИШифрования + | ПО СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка + |ГДЕ + | СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь = &Пользователь + | И НЕ СертификатыКлючейЭлектроннойПодписиИШифрования.ПометкаУдаления + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СертификатыПользователя.Ссылка) КАК Количество + |ИЗ + | РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СертификатыПользователя КАК СертификатыПользователя + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыПользователя.Ссылка + |ГДЕ + | ЗаявленияНаВыпускСертификата.СостояниеЗаявления НЕ В (&СостоянияЗаявления)"; + + СостоянияЗаявления = Новый Массив; + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено); + СостоянияЗаявления.Добавить(Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено); + Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); + Запрос.УстановитьПараметр("СостоянияЗаявления", СостоянияЗаявления); + + Возврат Запрос.Выполнить().Выгрузить()[0].Количество; + +КонецФункции + +Функция ЗначениеУзлаXML(ДокументDOM, НазваниеУзла, ЗначениеПоУмолчанию = "") + + УзелDOM = ДокументDOM.ПолучитьЭлементыПоИмени(НазваниеУзла); + + ПодходящийЭлементDOM = Неопределено; + + Если УзелDOM.Количество() > 0 Тогда + ПодходящийЭлементDOM = УзелDOM[0]; + КонецЕсли; + + Если ПодходящийЭлементDOM = Неопределено Тогда + Возврат ЗначениеПоУмолчанию; + + ИначеЕсли НазваниеУзла = "Отпечаток" Тогда + Возврат НРег(ПодходящийЭлементDOM.ТекстовоеСодержимое); + Иначе + Возврат ПодходящийЭлементDOM.ТекстовоеСодержимое; + КонецЕсли; + +КонецФункции + +Процедура ИзменитьТекстНапоминанийПользователя(Сертификат, Идентификатор, НовыйТекстНапоминания) + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + МодульНапоминанияПользователя = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователя"); + Если Не МодульНапоминанияПользователя.ИспользуютсяНапоминанияПользователя() Тогда + Возврат; + КонецЕсли; + + МодульНапоминанияПользователяСлужебный = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователяСлужебный"); + МодульНапоминанияПользователяСлужебный.ИзменитьТекстНапоминанийПоПредмету(Сертификат, Идентификатор, НовыйТекстНапоминания); + +КонецПроцедуры + +// Обработать данные для перехода на новую версию. +// +// Параметры: +// СертификатОбъект - СправочникОбъект.СертификатыКлючейЭлектроннойПодписиИШифрования. +// +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(СертификатОбъект) Экспорт + + СодержаниеЗаявления = СертификатОбъект.УдалитьСодержаниеЗаявления.Получить(); + ДатаПолученияСертификата = '39991231235959'; + Если ТипЗнч(СодержаниеЗаявления) = Тип("Структура") Тогда + + СодержаниеЗаявления.Свойство("Сотрудник", СертификатОбъект.ФизическоеЛицо); + + Если СодержаниеЗаявления.Свойство("ДатаОбновленияСостояния") Тогда + Если (СертификатОбъект.УдалитьСостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Исполнено + Или СертификатОбъект.УдалитьСостояниеЗаявления = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоРаспискаНеОтправлена + Или СертификатОбъект.УдалитьСостояниеЗаявления + = Перечисления.СостоянияЗаявленияНаВыпускСертификата.ИсполненоСертификатНеУстановлен) Тогда + + ДатаПолученияСертификата = СодержаниеЗаявления.ДатаОбновленияСостояния; + + ИначеЕсли СертификатОбъект.УдалитьСостояниеЗаявления + = Перечисления.СостоянияЗаявленияНаВыпускСертификата.Отклонено Тогда + + ДатаПолученияСертификата = Дата(1, 1, 1); + + КонецЕсли; + КонецЕсли; + + НаборЗаписейЗаявления = РегистрыСведений.ЗаявленияНаВыпускСертификата.СоздатьНаборЗаписей(); + НаборЗаписейЗаявления.Отбор.Сертификат.Установить(СертификатОбъект.Ссылка); + ЗаписьНабораЗаявления = НаборЗаписейЗаявления.Добавить(); + ЗаписьНабораЗаявления.Сертификат = СертификатОбъект.Ссылка; + ЗаписьНабораЗаявления.СодержаниеЗаявления = СертификатОбъект.УдалитьСодержаниеЗаявления; + ЗаписьНабораЗаявления.СостояниеЗаявления = СертификатОбъект.УдалитьСостояниеЗаявления; + СодержаниеЗаявления.Свойство("ЭтоФизическоеЛицо", ЗаписьНабораЗаявления.ДляФизическогоЛица); + ЗаполнитьЗначенияСвойств(ЗаписьНабораЗаявления, СодержаниеЗаявления, , ?( + СодержаниеЗаявления.Свойство("Сертификат"), "Сертификат", Неопределено)); + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписейЗаявления, Истина); + + КонецЕсли; + СертификатОбъект.ДатаПолученияСертификата = ДатаПолученияСертификата; + СертификатОбъект.УдалитьСостояниеЗаявления = Неопределено; + +КонецПроцедуры + + #КонецОбласти #КонецЕсли \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/ИнформацияЗаявления/Template.mxlx b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/ИнформацияЗаявления/Template.mxlx new file mode 100644 index 000000000..7558f3390 --- /dev/null +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/ИнформацияЗаявления/Template.mxlx @@ -0,0 +1,1921 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 11 + + + 0 + + + + 1 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + 2 + + + ru + [ЗаголовокШапки] + + + + + + + + 1 + + + + 3 + + + ru + Организация (O) + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [O] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 2 + + + + 3 + + + ru + Подразделение (OU) + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [OU] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 3 + + + + 3 + + + ru + Должность (T) + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [T] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 4 + + + + 3 + + + ru + ОГРН + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [OGRN] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 5 + + + + 3 + + + ru + ИНН ЮЛ (INNLE) + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [INNLE] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 6 + + 7 + + + 3 + + + ru + ОГРНИП + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [OGRNIP] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 7 + + + + 8 + + + ru + Фамилия (SN) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [SN] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 8 + + + + 8 + + + ru + Имя Отчество (G) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [G] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 9 + + + + 8 + + + ru + Удостоверение личности + + + + + + + 12 + + + + + 12 + + + + + 13 + + + ru + [УдостоверениеЛичности] + + + + + + + 13 + + + + + + 13 + + + + + + 13 + + + + + + 13 + + + + + + 13 + + + + + + 13 + + + + + + + 10 + + + + 3 + + + ru + ИНН + + + + + + + 4 + + + + + 4 + + + + + 5 + + + ru + [INN] + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 6 + + + + + + 11 + + + + 8 + + + ru + СНИЛС + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [SNILS] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 12 + + + + 8 + + + ru + E-Mail (E) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [E] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 13 + + + + 8 + + + ru + Страна (C) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [C] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 14 + + + + 8 + + + ru + Регион (S) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [S] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 15 + + + + 8 + + + ru + Населенный пункт (L) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [L] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 16 + + + + 8 + + + ru + Адрес местонахождения (STREET) + + + + + + + 9 + + + + + 9 + + + + + 10 + + + ru + [Street] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 17 + + + + 8 + + + ru + Удостоверяющий центр + + + + + + + 9 + + + + + 9 + + + + + 14 + + + ru + [ПолноеНаименованиеУЦ], ИНН: [ИНН_УЦ] + + + + + + + 9 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + 9 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + 9 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + 9 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + 9 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + 11 + + + ru + [ПолноеНаименованиеУЦ], ИНН:[ИНН_УЦ] + + + + + + + + 18 + + + + 8 + + + ru + Идентификатор абонента + + + + + + + 9 + + + + + 9 + + + + + 14 + + + ru + [ИдентификаторАбонента] + + + + + + + 9 + + + ru + [ИдентификаторАбонента] + + + + + + + 9 + + + ru + [ИдентификаторАбонента] + + + + + + + 9 + + + ru + [ИдентификаторАбонента] + + + + + + + 9 + + + ru + [ИдентификаторАбонента] + + + + + + + 9 + + + ru + [ИдентификаторАбонента] + + + + + + + 11 + + + ru + [ИдентификаторАбонента] + + + + + + + + 19 + + + + 8 + + + ru + ИКС запроса на сертификат + + + + + + + 9 + + + + + 9 + + + + + 15 + + + ru + [ИдентификаторКлючаСубъекта] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + + 20 + + + + 8 + + + ru + Ключ проверки ЭП + + + + + + + 9 + + + + + 9 + + + + + 15 + + + ru + [ОткрытаяЧастьКлючаЭП] + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 11 + + + + + true + 21 + 21 + + 0 + 0 + 9 + + + 1 + 0 + 2 + + + 1 + 3 + 6 + + + 2 + 0 + 2 + + + 2 + 3 + 6 + + + 3 + 0 + 2 + + + 3 + 3 + 6 + + + 4 + 0 + 2 + + + 4 + 3 + 6 + + + 5 + 0 + 2 + + + 5 + 3 + 6 + + + 6 + 0 + 2 + + + 6 + 3 + 6 + + + 7 + 0 + 2 + + + 7 + 3 + 6 + + + 8 + 0 + 2 + + + 8 + 3 + 6 + + + 9 + 0 + 2 + + + 9 + 3 + 6 + + + 10 + 0 + 2 + + + 10 + 3 + 6 + + + 11 + 0 + 2 + + + 11 + 3 + 6 + + + 12 + 0 + 2 + + + 12 + 3 + 6 + + + 13 + 0 + 2 + + + 13 + 3 + 6 + + + 14 + 0 + 2 + + + 14 + 3 + 6 + + + 15 + 0 + 2 + + + 15 + 3 + 6 + + + 16 + 0 + 2 + + + 16 + 3 + 6 + + + 17 + 0 + 2 + + + 17 + 3 + 6 + + + 18 + 0 + 2 + + + 18 + 3 + 6 + + + 19 + 0 + 2 + + + 19 + 3 + 6 + + + 20 + 0 + 2 + + + 20 + 3 + 6 + + + 1 + 0 + 1 + + + 2 + 0 + 1 + + + L + + Rows + 15 + 15 + -1 + -1 + + + + OGRNIP + + Rows + 6 + 6 + -1 + -1 + + + + Street + + Rows + 16 + 16 + -1 + -1 + + + + Организация + + Rows + 1 + 5 + -1 + -1 + + + + Шапка + + Rows + 0 + 20 + -1 + -1 + + + + Solid + + + + + + 0 + 0 + 72 + Left + Top + Wrap + Template + + + 0 + Template + + + 1 + 0 + 72 + Left + Top + Wrap + + + 1 + 0 + 72 + + + 1 + 0 + 72 + Left + Top + Wrap + Template + + + 1 + 0 + 51 + + + 0 + + + 1 + 0 + 72 + Left + Top + Wrap + + + 1 + 0 + 72 + + + 1 + 0 + 72 + Left + Top + Wrap + Template + + + 1 + 0 + 51 + + + 1 + 0 + + + 1 + 0 + Wrap + Template + + + 1 + 0 + 72 + Left + Center + Wrap + Template + + + 2 + 0 + 72 + Left + Center + Wrap + Template + + \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/Сертификат/Template.mxlx b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/Сертификат/Template.mxlx new file mode 100644 index 000000000..a857333a5 --- /dev/null +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/Templates/Сертификат/Template.mxlx @@ -0,0 +1,1161 @@ + + + + ru + ru + + ru + Русский + Русский + + + + 2 + + 0 + + 1 + + + + 1 + + 2 + + + + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + 5 + + 0 + + 3 + + + + 1 + + 4 + + + + 2 + + 5 + + + + 3 + + 6 + + + + 4 + + 7 + + + + + 0 + + + + 8 + + + ru + Квалифицированный сертификат + + + + + + + + 1 + + + + 0 + + + + + 0 + + + + + + 2 + + + + 0 + + + + + 0 + + + + + + 3 + + + + 9 + + + ru + Номер квалифицированного сертификата: + + + + + + + 10 + СерийныйНомер + + + + + + 4 + + + + 9 + + + ru + Действие квалифицированного сертификата: + + + + + + + 10 + ПериодДействия + + + + + + 5 + + 11 + + + 12 + + + ru + Сведения о владельце квалифицированного сертификата + + + + + + + + 6 + + + + 9 + + + ru + Наименование юридического лица: + + + + + + + 10 + Наименование + + + + + + 7 + + + + 9 + + + ru + Основной государственный регистрационный номер: + + + + + + + 10 + ОГРН + + + + + + 8 + + + + 9 + + + ru + Идентификационный номер налогоплательщика: + + + + + + + 10 + ИННЮЛ + + + + + + 9 + + + + 9 + + + ru + Место нахождения юридического лица: + + + + + + + 10 + Адрес + + + + + + 10 + + 13 + + + 14 + + + ru + Уполномоченный представитель юридического лица + + + + + + + 15 + + + + + + 11 + + + + 9 + + + ru + Должность: + + + + + + + 10 + Должность + + + + + + 12 + + + + 9 + + + ru + Фамилия, имя, отчество: + + + + + + + 10 + ФИО + + + + + + 13 + + + + 9 + + + ru + Идентификационный номер налогоплательщика: + + + + + + + 10 + ИНН + + + + + + 14 + + + + 9 + + + ru + Страховой номер индивидуального лицевого счета: + + + + + + + 10 + СНИЛС + + + + + + 15 + + + + 9 + + + ru + Основной государственный регистрационный номер индивидуального +предпринимателя: + + + + + + + + 10 + ОГРНИП + + + + + + 16 + + + + 16 + + + ru + Тип идентификации при выдаче сертификата: + + + + + + + + 10 + ТипИдентификации + + + + + + 17 + + 11 + + + 12 + + + ru + Сведения об издателе квалифицированного сертификата + + + + + + + + 18 + + + + 9 + + + ru + Наименование удостоверяющего центра: + + + + + + + 10 + НаименованиеУЦ + + + + + + 19 + + + + 9 + + + ru + Место нахождения удостоверяющего центра: + + + + + + + 10 + АдресУЦ + + + + + + 20 + + + + 9 + + + ru + Наименование средства электронной подписи: + + + + + + + 10 + СКЗИ + + + + + + 21 + + + + 9 + + + ru + Реквизиты заключения о подтверждении соответствия средства электронной подписи: + + + + + + + 10 + Заключение + + + + + + 22 + + + + 9 + + + ru + Наименование средства удостоверяющего центра: + + + + + + + 10 + СКЗИ_УЦ + + + + + + 23 + + + + 9 + + + ru + Реквизиты заключения о подтверждении соответствия средства удостоверяющего центра: + + + + + + + 10 + ЗаключениеУЦ + + + + + + 24 + + + + 9 + + + ru + Класс средств удостоверяющего центра: + + + + + + + 10 + КлассУЦ + + + + + + 25 + + 11 + + + 12 + + + ru + Сведения о ключе проверки электронной подписи + + + + + + + + 26 + + + + 9 + + + ru + Используемый алгоритм: + + + + + + + 10 + Алгоритм + + + + + + 27 + + + + 9 + + + ru + Класс средства электронной подписи: + + + + + + + 10 + Класс + + + + + + 28 + + + + 9 + + + ru + Область использования ключа: + + + + + + + 10 + ОбластьИспользования + + + + + + 29 + + + + 9 + + + ru + Значение ключа: + + + + + + + 10 + ОткрытыйКлюч + + + + + + 30 + + 11 + + + 12 + + + ru + Электронная подпись под квалифицированным сертификатом + + + + + + + + 31 + + + + 9 + + + ru + Используемый алгоритм: + + + + + + + 10 + Алгоритм + + + + + + 32 + + + + 9 + + + ru + Значение электронной подписи: + + + + + + + 10 + Подпись + + + + + + 33 + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + + + 17 + + + + + 17 + + + + + 17 + + + + + 17 + + + + + 18 + + + + + + 34 + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + + + 17 + + + + + 17 + + + + + 17 + + + + + 17 + + + + + 18 + + + + + + 35 + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + + + 17 + + + ru + Подпись владельца сертификата + + + + + + + 19 + + + + + 17 + + + ru + / + + + + + + + 20 + Владелец + + + + + 18 + + + ru + / + + + + + + + + 36 + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + + + 21 + + + + + + 22 + + + + + 17 + + + + + 17 + + + + + 17 + + + + + + 37 + + 4d50478e-ad6a-4d8e-a71e-48a59cebe679 + + + 21 + + + + + + 22 + + + ru + М.П. + + + + + + + 17 + + + + + 17 + + + + + 17 + + + + + + 38 + + true + + + + 39 + + 23 + true + + + true + 40 + 40 + + 0 + 0 + 1 + + + 5 + 0 + 1 + + + 10 + 0 + 1 + + + 17 + 0 + 1 + + + 25 + 0 + 1 + + + 30 + 0 + 1 + + + ОГРНИП + + Rows + 15 + 15 + -1 + -1 + + + + Подвал + + Rows + 17 + 37 + -1 + -1 + + + + СведенияФЛ + + Rows + 12 + 14 + -1 + -1 + + + + СведенияЮЛ + + Rows + 6 + 9 + -1 + -1 + + + + ТипИдентификации + + Rows + 16 + 16 + -1 + -1 + + + + УполномоченноеЛицо + + Rows + 10 + 11 + -1 + -1 + + + + Шапка + + Rows + 0 + 5 + -1 + -1 + + + + Solid + + + + + + + 363 + + + 454 + + + 238 + + + 206 + + + 14 + + + 320 + + + 38 + + + 0 + Center + + + 1 + 0 + #C8C8C8 + Top + Wrap + + + 2 + 0 + #C8C8C8 + Top + Wrap + Parameter + + + 160 + + + 3 + 0 + #C8C8C8 + Center + Center + Wrap + + + 168 + + + 3 + 0 + 200 + #C8C8C8 + 363 + Center + Center + Wrap + + + 200 + 454 + + + 1 + 0 + #C8C8C8 + 363 + Top + Wrap + + + 2 + + + 2 + 14 + + + 2 + 0 + + + 2 + 0 + Center + Parameter + + + 2 + 363 + Right + + + 2 + 241 + Center + + + 0 + + \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.mdo b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.mdo index 6bee5069c..aa90a817f 100644 --- a/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.mdo +++ b/SSL/src/DataProcessors/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата/ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.mdo @@ -61,6 +61,15 @@ PersonalComputer MobileDevice + + Информация + + ru + Информация + + PersonalComputer + MobileDevice + ИнформацияОДоступностиВыпуска @@ -101,4 +110,18 @@ TextDocument + + ИнформацияЗаявления + + ru + Информация заявления + + + + Сертификат + + ru + Сертификат + + diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовXDTO/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовXDTO/ObjectModule.bsl index b7f123282..6d2fd8682 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовXDTO/ObjectModule.bsl +++ b/SSL/src/DataProcessors/КонвертацияОбъектовXDTO/ObjectModule.bsl @@ -539,6 +539,9 @@ ОбменДаннымиXDTOСервер.ОткрытьФайлЗагрузки(КомпонентыОбмена, ИмяФайлаОбмена); + // Расширения формата может инициализировать только после того, как узнаем версию формата из файла сообщения + РасширенияФорматаВКомпонентыОбмена(КомпонентыОбмена); + Отказ = Ложь; ПослеОткрытияФайлаЗагрузки(Отказ); @@ -620,6 +623,9 @@ ОбменДаннымиXDTOСервер.ОткрытьФайлЗагрузки(КомпонентыОбмена, ИмяФайлаОбмена); + // Расширения формата может инициализировать только после того, как узнаем версию формата из файла сообщения + РасширенияФорматаВКомпонентыОбмена(КомпонентыОбмена); + Отказ = Ложь; ПослеОткрытияФайлаЗагрузки(Отказ, ИнициализироватьТаблицыПравил); diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl index a7e2c46e4..5d00670dc 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl @@ -4432,27 +4432,40 @@ СтрокаСообщенияОбОшибке = СтрокаСообщенияОбОшибке(); ЗаписьЖурналаРегистрацииОбменДанными(СтрокаСообщенияОбОшибке, УровеньЖР); - ПараметрыЗаписи = Новый Структура("ПроблемныйОбъект, ТипПроблемы"); - ПараметрыЗаписи.Вставить("УзелИнформационнойБазы", УзелДляОбмена); - ПараметрыЗаписи.Вставить("Причина", СтрокаСообщенияОбОшибке); - - Если ЗначениеЗаполнено(СсылкаДляПереходаПриВозникновенииОшибки) Тогда - - ПараметрыЗаписи.ПроблемныйОбъект = СсылкаДляПереходаПриВозникновенииОшибки; + ЗаписатьВРезультатыОбменаДанными = Истина; + Если ОбщегоНазначения.РазделениеВключено() + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда + + МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); + ЗаписатьВРезультатыОбменаДанными = МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(); КонецЕсли; - Если РежимОбмена = "Выгрузка" Тогда + Если ЗаписатьВРезультатыОбменаДанными Тогда + + ПараметрыЗаписи = Новый Структура("ПроблемныйОбъект, ТипПроблемы"); + ПараметрыЗаписи.Вставить("УзелИнформационнойБазы", УзелДляОбмена); + ПараметрыЗаписи.Вставить("Причина", СтрокаСообщенияОбОшибке); - ПараметрыЗаписи.ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных; + Если ЗначениеЗаполнено(СсылкаДляПереходаПриВозникновенииОшибки) Тогда + + ПараметрыЗаписи.ПроблемныйОбъект = СсылкаДляПереходаПриВозникновенииОшибки; + + КонецЕсли; - ИначеЕсли РежимОбмена = "Загрузка" Тогда + Если РежимОбмена = "Выгрузка" Тогда + + ПараметрыЗаписи.ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных; + + ИначеЕсли РежимОбмена = "Загрузка" Тогда + + ПараметрыЗаписи.ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных; + + КонецЕсли; - ПараметрыЗаписи.ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных; - - КонецЕсли; + РегистрыСведений.РезультатыОбменаДанными.ДобавитьЗаписьОРезультатахОбмена(ПараметрыЗаписи); - РегистрыСведений.РезультатыОбменаДанными.ДобавитьЗаписьОРезультатахОбмена(ПараметрыЗаписи); + КонецЕсли; Возврат СтрокаСообщенияОбОшибке(); diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl index 7d549e9e8..da8195ea5 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl @@ -588,13 +588,14 @@ Объект.ИмяПредопределенныхДанных = Данные.ИмяПредопределенныхДанных; Объект.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); Объект.ДополнительныеСвойства.Вставить("ЗагрузкаПриоритетныхДанных"); - ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект, Ложь); ИначеЕсли Объект.ИмяПредопределенныхДанных <> Данные.ИмяПредопределенныхДанных Тогда Объект.ИмяПредопределенныхДанных = Данные.ИмяПредопределенныхДанных; Объект.ДополнительныеСвойства.Вставить("ПропуститьЗаписьВерсииОбъекта"); Объект.ДополнительныеСвойства.Вставить("ЗагрузкаПриоритетныхДанных"); - ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект, Ложь); + Иначе // Если предопределенный элемент существует предварительная загрузка не требуется. КонецЕсли; diff --git a/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Form.form b/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Form.form index a25399033..a2aeee3f6 100644 --- a/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Form.form +++ b/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Form.form @@ -343,6 +343,19 @@ true + + СкобкиОперандов + 16 + + Boolean + + + true + + + true + + ЗавершитьРедактирование @@ -436,6 +449,10 @@ <types>Boolean</types> </valueType> </parameters> + <parameters> + <name>СкобкиОперандов</name> + <valueType/> + </parameters> <commandInterface> <navigationPanel/> <commandBar/> diff --git a/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Module.bsl b/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Module.bsl index cd20f8e52..e129f91f0 100644 --- a/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Module.bsl +++ b/SSL/src/DataProcessors/КонструкторФормул/Forms/РедактированиеФормулы/Module.bsl @@ -12,6 +12,7 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДляЗапроса = Параметры.ДляЗапроса; + СкобкиОперандов = Параметры.СкобкиОперандов; ПараметрыДобавленияСпискаПолей = КонструкторФормулСлужебный.ПараметрыДобавленияСпискаПолей(); ПараметрыДобавленияСпискаПолей.ИмяСписка = ИмяСпискаОперандов(); @@ -19,6 +20,7 @@ ПараметрыДобавленияСпискаПолей.МестоРазмещенияСписка = Элементы.ГруппаДоступныеПоля; ПараметрыДобавленияСпискаПолей.ПодсказкаВводаСтрокиПоиска = НСтр("ru = 'Найти операнд...'"); ПараметрыДобавленияСпискаПолей.ИспользоватьИдентификаторыДляФормул = Не ДляЗапроса; + ПараметрыДобавленияСпискаПолей.СкобкиПредставлений = СкобкиОперандов; ПараметрыДобавленияСпискаПолей.ОбработчикиСписка.Вставить("Выбор", "Подключаемый_СписокПолейВыбор"); КонструкторФормулСлужебный.ДобавитьСписокПолейНаФорму(ЭтотОбъект, ПараметрыДобавленияСпискаПолей); @@ -276,34 +278,7 @@ &НаКлиенте Функция ВыражениеДляВставки(Оператор) - Результат = Оператор.Заголовок + "("; - - Если Не ЗначениеЗаполнено(Оператор.Родитель) Тогда - Возврат ""; - КонецЕсли; - - Если Оператор.Родитель.Имя = "Разделители" Тогда - Результат = "+ """ + Оператор.Заголовок + """ +"; - Если Оператор.Имя = "[ ]" Тогда - Результат = "+ "" "" +"; - КонецЕсли; - КонецЕсли; - - Если Оператор.Родитель.Имя = "ЛогическиеОператорыИКонстанты" - Или Оператор.Родитель.Имя = "Операторы" - Или Оператор.Родитель.Имя = "ОперацииНадСтроками" - Или Оператор.Родитель.Имя = "ЛогическиеОперации" - Или Оператор.Родитель.Имя = "ОперацииСравнения" И Оператор.Имя <> "В" Тогда - Результат = Оператор.Заголовок; - КонецЕсли; - - Если Оператор.Родитель.Имя = "ПрочиеФункции" Тогда - Если Оператор.Имя = "[?]" Или Оператор.Имя = "Формат" Тогда - Результат = Оператор.Заголовок + "(,,)"; - КонецЕсли; - КонецЕсли; - - Возврат Результат; + Возврат КонструкторФормулКлиент.ВыражениеДляВставки(Оператор); КонецФункции diff --git a/SSL/src/DataProcessors/НастройкаСтандартногоИнтерфейсаOData/ManagerModule.bsl b/SSL/src/DataProcessors/НастройкаСтандартногоИнтерфейсаOData/ManagerModule.bsl index 6176d3b41..c0c84d424 100644 --- a/SSL/src/DataProcessors/НастройкаСтандартногоИнтерфейсаOData/ManagerModule.bsl +++ b/SSL/src/DataProcessors/НастройкаСтандартногоИнтерфейсаOData/ManagerModule.bsl @@ -148,7 +148,7 @@ ПользовательСтандартногоИнтерфейсаOData.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); ЗаписьЖурналаРегистрации( - ИмяСобытияЖурналаРегистрации(НСтр("ru = 'ЗаписьПользователя'", ОбщегоНазначения.КодОсновногоЯзыка())), + НСтр("ru = 'Настройка стандартного интерфейса OData.Запись пользователя'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Пользователи, , @@ -177,7 +177,7 @@ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации( - ИмяСобытияЖурналаРегистрации(НСтр("ru = 'ЗаписьПользователя'", ОбщегоНазначения.КодОсновногоЯзыка())), + НСтр("ru = 'Настройка стандартного интерфейса OData.Запись пользователя'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.Пользователи, , @@ -632,12 +632,6 @@ КонецФункции -Функция ИмяСобытияЖурналаРегистрации(Знач Суффикс) - - Возврат НСтр("ru = 'НастройкаСтандартногоИнтерфейсаOData.'") + СокрЛП(Суффикс); - -КонецФункции - Процедура ПроверитьВозможностьСозданияПользователяДляВызововСтандартногоИнтерфейсаOData() УстановитьПривилегированныйРежим(Истина); diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/ConditionalAppearance.dcssca deleted file mode 100644 index 72b10500e..000000000 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/ConditionalAppearance.dcssca +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ConditionalAppearance xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"> - <item> - <selection> - <item> - <field>ЗаполнятьПустые</field> - </item> - </selection> - <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">ЗаполнятьПустые</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">true</right> - </item> - </filter> - <appearance> - <dcscor:item xsi:type="SettingsParameterValue"> - <dcscor:parameter>Шрифт</dcscor:parameter> - <dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" bold="true" italic="false" underline="false" strikeout="false" kind="WindowsFont"/> - </dcscor:item> - </appearance> - </item> -</ConditionalAppearance> diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Form.form b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Form.form index f8c7d9409..47ce07787 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Form.form +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Form.form @@ -219,28 +219,119 @@ <textSize>Normal</textSize> </extInfo> </items> - <items xsi:type="form:FormField"> - <name>ПроцедураПроверки</name> - <id>33</id> - <title> - <key>ru</key> - <value>Проверка</value> - + + ГруппаПроцедураПроверкиИПредупреждение + 805 + + ПроцедураПроверки + 33 + + <key>ru</key> + <value>Проверка</value> + + true + true + + true + + + Объект.ОбработчикиОбновления[0].ПроцедураПроверки + + + OnChange + ПроцедураПроверкиПриИзменении + + + ПроцедураПроверкиРасширеннаяПодсказка + 35 + Label + true + true + + Left + + + + ПроцедураПроверкиКонтекстноеМеню + 34 + true + + InputField + Enter + true + Left + true + + + StartChoice + ПроцедураПроверкиНачалоВыбора + + true + true + true + + StdPicture.MoveLeft + + true + true + true + Normal + + + + ДекорацияПредупреждение + 807 + + <key>ru</key> + <value>Декорация предупреждение</value> + + true + true + + true + + + ДекорацияПредупреждениеРасширеннаяПодсказка + 809 + Label + true + true + + Left + + + + ДекорацияПредупреждениеКонтекстноеМеню + 808 + true + + true + true + Center + + + Click + ДекорацияПредупреждениеНажатие + + + CommonPicture.Предупреждение + + true + AsFileRef + + true true true - - Объект.ОбработчикиОбновления[0].ПроцедураПроверки - - - OnChange - ПроцедураПроверкиПриИзменении - + + <key>ru</key> + <value>Процедура проверки и предупреждение</value> + - ПроцедураПроверкиРасширеннаяПодсказка - 35 + ГруппаПроцедураПроверкиИПредупреждениеРасширеннаяПодсказка + 806 Label true true @@ -248,31 +339,14 @@ Left - - ПроцедураПроверкиКонтекстноеМеню - 34 - true - - InputField - Enter - true - Left - true - - - StartChoice - ПроцедураПроверкиНачалоВыбора - - true - true - true - - StdPicture.MoveLeft - - true - true - true - Normal + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto @@ -3788,32 +3862,6 @@ UserCmds Auto - - ПриоритетПоУмолчанию - 794 - true - true - - true - - - ПриоритетПоУмолчаниюРасширеннаяПодсказка - 795 - Label - true - true - - Left - - - Form.Command.ПриоритетПоУмолчанию - Normal - Auto - true - true - UserCmds - Auto - Left @@ -5052,6 +5100,33 @@ + + ИзмененаПроцедураПроверки + 20 + + Boolean + + + true + + + true + + + + ТекущееЗначениеПроцедурыПроверки + 21 + + String + + + + true + + + true + + ЗаписатьИЗакрыть @@ -5294,29 +5369,6 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> - <formCommands> - <name>ПриоритетПоУмолчанию</name> - <title> - <key>ru</key> - <value>Порядок по умолчанию</value> - - 12 - - ru - Порядок по умолчанию может не совпадать с текущими требованиями. -Необходимо исправить его если требуется. - - - true - - - - ПриоритетПоУмолчанию - - - Auto - Auto - ДобавитьТипыРеквизитаВБлокируемыеОбъекты diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Help/ru.html b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Help/ru.html index 1735fcc11..c78b35528 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Help/ru.html +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Help/ru.html @@ -5,7 +5,7 @@ <p class="" style="margin-left: 20px; margin-top: 0px; margin-bottom: 5px"><a href="#70a6370b13ca43baa611bed9691c46111905ad4e005056a5c4e811ea42a1c6a7f84b"><b>Объекты</b></a></p> <p class="" style="margin-left: 20px; margin-top: 0px; margin-bottom: 5px"><a href="#70a6370b13ca43baa611bed9691c46111905ad4e005056a5c4e811ea42a1d20d21b6"><b>Конфликты</b></a></p> <a name="70a6370b13ca43baa611bed9691c46111905ad4e005056a5c4e811ea42a1c6a7f84a"><h3 style="margin-left: 0px"><b>Описание</b></h3></a> -<p style="margin-left: 20px">Указываются общие сведения об обработчике обнволения.<br>Флаг <b>Технический проект</b> позволяет добавить обработчик в список обработчиков технического проекта.<br>Список обработчиков техничекого проекта обладает следующими свойствами:</p> +<p style="margin-left: 20px">Указываются общие сведения об обработчике обновления.<br>Флаг <b>Технический проект</b> позволяет добавить обработчик в список обработчиков технического проекта.<br>Список обработчиков техничекого проекта обладает следующими свойствами:</p> <ul style="margin-left: 40px"><li>список хранится в неверсиониремом файле каталога <b>.setting</b> проекта git-репозитория</li><li>обработчики списка выделены условным оформлением в общем списке обработчиков</li><li>доступен быстрый отбор обработчиков списка</li></ul><a name="70a6370b13ca43baa611bed9691c46111905ad4e005056a5c4e811ea42a1c6a7f84b"><h3 style="margin-left: 0px"><b>Объекты</b></h3></a> <p style="margin-left: 20px">Указывается информация о читаемых, изменяемых объектах обработчика. <br>Дополнительно можно указать какие объекты необходимо блокировать пока обработчик не будет выполнен.<br>В контекстном меню табличных частей <b>Читаемый объект</b> и <b>Изменяемый объект</b> доступны вспомогательные команды для заполнения этих табличных частей.</p> <a name="70a6370b13ca43baa611bed9691c46111905ad4e005056a5c4e811ea42a1d20d21b6"><h3 style="margin-left: 0px"><b>Конфликты</b></h3></a> diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Module.bsl b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Module.bsl index f409dccab..32e744d8c 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Module.bsl +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Module.bsl @@ -49,6 +49,8 @@ СсылкаТекущегоОбработчика = Объект.ОбработчикиОбновления[0].Ссылка; ПроцедураОбработки = Объект.ОбработчикиОбновления[0].Процедура; + ТекущееЗначениеПроцедурыПроверки = Объект.ОбработчикиОбновления[0].ПроцедураПроверки; + ИзмененаПроцедураПроверки = Объект.ОбработчикиОбновления[0].ИзмененаПроцедураПроверки; Если НЕ ПустаяСтрока(ПроцедураОбработки) Тогда Заголовок = ПроцедураОбработки; АвтоЗаголовок = Ложь; @@ -100,6 +102,8 @@ ЗаполнитьОбщиеМодули(); + Элементы.ДекорацияПредупреждение.Видимость = ИзмененаПроцедураПроверки; + КонецПроцедуры &НаКлиенте @@ -161,7 +165,10 @@ &НаКлиенте Процедура ОсновнойОбъектМетаданныхОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) - СтандартнаяОбработка = ТипЗнч(ВыбранноеЗначение) = Тип("Строка"); + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Строка") Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + ПараметрыОбработчикаВыбора = ПараметрыОбработчикаВыбора(, ОсновнойОбъектМетаданных); ПараметрыПодключаемогоОбработчика = Новый Структура; @@ -219,9 +226,9 @@ &НаКлиенте Процедура ПроцедураПроверкиПриИзменении(Элемент) - Элементы.ПроцедураПроверки.ОтметкаНезаполненного = Не ЗначениеЗаполнено(Объект.ОбработчикиОбновления[0].ПроцедураПроверки); - Если НЕ ПустаяСтрока(Объект.ОбработчикиОбновления[0].ПроцедураПроверки) Тогда - ИмяОсновногоОбъектаМетаданных(Объект.ОбработчикиОбновления[0].ПроцедураПроверки, ЕдинственноеЧисло, МножественноеЧисло); + ОписаниеОповещения = Новый ОписаниеОповещения("ПроцедураПроверкиОкончаниеВводаТекстаПослеВопроса", ЭтотОбъект, Элемент.ТекстРедактирования); + Если Элемент.ТекстРедактирования <> СтандартнаяПроцедураПроверки() Тогда + ПоказатьВопрос(ОписаниеОповещения, ТекстПредупрежденияИзмененаПроцедураПроверки(Истина), РежимДиалогаВопрос.ДаНет); КонецЕсли; КонецПроцедуры @@ -239,9 +246,12 @@ Возврат; КонецЕсли; - Объект.ОбработчикиОбновления[0].ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; + Объект.ОбработчикиОбновления[0].ПроцедураПроверки = СтандартнаяПроцедураПроверки(); Элементы.ПроцедураПроверки.ОтметкаНезаполненного = Ложь; + ТекущееЗначениеПроцедурыПроверки = СтандартнаяПроцедураПроверки(); + Элементы.ДекорацияПредупреждение.Видимость = Ложь; + КонецПроцедуры &НаКлиенте @@ -311,7 +321,10 @@ &НаКлиенте Процедура ОбъектМетаданныхОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) - СтандартнаяОбработка = ТипЗнч(ВыбранноеЗначение) = Тип("Строка"); + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Строка") Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + ПараметрыОбработчикаВыбора = ПараметрыОбработчикаВыбора(Элемент.Родитель.Родитель.Имя); ПараметрыПодключаемогоОбработчика = Новый Структура; @@ -439,13 +452,6 @@ ЗаполнитьПорядокВыполнения("Любой"); КонецПроцедуры -&НаКлиенте -Процедура ПриоритетПоУмолчанию(Команда) - - УстановитьПорядокПоУмолчанию(); - -КонецПроцедуры - &НаКлиенте Процедура ДобавитьОбъектОбработчикаВЧитаемые(Команда) @@ -557,6 +563,18 @@ Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); + // + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПриоритетыВыполненияВыборПорядкаВыполнения.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПриоритетыВыполнения.Порядок"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; + ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПриоритетыВыполнения.ПорядокАвто"); + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет); КонецПроцедуры @@ -1279,98 +1297,6 @@ КонецФункции -&НаСервере -Процедура УстановитьПорядокПоУмолчанию() - - Если Объект.ПриоритетыВыполнения.Количество() = 0 Тогда - Возврат; - КонецЕсли; - - ВыборПорядка = Новый Соответствие; - ВыборПорядка.Вставить("До",НСтр("ru = 'Текущий'")); - ВыборПорядка.Вставить("После",НСтр("ru = 'Конфликтующий'")); - ВыборПорядка.Вставить("Любой",НСтр("ru = 'Любой'")); - - ИнициализироватьПриоритетыПоУмолчанию(); - Для Каждого Пара Из Объект.ПриоритетыВыполнения Цикл - НовыйПорядок = ПорядокПоУмолчанию(Пара.Процедура1, Пара.Процедура2); - Если НЕ Модифицированность И Пара.Порядок <> НовыйПорядок Тогда - Модифицированность = Истина; - КонецЕсли; - Пара.Порядок = НовыйПорядок; - Пара.ВыборПорядкаВыполнения = ВыборПорядка[НовыйПорядок]; - Пара.ЗаданПорядокВыполнения = ЗначениеЗаполнено(НовыйПорядок); - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Функция ПорядокПоУмолчанию(ИмяПроцедуры1, ИмяПроцедуры2) - - Результат = ""; - Порядок1 = ПорядокОбъектаПоУмолчанию(ИмяПроцедуры1); - Порядок2 = ПорядокОбъектаПоУмолчанию(ИмяПроцедуры2); - Если Порядок1 = Неопределено ИЛИ Порядок2 = Неопределено Тогда - Возврат Результат; - КонецЕсли; - - Результат = "Любой"; - Если Порядок1 < Порядок2 Тогда - Результат = "До"; - ИначеЕсли Порядок1 > Порядок2 Тогда - Результат = "После"; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -&НаСервере -Функция ПорядокОбъектаПоУмолчанию(ИмяПроцедуры) - - Если СтрЧислоВхождений(ИмяПроцедуры, ".") = 1 Тогда - Возврат Неопределено; - КонецЕсли; - - Имена = СтрРазделить(ИмяПроцедуры,"."); - ТипОбъекта = Имена[0]; - Если ТипОбъекта = "РегистрыСведений" Тогда - Имена.Удалить(Имена.ВГраница()); - Имена[0] = "РегистрСведений"; - ИмяОбъекта = СтрСоединить(Имена, "."); - МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта); - Если Строка(МетаданныеОбъекта.РежимЗаписи) = "Независимый" Тогда - ТипОбъекта = ТипОбъекта + "Независимые"; - КонецЕсли; - КонецЕсли; - - Возврат ПриоритетыПоУмолчанию[ТипОбъекта]; - -КонецФункции - -&НаСервере -Процедура ИнициализироватьПриоритетыПоУмолчанию() - - Приоритеты = Новый Соответствие; - Приоритеты.Вставить("Константы", 10); - Приоритеты.Вставить("Справочники", 20); - Приоритеты.Вставить("ПланыСчетов", 30); - Приоритеты.Вставить("ПланыВидовХарактеристик", 40); - Приоритеты.Вставить("ПланыВидовРасчета", 50); - Приоритеты.Вставить("Задачи", 60); - Приоритеты.Вставить("БизнесПроцессы", 70); - Приоритеты.Вставить("РегистрыСведенийНезависимые", 80); - Приоритеты.Вставить("Документы", 90); - Приоритеты.Вставить("ЖурналыДокументов", 100); - Приоритеты.Вставить("РегистрыСведений", 110); - Приоритеты.Вставить("РегистрыНакопления", 120); - Приоритеты.Вставить("РегистрыРасчета", 130); - Приоритеты.Вставить("РегистрыБухгалтерии", 140); - - ПриоритетыПоУмолчанию = Новый ФиксированноеСоответствие(Приоритеты); - -КонецПроцедуры - &НаСервере Процедура ЗаполнитьОбщиеМодули() @@ -1383,4 +1309,55 @@ КонецПроцедуры +&НаКлиенте +Функция СтандартнаяПроцедураПроверки() + + Возврат "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ТекстПредупрежденияИзмененаПроцедураПроверки(Вопрос = Ложь) + + ТекстШапка = НСтр("ru = 'Использование своей процедуры проверки, отличной от стандартной, допустимо + |только в крайних случаях, когда ее возможностей недостаточно.'"); + ТекстШапка = СтрСоединить(СтрРазделить(ТекстШапка, Символы.ПС), " "); + + ТекстПродолжение = НСтр("ru = 'При этом необходимо соблюдать следующие правила при ее написании: + | • обработчик может блокировать только не обновленные данные; + | • данные должны разблокироваться по мере их обработки, а не после полной обработки всех объектов; + | • ввод новых данных должен быть доступен всегда.'"); + + ТекстПредупреждения = ТекстШапка + Символы.ПС + Символы.ПС + ТекстПродолжение; + + Если Вопрос Тогда + ТекстПредупреждения = ТекстПредупреждения + Символы.ПС + Символы.ПС + НСтр("ru = 'Продолжить?'"); + КонецЕсли; + + Возврат ТекстПредупреждения; + +КонецФункции + +&НаКлиенте +Процедура ДекорацияПредупреждениеНажатие(Элемент) + ПоказатьПредупреждение(, ТекстПредупрежденияИзмененаПроцедураПроверки()); +КонецПроцедуры + +&НаКлиенте +Процедура ПроцедураПроверкиОкончаниеВводаТекстаПослеВопроса(Результат, Текст) Экспорт + Если Результат <> КодВозвратаДиалога.Да Тогда + Объект.ОбработчикиОбновления[0].ПроцедураПроверки = ТекущееЗначениеПроцедурыПроверки; + Возврат; + КонецЕсли; + Объект.ОбработчикиОбновления[0].ПроцедураПроверки = Текст; + ТекущееЗначениеПроцедурыПроверки = Текст; + + Элементы.ДекорацияПредупреждение.Видимость = (ТекущееЗначениеПроцедурыПроверки <> СтандартнаяПроцедураПроверки()); + + Элементы.ПроцедураПроверки.ОтметкаНезаполненного = Не ЗначениеЗаполнено(Объект.ОбработчикиОбновления[0].ПроцедураПроверки); + Если НЕ ПустаяСтрока(Объект.ОбработчикиОбновления[0].ПроцедураПроверки) Тогда + ИмяОсновногоОбъектаМетаданных(Объект.ОбработчикиОбновления[0].ПроцедураПроверки, ЕдинственноеЧисло, МножественноеЧисло); + КонецЕсли; +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Form.form b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Form.form index ff8d9320e..85978fe8d 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Form.form +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Form.form @@ -2585,6 +2585,33 @@ <representationInContextMenu>Auto</representationInContextMenu> <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> </items> + <items xsi:type="form:Button"> + <name>УстановитьАвтоПорядок</name> + <id>257</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>УстановитьАвтоПорядокРасширеннаяПодсказка</name> + <id>258</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.УстановитьАвтоПорядок</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> + </items> <items xsi:type="form:Button"> <name>ПоказатьТекстыВсехМодулей</name> <id>209</id> @@ -3560,6 +3587,28 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>УстановитьАвтоПорядок</name> + <title> + <key>ru</key> + <value>Установить автопорядок</value> + + 24 + + ru + Установить авто порядок + + + true + + + + УстановитьАвтоПорядок + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Help/ru.html b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Help/ru.html index 34669e326..6b0e1baf6 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Help/ru.html +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Help/ru.html @@ -1,50 +1,77 @@ -

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

    -

    Загрузка описания обработчиков обновления

    -

    Редактирование описания обработчиков обновления

    -

    Описание элементов формы

    -

    Контроль построения очереди выполнения обработчиков обновления

    -

    Запись изменений описания обработчиков обновления

    +

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

    +

    Загрузка описания обработчиков обновления

    +

    Редактирование описания обработчиков обновления

    +

    Описание элементов формы

    +

    Контроль построения очереди выполнения обработчиков обновления

    +

    Запись изменений описания обработчиков обновления

    -

    Загрузка описания обработчиков обновления

    -

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

    +

    Загрузка описания обработчиков обновления

    +

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

    -

    Редактирование описания обработчиков обновления

    -

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

    +

    Редактирование описания обработчиков обновления

    +

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

    -

    Описание элементов формы

    -

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

    -

    -

    +

    Описание элементов формы

    +

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

    +

    +

    Примечание. Относительно каталога SRC вычисляется расположение каталога .settings в котором должен располагается файл настроек обработки.
    -

    Библиотека - фильтр списка обработчиков по встроенной библиотеке.
    Изменяемый объект - фильтр списка обработчиков по изменяемым объектам - в списке будут отобраны все обработчики содержащие в своей табличной части Изменяемые объекты указанное имя (или часть имени) объекта метаданных.
    Читаемый объект - фильтр списка обработчиков по читаемым объектам - в списке будут отобраны все обработчики содержащие в своей табличной части Читаемые объекты указанное имя (или часть имени) объекта метаданных.

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

    -

    -

    +

    Библиотека - фильтр списка обработчиков по встроенной библиотеке.
    Изменяемый объект - фильтр списка обработчиков по изменяемым объектам - в списке будут отобраны все обработчики содержащие в своей табличной части Изменяемые объекты указанное имя (или часть имени) объекта метаданных.
    Читаемый объект - фильтр списка обработчиков по читаемым объектам - в списке будут отобраны все обработчики содержащие в своей табличной части Читаемые объекты указанное имя (или часть имени) объекта метаданных.

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

    +

    +

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

    Быстрые отборы - динамически формируемая область быстрых отборов предназначена для отбора обработчиков по предопределенным критериям отбора.

    -

    -

    +

    Быстрые отборы - динамически формируемая область быстрых отборов предназначена для отбора обработчиков по предопределенным критериям отбора.

    +

    +

    Примечание. Чтобы отключить текущий быстрый отбор необходимо установить быстрый отбор Все.
    -

    Контроль построения очереди выполнения обработчиков обновления

    -

    При контроле построения очереди выполнения проверяется:

    -
    • полнота заполнения данных и корректность указанных приоритетов выполнения
    • -
    • зацикленность очереди выполнения обработчиков

    -

    +

    Контроль построения очереди выполнения обработчиков обновления

    +

    При контроле построения очереди выполнения проверяется:

    +
    • полнота заполнения данных и корректность указанных приоритетов выполнения
    • +
    • зацикленность очереди выполнения обработчиков
    • +
    • автоматическая установка приориетов выполнения обработчиков

    +

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

    Запись изменений описания обработчиков обновления

    -

    Для записи в файлы git-репозитория необходимо:

    -
    • указать каталог SRC проекта конфигурации выгруженного в формате EDT
    • -
    • в каталоге .settings проекта конфигурации выгруженного в формате EDT разместить файл настроек cut_tugs.yml. В этом файле в формате yaml перечислены модули обновления конфигурации для которых необходимо формировать процедуры ПриДобавленииОбработчиковОбновления (шаблон файла настроек можно сгенерировать соответствующей командой расположенной в подменю формы Еще).

    Описание обработчиков обновления генерируются для модулей обновления указанных в файле настройки cut_tag.yml.
    Изменения в файлы записываются в следующем порядке:

    -
    • сформированное описание обработчика записывается в модуль менеджера объекта обновления (рядом с процедурой обновления), в процедуру ОписаниеОбработчиковОбновления
    • -
    • в файлы модуля обновления, в процедуру ПриДобавленииОбработчиковОбновления в алфавитном порядке записывается список вызовов процедур ОписаниеОбработчиковОбновления

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

    +

    При автоматической установке приоритетов реализованы следующие правила:

    +
    1. Вводится порядок обновления типов метаданных:
    2. +

      10 - Константа

      +

      20 - Справочник

      +

      30 - ПланВидовХарактеристик

      +

      40 - ПланСчетов

      +

      50 - ПланВидовРасчета

      +

      60 - ПланОбмена

      +

      70 - БизнесПроцесс

      +

      80 - Задача

      +

      90 - РегистрСведений (независимый)

      +

      100 - Документ

      +

      110 - ЖурналДокументов

      +

      120 - РегистрСведений (подчиненный регистратору)

      +

      130 - РегистрНакопления

      +

      140 - РегистрРасчета

      +

      150 - РегистрБухгалтерии

      +

      Порядок типов можно переопределить в процедуре ОбновлениеИнформационнойБазыПереопределяемый.ПриЗаполненииПриоритетовТиповМетаданных или для какого-то конкретного объекта метаданных задать свой порядок отличный от порядка его типа.

      +
  • +Каждому обработчику обновления присваивается порядок обновления, который равен минимальному порядку обновления из всех изменяемых им типов. Например если обработчик изменяет одновременно справочник и документ, то его порядок обновления будет равен порядку обновления справочника.
  • +
  • +Приоритеты устанавливаются по принципу:
  • +
    • При конфликте чтения или записи двух обработчиков обновляющих разные типы метаданных первым выполнятеся тот, который изменяет данные с меньшим порядком обновления (сначала константы, справочники, план видов характеристик и т.д.)
    • +
    • При конфликте двух обработчиков обновляющих данные одного типа:
    • +
        1. первым выполняется тот, который изменяет читаемые данные
        2. +
        3. в случае если оба обработчика изменяют друг другу читаемые данные, то порядок любой (предполагается, что обработчики изменяют независимые друг для друга наборы данных, в противном случае это зацикливание порядка выполнения, когда первый обработчик ждет второй, а второй ждет первый)
        4. +
        5. в случае повторной записи порядок выполнения любой (предполагается, что пишутся или разные наборы данных или разные реквизиты в одном и том же объекте, иначе обработчики должны быть объединены в один)
    +

    Запись изменений описания обработчиков обновления

    +

    Для записи в файлы git-репозитория необходимо:

    +
    • указать каталог SRC проекта конфигурации выгруженного в формате EDT
    • +
    • в каталоге .settings проекта конфигурации выгруженного в формате EDT разместить файл настроек cut_tugs.yml. В этом файле в формате yaml перечислены модули обновления конфигурации для которых необходимо формировать процедуры ПриДобавленииОбработчиковОбновления (шаблон файла настроек можно сгенерировать соответствующей командой расположенной в подменю формы Еще).

    Описание обработчиков обновления генерируются для модулей обновления указанных в файле настройки cut_tag.yml.
    Изменения в файлы записываются в следующем порядке:

    +
    • сформированное описание обработчика записывается в модуль менеджера объекта обновления (рядом с процедурой обновления), в процедуру ОписаниеОбработчиковОбновления
    • +
    • в файлы модуля обновления, в процедуру ПриДобавленииОбработчиковОбновления в алфавитном порядке записывается список вызовов процедур ОписаниеОбработчиковОбновления

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

     

    \ No newline at end of file diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Module.bsl b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Module.bsl index 07d712412..c6a82bc35 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Module.bsl +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Module.bsl @@ -650,6 +650,15 @@ КонецПроцедуры +&НаКлиенте +Процедура УстановитьАвтоПорядок(Команда) + + Для Каждого Приоритет Из Объект.ПриоритетыВыполнения Цикл + Приоритет.Порядок = Приоритет.ПорядокАвто; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецОбласти @@ -675,6 +684,20 @@ Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста); #КонецОбласти + #Область СтатусИзмененаПроцедураПроверки + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбработчикиОбновленияСтатусПроблемы.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОбработчикиОбновления.ИзмененаПроцедураПроверки"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Изменена процедура проверки'")); + #КонецОбласти + #Область ТехническийПроект Элемент = УсловноеОформление.Элементы.Добавить(); @@ -1495,7 +1518,8 @@ Для Каждого ПриоритетОбработчика1 Из ПриоритетыОбработчика1 Цикл ЧитаемыеДанныеИзменяютсяДругими = Конфликты.Найти(ПриоритетОбработчика1.Процедура2, "ПроцедураПисатель") <> Неопределено; РазрабатываемаяБиблиотека_ИзменяетЧитаемыеДанные = РазрабатываемыеПодсистемы.Найти(ПриоритетОбработчика1.Подсистема2) <> Неопределено; - Если ЧитаемыеДанныеИзменяютсяДругими ИЛИ НЕ РазрабатываемаяБиблиотека_ИзменяетЧитаемыеДанные Тогда + РучнойПорядок = ПриоритетОбработчика1.Порядок <> ПриоритетОбработчика1.ПорядокАвто; + Если (ЧитаемыеДанныеИзменяютсяДругими ИЛИ НЕ РазрабатываемаяБиблиотека_ИзменяетЧитаемыеДанные) И РучнойПорядок Тогда НоваяСтрока = ПриоритетыВыполнения.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, ПриоритетОбработчика1); КонецЕсли; @@ -1546,6 +1570,7 @@ ПрочиеБыстрыеОтборы.Очистить(); ДобавитьБыстрыйОтбор(ОписаниеОбработчиков, МассивСтрок, "СтатусПроблемы", СтатусНеобходимАнализ, ЦветаСтиля.ЦветОсобогоТекста); + ДобавитьБыстрыйОтбор(ОписаниеОбработчиков, МассивСтрок, "ИзмененаПроцедураПроверки", НСтр("ru = 'Изменена процедура проверки'"), WebЦвета.Золотистый); ДобавитьБыстрыйОтбор(ОписаниеОбработчиков, МассивСтрок, "РежимВыполнения", НСтр("ru = 'Отложенно'")); ДобавитьБыстрыйОтбор(ОписаниеОбработчиков, МассивСтрок, "РежимВыполнения", НСтр("ru = 'Монопольно'")); ДобавитьБыстрыйОтбор(ОписаниеОбработчиков, МассивСтрок, "РежимВыполнения", НСтр("ru = 'Оперативно'")); @@ -4340,6 +4365,9 @@ ИначеЕсли СтрНайти(ИмяБыстрогоОтбора, НСтр("ru = 'Начальное заполнение'")) > 0 Тогда Отбор = Новый Структура("НачальноеЗаполнение", Истина); + ИначеЕсли ИмяБыстрогоОтбора = "ИзмененаПроцедураПроверки" Тогда + Отбор = Новый Структура("ИзмененаПроцедураПроверки", Истина); + ИначеЕсли СтрНайти(ИмяБыстрогоОтбора, НСтр("ru = 'Обязательный'")) > 0 Тогда Отбор = Новый Структура("ВыполнятьВГруппеОбязательных", Истина); @@ -4357,6 +4385,7 @@ Иначе ОтключитьОтборОбработчиков("СтатусПроблемы"); + ОтключитьОтборОбработчиков("ИзмененаПроцедураПроверки"); ОтключитьОтборОбработчиков("РежимВыполнения"); ОтключитьОтборОбработчиков("РежимВыполненияОтложенныхОбработчиков"); ОтключитьОтборОбработчиков("НачальноеЗаполнение"); @@ -4492,6 +4521,11 @@ Если Ссылка <> Неопределено Тогда ДанныеТЧ = ДанныеОбработчика(ТЧ.Имя, Ссылка); КонецЕсли; + Если ТЧ.Имя = "ПриоритетыВыполнения" Тогда + ДанныеТЧ.Сортировать("Процедура1,Процедура2"); + ИначеЕсли ТЧ.Имя = "КонфликтыОбработчиков" Тогда + ДанныеТЧ.Сортировать("ОбъектМетаданных,ПроцедураПисатель,ПроцедураЧитательИлиПисатель2"); + КонецЕсли; ТабДок = Новый ТабличныйДокумент; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДанныеТЧ); diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ObjectModule.bsl b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ObjectModule.bsl index 4e9e5f2ae..63863d97f 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ObjectModule.bsl @@ -15,6 +15,7 @@ Перем МножественноеЧисло Экспорт; Перем ЕдинственноеЧисло Экспорт; Перем МодулиПодсистем Экспорт; +Перем ПриоритетыТиповМетаданных; #КонецОбласти @@ -170,6 +171,27 @@ Конфликты = РезультатЗапросов[ИндексПоследнегоЗапроса-2].Выгрузить(); КонфликтыОбработчиков.Загрузить(Конфликты); + ПорядкиНеРавны = 0; + НеЛюбойПорядок = 0; + ИнверсныйПорядок = 0; + РазрабатываемыеПодсистемы = РазрабатываемыеПодсистемы(); + Приоритеты.Колонки.Вставить(5, "НеЛюбой", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 0))); + Приоритеты.Колонки.Вставить(6, "Инверсия", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 0))); + Для Каждого Приоритет Из Приоритеты Цикл + Если Приоритет.Порядок <> "Любой" И Приоритет.ПорядокАвто = "Любой" И НЕ Приоритет.ПовторнаяЗапись Тогда + Приоритет.НеЛюбой = 1; + КонецЕсли; + Если Приоритет.Порядок = "До" И Приоритет.ПорядокАвто = "После" + ИЛИ Приоритет.Порядок = "После" И Приоритет.ПорядокАвто = "До" Тогда + Приоритет.Инверсия = 1; + КонецЕсли; + Если РазрабатываемыеПодсистемы.Найти(Приоритет.Подсистема1) <> Неопределено Тогда + ПорядкиНеРавны = ПорядкиНеРавны + Приоритет.ПорядкиНеРавны; + НеЛюбойПорядок = НеЛюбойПорядок + Приоритет.НеЛюбой; + ИнверсныйПорядок = ИнверсныйПорядок + Приоритет.Инверсия; + КонецЕсли; + КонецЦикла; + Возврат НовоеОписание; КонецФункции @@ -397,6 +419,9 @@ НовоеОписание = ТабличнаяЧасть.Добавить(); НовоеОписание.Ссылка = СсылкаОбработчика; НовоеОписание.ОбъектМетаданных = СокрЛП(ИмяОбъекта); + Если ИмяТабличнойЧасти <> "БлокируемыеОбъекты" Тогда + НовоеОписание.ПорядокТипа = ПорядокТипаОбъекта(СокрЛП(ИмяОбъекта)); + КонецЕсли; КонецЕсли; КонецЦикла; @@ -479,9 +504,12 @@ |ВЫБРАТЬ | Т.ОбъектМетаданных КАК ОбъектМетаданных, | Т.ОбработчикПисатель КАК ОбработчикПисатель, + | МИНИМУМ(ПриоритетыОбновления1.ПорядокТипа) КАК ПорядокТипа1, | Т.ОбработчикЧитательИлиПисатель2 КАК ОбработчикЧитательИлиПисатель2, + | МИНИМУМ(ПриоритетыОбновления2.ПорядокТипа) КАК ПорядокТипа2, | МАКСИМУМ(Т.ЗаписьЧитаемых) КАК ЗаписьЧитаемых, - | МАКСИМУМ(Т.ПовторнаяЗапись) КАК ПовторнаяЗапись + | МАКСИМУМ(Т.ПовторнаяЗапись) КАК ПовторнаяЗапись, + | МАКСИМУМ(Т.ЭтоЧитатель) КАК ЭтоЧитатель |ПОМЕСТИТЬ ПересеченияОбработчиков |ИЗ |( @@ -491,7 +519,8 @@ | ЧитаемыеОбъектыДругимиОбработчиками.Ссылка КАК ОбработчикЧитательИлиПисатель2, | ИзменяемыеОбъекты.ОбъектМетаданных КАК ОбъектМетаданных, | ИСТИНА КАК ЗаписьЧитаемых, - | ЛОЖЬ КАК ПовторнаяЗапись + | ЛОЖЬ КАК ПовторнаяЗапись, + | ИСТИНА КАК ЭтоЧитатель | ИЗ | ИзменяемыеОбъекты КАК ИзменяемыеОбъекты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЧитаемыеОбъекты КАК ЧитаемыеОбъектыДругимиОбработчиками @@ -506,34 +535,14 @@ | | ОБЪЕДИНИТЬ ВСЕ | - | // Читаемые объекты изменяются другими обработчиками - | ВЫБРАТЬ - | ИзменяемыеОбъектыДругимиОбработчиками.Ссылка КАК ОбработчикПисатель, - | ЧитаемыеОбъекты.Ссылка КАК ОбработчикЧитательИлиПисатель2, - | ЧитаемыеОбъекты.ОбъектМетаданных КАК ОбъектМетаданных, - | ИСТИНА КАК ЗаписьЧитаемых, - | ЛОЖЬ КАК ПовторнаяЗапись - | ИЗ - | ЧитаемыеОбъекты КАК ЧитаемыеОбъекты - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИзменяемыеОбъекты КАК ИзменяемыеОбъектыДругимиОбработчиками - | ПО ЧитаемыеОбъекты.ОбъектМетаданных = ИзменяемыеОбъектыДругимиОбработчиками.ОбъектМетаданных - | И ЧитаемыеОбъекты.РежимВыполнения = ИзменяемыеОбъектыДругимиОбработчиками.РежимВыполнения - | И ЧитаемыеОбъекты.Ссылка <> ИзменяемыеОбъектыДругимиОбработчиками.Ссылка - | ГДЕ - | ЧитаемыеОбъекты.РежимВыполненияОтложенныхОбработчиков = &Параллельно - | И ЧитаемыеОбъекты.РежимВыполнения = &Отложенно - | И ИзменяемыеОбъектыДругимиОбработчиками.РежимВыполненияОтложенныхОбработчиков = &Параллельно - | И ИзменяемыеОбъектыДругимиОбработчиками.РежимВыполнения = &Отложенно - | - | ОБЪЕДИНИТЬ ВСЕ - | | // Изменяемые объекты изменяются другими обработчиками | ВЫБРАТЬ | ИзменяемыеОбъекты.Ссылка КАК ОбработчикПисатель, | ИзменяемыеОбъектыДругимиОбработчиками.Ссылка КАК ОбработчикЧитательИлиПисатель2, | ИзменяемыеОбъекты.ОбъектМетаданных КАК ОбъектМетаданных, | ЛОЖЬ КАК ЗаписьЧитаемых, - | ИСТИНА КАК ПовторнаяЗапись + | ИСТИНА КАК ПовторнаяЗапись, + | ЛОЖЬ КАК ЭтоЧитатель | ИЗ | ИзменяемыеОбъекты КАК ИзменяемыеОбъекты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИзменяемыеОбъекты КАК ИзменяемыеОбъектыДругимиОбработчиками @@ -547,6 +556,10 @@ | И ИзменяемыеОбъектыДругимиОбработчиками.РежимВыполнения = &Отложенно | |) КАК Т + |ЛЕВОЕ СОЕДИНЕНИЕ ПриоритетыОбновленияТипов КАК ПриоритетыОбновления1 + | ПО Т.ОбработчикПисатель = ПриоритетыОбновления1.Ссылка + |ЛЕВОЕ СОЕДИНЕНИЕ ПриоритетыОбновленияТипов КАК ПриоритетыОбновления2 + | ПО Т.ОбработчикЧитательИлиПисатель2 = ПриоритетыОбновления2.Ссылка | |СГРУППИРОВАТЬ ПО | Т.ОбъектМетаданных, @@ -562,15 +575,21 @@ |ВЫБРАТЬ | Т.ОбработчикПисатель КАК ОбработчикПисатель, | Т.ОбработчикЧитательИлиПисатель2 КАК ОбработчикЧитательИлиПисатель2, + | МИНИМУМ(Т.ПорядокТипа1) КАК ПорядокТипа1, + | МИНИМУМ(Т.ПорядокТипа2) КАК ПорядокТипа2, | МАКСИМУМ(Т.ЗаписьЧитаемых) КАК ЗаписьЧитаемых, - | МАКСИМУМ(Т.ПовторнаяЗапись) КАК ПовторнаяЗапись + | МАКСИМУМ(Т.ПовторнаяЗапись) КАК ПовторнаяЗапись, + | МАКСИМУМ(Т.ЭтоЧитатель) КАК ЭтоЧитатель |ПОМЕСТИТЬ втКонфликты |ИЗ | (ВЫБРАТЬ | Конфликты.ОбработчикПисатель КАК ОбработчикПисатель, | Конфликты.ОбработчикЧитательИлиПисатель2 КАК ОбработчикЧитательИлиПисатель2, + | Конфликты.ПорядокТипа1 КАК ПорядокТипа1, + | Конфликты.ПорядокТипа2 КАК ПорядокТипа2, | Конфликты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, - | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись + | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | Конфликты.ЭтоЧитатель КАК ЭтоЧитатель | ИЗ | ПересеченияОбработчиков КАК Конфликты | @@ -579,8 +598,11 @@ | ВЫБРАТЬ | Конфликты.ОбработчикЧитательИлиПисатель2 КАК ОбработчикПисатель, | Конфликты.ОбработчикПисатель КАК ОбработчикЧитательИлиПисатель2, + | Конфликты.ПорядокТипа2 КАК ПорядокТипа2, + | Конфликты.ПорядокТипа1 КАК ПорядокТипа1, | Конфликты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, - | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись + | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | ЛОЖЬ КАК ЭтоЧитатель | ИЗ | ПересеченияОбработчиков КАК Конфликты | ) КАК Т @@ -599,7 +621,13 @@ | Конфликты.ОбработчикПисатель КАК ОбработчикПисатель, | Конфликты.ОбработчикЧитательИлиПисатель2 КАК ОбработчикЧитательИлиПисатель2, | Конфликты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, + | КонфликтыЗеркально.ЗаписьЧитаемых КАК ЗаписьЧитаемых2, | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | КонфликтыЗеркально.ПовторнаяЗапись КАК ПовторнаяЗапись2, + | Конфликты.ЭтоЧитатель КАК ЭтоЧитатель, + | КонфликтыЗеркально.ЭтоЧитатель КАК ЭтоЧитатель2, + | Конфликты.ПорядокТипа1 КАК ПорядокТипа1, + | Конфликты.ПорядокТипа2 КАК ПорядокТипа2, | ВЫБОР КОГДА ЕСТЬNULL(Приоритеты.Порядок, &ПустаяСтрока) = ЕСТЬNULL(ПриоритетыНаоборот.Порядок, &ПустаяСтрока) | И ЕСТЬNULL(Приоритеты.Порядок, &ПустаяСтрока) <> &Любой | ТОГДА &ПустаяСтрока @@ -618,7 +646,20 @@ | КОГДА &Любой ТОГДА &Любой | КОНЕЦ, | &ПустаяСтрока)) - | КОНЕЦ КАК Порядок + | КОНЕЦ КАК Порядок, + | ВЫБОР + | КОГДА Конфликты.ПорядокТипа1 = Конфликты.ПорядокТипа2 И Конфликты.ПовторнаяЗапись + | ИЛИ Конфликты.ПорядокТипа1 = Конфликты.ПорядокТипа2 И Конфликты.ЭтоЧитатель = КонфликтыЗеркально.ЭтоЧитатель + | ТОГДА &Любой + | КОГДА Конфликты.ПорядокТипа1 > Конфликты.ПорядокТипа2 + | ИЛИ (Конфликты.ПорядокТипа1 = Конфликты.ПорядокТипа2 И НЕ Конфликты.ЭтоЧитатель) + | ТОГДА &После + | КОГДА Конфликты.ПорядокТипа1 < Конфликты.ПорядокТипа2 + | ИЛИ (Конфликты.ПорядокТипа1 = Конфликты.ПорядокТипа2 И Конфликты.ЭтоЧитатель) + | ТОГДА &До + | ИНАЧЕ + | &ПустаяСтрока + | КОНЕЦ КАК ПорядокАвто |ПОМЕСТИТЬ втПриоритеты |ИЗ | втКонфликты КАК Конфликты @@ -629,6 +670,10 @@ | ЛЕВОЕ СОЕДИНЕНИЕ ПриоритетыВыполнения КАК ПриоритетыНаоборот | ПО Конфликты.ОбработчикПисатель = ПриоритетыНаоборот.Обработчик2 | И Конфликты.ОбработчикЧитательИлиПисатель2 = ПриоритетыНаоборот.Ссылка + | + | ЛЕВОЕ СОЕДИНЕНИЕ втКонфликты КАК КонфликтыЗеркально + | ПО Конфликты.ОбработчикПисатель = КонфликтыЗеркально.ОбработчикЧитательИлиПисатель2 + | И Конфликты.ОбработчикЧитательИлиПисатель2 = КонфликтыЗеркально.ОбработчикПисатель | |ИНДЕКСИРОВАТЬ ПО | ОбработчикПисатель, @@ -642,26 +687,36 @@ | ЕСТЬNULL(Обработчики1.ОчередьОтложеннойОбработки, """") КАК Очередь1, | ЕСТЬNULL(Обработчики2.ОчередьОтложеннойОбработки, """") КАК Очередь2, | Приоритеты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, + | Приоритеты.ЗаписьЧитаемых2 КАК ЗаписьЧитаемых2, | Приоритеты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | Приоритеты.ПовторнаяЗапись2 КАК ПовторнаяЗапись2, + | Приоритеты.ЭтоЧитатель КАК ЭтоЧитатель, + | Приоритеты.ЭтоЧитатель2 КАК ЭтоЧитатель2, + | Приоритеты.ПорядокТипа1 КАК ПорядокТипа1, + | Приоритеты.ПорядокТипа2 КАК ПорядокТипа2, | ВЫБОР | КОГДА Приоритеты.ЗаданПорядокВыполнения | ТОГДА Приоритеты.ЗаданПорядокВыполнения | ИНАЧЕ | ВЫБОР - | КОГДА Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 | И Обработчики1.ПорядокБиблиотеки < Обработчики2.ПорядокБиблиотеки | ТОГДА &До - | КОГДА Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 | И Обработчики1.ПорядокБиблиотеки > Обработчики2.ПорядокБиблиотеки | ТОГДА &После - | КОГДА Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 | И Обработчики1.ОчередьОтложеннойОбработки < Обработчики2.ОчередьОтложеннойОбработки | ТОГДА &До - | КОГДА Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 | И Обработчики1.ОчередьОтложеннойОбработки > Обработчики2.ОчередьОтложеннойОбработки | ТОГДА &После | ИНАЧЕ - | &ПустаяСтрока + | Приоритеты.ПорядокАвто | КОНЕЦ <> &ПустаяСтрока | КОНЕЦ КАК ЗаданПорядокВыполнения, | ВЫБОР @@ -669,22 +724,27 @@ | ТОГДА Приоритеты.Порядок | ИНАЧЕ | ВЫБОР - | КОГДА Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 | И Обработчики1.ПорядокБиблиотеки < Обработчики2.ПорядокБиблиотеки | ТОГДА &До - | КОГДА Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ПорядокБиблиотеки > 0 И Обработчики2.ПорядокБиблиотеки > 0 | И Обработчики1.ПорядокБиблиотеки > Обработчики2.ПорядокБиблиотеки | ТОГДА &После - | КОГДА Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 | И Обработчики1.ОчередьОтложеннойОбработки < Обработчики2.ОчередьОтложеннойОбработки | ТОГДА &До - | КОГДА Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 + | КОГДА НЕ Обработчики1.РазрабатываемаяПодсистема И НЕ Обработчики2.РазрабатываемаяПодсистема + | И Обработчики1.ОчередьОтложеннойОбработки > 0 И Обработчики2.ОчередьОтложеннойОбработки > 0 | И Обработчики1.ОчередьОтложеннойОбработки > Обработчики2.ОчередьОтложеннойОбработки | ТОГДА &После | ИНАЧЕ - | &ПустаяСтрока + | Приоритеты.ПорядокАвто | КОНЕЦ - | КОНЕЦ КАК Порядок + | КОНЕЦ КАК Порядок, + | Приоритеты.ПорядокАвто КАК ПорядокАвто |ПОМЕСТИТЬ НовыеПриоритеты |ИЗ | втПриоритеты КАК Приоритеты @@ -725,6 +785,9 @@ | Конфликты.ОбработчикЧитательИлиПисатель2 КАК ОбработчикЧитательИлиПисатель2, | Конфликты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, | Конфликты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | Конфликты.ЭтоЧитатель КАК ЭтоЧитатель, + | Конфликты.ПорядокТипа1 КАК ПорядокТипа1, + | Конфликты.ПорядокТипа2 КАК ПорядокТипа2, | ЕСТЬNULL(ОбработчикиПисатели.Процедура, """") КАК ПроцедураПисатель, | ЕСТЬNULL(ОбработчикиЧитателиИлиПисатели2.Процедура, """") КАК ПроцедураЧитательИлиПисатель2 |ИЗ @@ -738,8 +801,8 @@ | |УПОРЯДОЧИТЬ ПО | ОбъектМетаданных, - | ОбработчикПисатель, - | ОбработчикЧитательИлиПисатель2 + | ПроцедураПисатель, + | ПроцедураЧитательИлиПисатель2 |; | |//////////////////////////////////////////////////////////////////////////////// @@ -747,9 +810,20 @@ | Приоритеты.ОбработчикПисатель КАК Ссылка, | Приоритеты.ОбработчикЧитательИлиПисатель2 КАК Обработчик2, | Приоритеты.Порядок КАК Порядок, + | Приоритеты.ПорядокАвто КАК ПорядокАвто, + | ВЫБОР КОГДА Приоритеты.Порядок <> Приоритеты.ПорядокАвто + | ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ КАК ПорядкиНеРавны, | Приоритеты.ЗаданПорядокВыполнения КАК ЗаданПорядокВыполнения, | Приоритеты.ЗаписьЧитаемых КАК ЗаписьЧитаемых, + | Приоритеты.ЗаписьЧитаемых2 КАК ЗаписьЧитаемых2, | Приоритеты.ПовторнаяЗапись КАК ПовторнаяЗапись, + | Приоритеты.ПовторнаяЗапись2 КАК ПовторнаяЗапись2, + | Приоритеты.ЭтоЧитатель КАК ЭтоЧитатель, + | Приоритеты.ЭтоЧитатель2 КАК ЭтоЧитатель2, + | Приоритеты.ПорядокТипа1 КАК ПорядокТипа1, + | Приоритеты.ПорядокТипа2 КАК ПорядокТипа2, | ЕСТЬNULL(ОбработчикиПисатели.Процедура, """") КАК Процедура1, | ЕСТЬNULL(ОбработчикиПисатели.Подсистема, """") КАК Подсистема1, | ЕСТЬNULL(ОбработчикиПисатели.Комментарий, """") КАК Комментарий1, @@ -796,7 +870,9 @@ | Обработчики.Изменен КАК Изменен, | Обработчики.ТехническийПроект КАК ТехническийПроект, | Обработчики.ИмяБиблиотеки КАК ИмяБиблиотеки, + | Обработчики.ПорядокБиблиотеки КАК ПорядокБиблиотеки, | Обработчики.ИмяОбъекта КАК ИмяОбъекта, + | Обработчики.РазрабатываемаяПодсистема КАК РазрабатываемаяПодсистема, | ЕСТЬNULL(Проблемы.ЗаписьЧитаемых, ЛОЖЬ) КАК ЗаписьЧитаемых, | ЕСТЬNULL(Проблемы.ПовторнаяЗапись, ЛОЖЬ) КАК ПовторнаяЗапись, | ЕСТЬNULL(Проблемы.ЗаданПорядокВыполнения, ЛОЖЬ) КАК ЗаданПорядокВыполнения, @@ -805,7 +881,13 @@ | И (ЕСТЬNULL(Проблемы.ЗаписьЧитаемых, ЛОЖЬ) ИЛИ ЕСТЬNULL(Проблемы.ПовторнаяЗапись, ЛОЖЬ)) | ТОГДА &НеобходимАнализ | ИНАЧЕ &НетПроблем - | КОНЕЦ КАК СтатусПроблемы + | КОНЕЦ КАК СтатусПроблемы, + | ВЫБОР + | КОГДА Обработчики.ПроцедураПроверки <> """" + | И Обработчики.ПроцедураПроверки <> &СтандартнаяПроцедураПроверки + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ИзмененаПроцедураПроверки |ИЗ | Обработчики КАК Обработчики | ЛЕВОЕ СОЕДИНЕНИЕ Проблемы КАК Проблемы @@ -822,10 +904,12 @@ Запрос.Текст = ТекстЗапросаВременныхТаблиц(); Запрос.УстановитьПараметр("НеобходимАнализ", СтатусНеобходимАнализ); Запрос.УстановитьПараметр("НетПроблем", СтатусНетПроблем); + Запрос.УстановитьПараметр("СтандартнаяПроцедураПроверки", "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы"); Запрос.УстановитьПараметр("До", "До"); Запрос.УстановитьПараметр("После", "После"); Запрос.УстановитьПараметр("Любой", "Любой"); Запрос.УстановитьПараметр("ПустаяСтрока", ""); + Запрос.УстановитьПараметр("РазрабатываемыеПодсистемы", РазрабатываемыеПодсистемы()); Запрос.УстановитьПараметр("Обработчики", ОбработчикиОбновления.Выгрузить()); Запрос.УстановитьПараметр("ЧитаемыеОбъекты", ЧитаемыеОбъекты.Выгрузить()); @@ -851,6 +935,7 @@ "ВЫБРАТЬ | ЧитаемыеОбъекты.Ссылка КАК Ссылка, | ЧитаемыеОбъекты.ОбъектМетаданных КАК ОбъектМетаданных, + | ЧитаемыеОбъекты.ПорядокТипа КАК ПорядокТипа, | ЧитаемыеОбъекты.БлокироватьИнтерфейс КАК БлокироватьИнтерфейс |ПОМЕСТИТЬ втЧитаемыеОбъекты |ИЗ @@ -864,6 +949,7 @@ |ВЫБРАТЬ | ЧитаемыеОбъекты.Ссылка КАК Ссылка, | ЧитаемыеОбъекты.ОбъектМетаданных КАК ОбъектМетаданных, + | ЧитаемыеОбъекты.ПорядокТипа КАК ПорядокТипа, | Обработчики.РежимВыполнения КАК РежимВыполнения, | Обработчики.НачальноеЗаполнение КАК НачальноеЗаполнение, | Обработчики.РежимВыполненияОтложенныхОбработчиков КАК РежимВыполненияОтложенныхОбработчиков, @@ -888,6 +974,22 @@ ТекстыЗапросов.Добавить(СтрЗаменить(ТекстЗапросаЧитаемыеОбъекты, "ЧитаемыеОбъекты", "ИзменяемыеОбъекты")); #КонецОбласти + #Область ПриоритетыОбновленияТипов + ТекстЗапросаПриоритетыОбновленияТипов = + "ВЫБРАТЬ + | ИзменяемыеОбъекты.Ссылка КАК Ссылка, + | МИНИМУМ(ИзменяемыеОбъекты.ПорядокТипа) КАК ПорядокТипа + |ПОМЕСТИТЬ ПриоритетыОбновленияТипов + |ИЗ + | ИзменяемыеОбъекты КАК ИзменяемыеОбъекты + |СГРУППИРОВАТЬ ПО + | ИзменяемыеОбъекты.Ссылка + | + |ИНДЕКСИРОВАТЬ ПО + | Ссылка"; + ТекстыЗапросов.Добавить(ТекстЗапросаПриоритетыОбновленияТипов); + #КонецОбласти + #Область БлокируемыеОбъекты ТекстыЗапросов.Добавить( "ВЫБРАТЬ @@ -999,7 +1101,8 @@ | Обработчики.ТехническийПроект КАК ТехническийПроект, | Обработчики.ИмяБиблиотеки КАК ИмяБиблиотеки, | Обработчики.ПорядокБиблиотеки КАК ПорядокБиблиотеки, - | Обработчики.ИмяОбъекта КАК ИмяОбъекта + | Обработчики.ИмяОбъекта КАК ИмяОбъекта, + | Обработчики.Подсистема В (&РазрабатываемыеПодсистемы) КАК РазрабатываемаяПодсистема |ПОМЕСТИТЬ Обработчики |ИЗ | &Обработчики КАК Обработчики @@ -1444,8 +1547,8 @@ Ошибка.Сообщение); КонецЦикла; ТекстИсключения = НСтр("ru = 'При построении очереди отложенных обработчиков обнаружены ошибки. - |Исправьте их с помощью встроенной обработки ""Описание обработчиков обновления"". - |Для этого запустите конфигурацию с параметром запуска ""%1"". + |Необходимо их исправить с помощью встроенной обработки ""Описание обработчиков обновления"". + |Для этого требуется запустить конфигурацию с параметром запуска ""%1"". |Ошибки перечислены в журнале регистрации. | |Список проблемных обработчиков обновления:'"); @@ -1459,6 +1562,8 @@ КонецПроцедуры +#КонецОбласти + #Область ЕстьЦиклВыполненияОбработчиков // Проверяет наличие зацикленности выполнения по данным приоритетов для всех обработчиков. @@ -1468,10 +1573,6 @@ // Функция ЕстьЦиклВыполненияОбработчиков(ПроверяемыйОбработчик = Неопределено, Знач ПриоритетыОбработчика = Неопределено, СообщатьОбОшибках = Ложь) Экспорт - Если ПриоритетыВыполнения.Количество() = 0 Тогда - Возврат Ложь; - КонецЕсли; - СписокРебер = ПриоритетыВыполнения.Выгрузить(, "Ссылка, Обработчик2, Порядок"); Если ПриоритетыОбработчика <> Неопределено Тогда ИнверсныйПорядок = ИнверсныйПорядок(); @@ -1815,8 +1916,6 @@ #КонецОбласти -#КонецОбласти - #Область Прочее Процедура УстановитьНомерОчереди(ИтерацииОбновления) @@ -1924,6 +2023,55 @@ Возврат Новый Структура("РежимВыполненияОтложенныхОбработчиков,ПорядокБиблиотеки"); КонецФункции +Функция ЗаполнитьПриоритетыТиповМетаданных() + + ПриоритетыТиповМетаданных = Новый Соответствие; + ПриоритетыТиповМетаданных.Вставить("Константа", 10); + ПриоритетыТиповМетаданных.Вставить("Справочник", 20); + ПриоритетыТиповМетаданных.Вставить("ПланСчетов", 30); + ПриоритетыТиповМетаданных.Вставить("ПланВидовХарактеристик", 40); + ПриоритетыТиповМетаданных.Вставить("ПланОбмена", 50); + ПриоритетыТиповМетаданных.Вставить("ПланВидовРасчета", 60); + ПриоритетыТиповМетаданных.Вставить("Задача", 70); + ПриоритетыТиповМетаданных.Вставить("БизнесПроцесс", 80); + ПриоритетыТиповМетаданных.Вставить("РегистрСведенийНезависимый", 90); + ПриоритетыТиповМетаданных.Вставить("Документ", 100); + ПриоритетыТиповМетаданных.Вставить("ЖурналДокументов", 110); + ПриоритетыТиповМетаданных.Вставить("РегистрСведений", 120); + ПриоритетыТиповМетаданных.Вставить("РегистрНакопления", 130); + ПриоритетыТиповМетаданных.Вставить("РегистрРасчета", 140); + ПриоритетыТиповМетаданных.Вставить("РегистрБухгалтерии", 150); + + ОбновлениеИнформационнойБазыПереопределяемый.ПриЗаполненииПриоритетовТиповМетаданных(ПриоритетыТиповМетаданных); + + Возврат ПриоритетыТиповМетаданных; + +КонецФункции + +Функция ПорядокТипаОбъекта(ПолноеИмя) + + Если СтрЧислоВхождений(ПолноеИмя, ".") = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + Имена = СтрРазделить(ПолноеИмя,"."); + ТипОбъекта = Имена[0]; + Если ТипОбъекта = "РегистрСведений" Тогда + МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + Если МетаданныеОбъекта.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда + ТипОбъекта = ТипОбъекта + "Независимый"; + КонецЕсли; + КонецЕсли; + + Результат = ПриоритетыТиповМетаданных[ПолноеИмя]; + Если Результат = Неопределено Тогда + Результат = ПриоритетыТиповМетаданных[ТипОбъекта]; + КонецЕсли; + + Возврат Результат; + +КонецФункции + // Возвращает соответствие инверсных порядков // // Возвращаемое значение: @@ -1946,9 +2094,10 @@ #Область Инициализация ИнициализацияКонстант(); +ЗаполнитьПриоритетыТиповМетаданных(); #КонецОбласти #Иначе ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Templates/cut_tags/Template.txt b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Templates/cut_tags/Template.txt index 5d66bbcf6..cf97124e8 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Templates/cut_tags/Template.txt +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Templates/cut_tags/Template.txt @@ -3,7 +3,7 @@ tags: - id: ИмяТэга description: Все что не входит в конфигурацию - begin: //++ ИмяТэга # как выглядит начало тэга в коде + begin: //++ ИмяТэга #как выглядит начало тэга в коде end: //-- ИмяТэга #как выглядит конец тэга в коде # Описание конфигураций для которых нужно вырезать, контролировать правильность расстановки и расставлять в коде @@ -13,9 +13,9 @@ tags: configurations: <КраткоеИмя>: - description: Вырезка конфигурации <КраткоеИмя> # краткое описание конфигурации или произвольное имя конфигурации - name: ИмяКонфигурации # имя конфигурации как в процедуре ОбновлениеИнформационнойБазы<КраткоеИмя>.ПриДобавленииПодсистемы - module: ОбновлениеИнформационнойБазы<КраткоеИмя> # модуль обновления в котором размещена процедура ПриДобавленииОбработчиков + description: Вырезка конфигурации <КраткоеИмя> #краткое описание конфигурации или произвольное имя конфигурации + name: ИмяКонфигурации #имя конфигурации как в процедуре ОбновлениеИнформационнойБазы<КраткоеИмя>.ПриДобавленииПодсистемы + module: ОбновлениеИнформационнойБазы<КраткоеИмя> #модуль обновления в котором размещена процедура ПриДобавленииОбработчиков tags: - ИмяТэга @@ -25,5 +25,5 @@ configurations: - СлужебныеПодсистемы.ОбъектыУТКАУП - СтандартныеПодсистемы - except_content:# перечисляются полные имена подсистем второго уровня которые исключаются из конфигурации + except_content: #перечисляются полные имена подсистем второго уровня которые исключаются из конфигурации - СтандартныеПодсистемы.ЗащитаПерсональныхДанных diff --git a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ОписаниеОбработчиковОбновления.mdo b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ОписаниеОбработчиковОбновления.mdo index 118595f24..8894892ca 100644 --- a/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ОписаниеОбработчиковОбновления.mdo +++ b/SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ОписаниеОбработчиковОбновления.mdo @@ -593,6 +593,19 @@ + + ИзмененаПроцедураПроверки + + ru + Изменена процедура проверки + + + Boolean + + + + + @@ -658,6 +671,23 @@ + + ПорядокТипа + + ru + Порядок типа + + + Number + + 10 + true + + + + + + ИндексКартинки @@ -739,6 +769,23 @@ + + ПорядокТипа + + ru + Порядок типа + + + Number + + 10 + true + + + + + + ИндексКартинки @@ -891,6 +938,22 @@ + + ПорядокАвто + + ru + Порядок авто + + + String + + 10 + + + + + + Процедура1 diff --git a/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Form.form b/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Form.form index 84b2057cb..4e03edb93 100644 --- a/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Form.form @@ -166,9 +166,7 @@ 12 true - 6 true - 2 true @@ -323,6 +321,186 @@ false + + СтраницаОшибка + 38 + + ГруппаОшибка + 40 + + Декорация4 + 42 + true + true + + true + + + Декорация4РасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 43 + true + + true + true + + + CommonPicture.Ошибка32 + + + + + ДекорацияОшибкаЗаписи + 45 + + <key>ru</key> + <value>Ошибка при записи узла синхронизации</value> + + true + true + + true + + + ДекорацияОшибкаЗаписиРасширеннаяПодсказка + 47 + Label + true + true + + Left + + + + ДекорацияОшибкаЗаписиКонтекстноеМеню + 46 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Ошибка</value> + + + ГруппаОшибкаРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Center + Auto + true + true + Auto + Auto + + + + КоманднаяПанельОшибка + 48 + + КомандаЗакрыть + 50 + true + true + + true + + + КомандаЗакрытьРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + Form.Command.КомандаЗакрыть + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель ошибка</value> + + + КоманднаяПанельОшибкаРасширеннаяПодсказка + 49 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница окончание</value> + + + СтраницаОшибкаРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + true true @@ -446,6 +624,28 @@ Auto Auto + + КомандаЗакрыть + + <key>ru</key> + <value>Закрыть</value> + + 2 + + ru + Команда закрыть + + + true + + + + КомандаЗакрыть + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Module.bsl index 8070cd213..9334dd43c 100644 --- a/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ОтложеннаяЗаписьУзла/Forms/Форма/Module.bsl @@ -44,6 +44,11 @@ Закрыть(); КонецПроцедуры +&НаКлиенте +Процедура КомандаЗакрыть(Команда) + Закрыть(); +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -89,6 +94,7 @@ ИначеЕсли Результат.Статус = "Ошибка" Тогда ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.КраткоеПредставлениеОшибки); + Элементы.ПанельОсновная.ТекущаяСтраница = Элементы.СтраницаОшибка; КонецЕсли; diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Help/ru.html index 1c7113a2b..cf385d1e1 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Help/ru.html @@ -75,7 +75,7 @@ TD {
  • Настроить расписание - с помощью ссылки можно перейти к настройке расписания автоматической проверки обновлений.
  • Загружать и устанавливать исправления (патчи) автоматически
  • Включите флажок, для того чтобы получать информацию, загружать и устанавливать доступные исправления (патчи) конфигурации в "тихом режиме" без участия пользователя.
    При выборе становится доступной ссылка Настроить расписание, например Каждый день, один раз в день.

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

    Онлайн-поддержка

    diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Module.bsl index f28e39b79..f0a7e0548 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ИнтернетПоддержкаИСервисы/Module.bsl @@ -461,7 +461,7 @@ ПараметрыФормы = Новый Структура("ОткрытиеИзПанелиАдминистрирования", Истина); ОткрытьФорму( - "Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ", + "Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы", ПараметрыФормы); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Help/ru.html index e1ee02602..a4c5f5eab 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Help/ru.html @@ -78,7 +78,7 @@ TD { Переход к просмотру списка установленных в программе исправлений (патчей).
  • Описание изменений программы
  • Просмотр списка изменений в установленной версии программы и рекомендаций по обновлению программы. -
  • Результаты обновления и дополнительная обработка данных
  • +
  • Результаты обновления и дополнительная обработка данных
  • Сведения о ходе обновления версии программы, отложенное выполнение дополнительных процедур обработки данных.
  • Детализировать ход обновления в журнале регистрации
  • При включенном флажке в журнал регистрации записываются выполняемые обработчики обновления с указанием времени выполнения.

    Оценка производительности

    diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Module.bsl index 32837f3c5..e3bc9db8d 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Обслуживание/Module.bsl @@ -70,12 +70,6 @@ Элементы.ГруппаУстановленныеИсправления.Видимость = Пользователи.ЭтоПолноправныйПользователь(); - Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() - И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Тогда - Элементы.УстановкаОбновлений.Заголовок = НСтр("ru = 'Установка обновлений'"); - Элементы.УстановкаОбновлений.РасширеннаяПодсказка.Заголовок = НСтр( - "ru = 'Обновление программы из файла на локальном диске или в сетевой папке.'"); - КонецЕсли; Иначе Элементы.ГруппаУстановкаОбновлений.Видимость = Ложь; Элементы.ГруппаУстановленныеИсправления.Видимость = Ложь; @@ -162,7 +156,7 @@ &НаКлиенте Процедура ОтложеннаяОбработкаДанных(Команда) ПараметрыФормы = Новый Структура("ОткрытиеИзПанелиАдминистрирования", Истина); - ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ", ПараметрыФормы); + ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.РезультатыОбновленияПрограммы", ПараметрыФормы); КонецПроцедуры #КонецОбласти diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl index bf080aa2a..344bc482e 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl @@ -18,10 +18,6 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - // Настройки видимости при запуске. - Элементы.Расширения.Видимость = Не (СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() - И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии()); - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); Элементы.ИспользоватьДополнительныеОтчетыИОбработки.Видимость = Не РазделениеВключено; diff --git a/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl index 9032501ed..a170aa162 100644 --- a/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl @@ -501,8 +501,6 @@ | ВерсииФайлов.Автор КАК Автор, | ВерсииФайлов.Владелец.ВладелецФайла КАК ВладелецФайла, | ВерсииФайлов.ДатаСоздания КАК ДатаСоздания, - | ВерсииФайлов.Владелец.Зашифрован КАК Зашифрован, - | ВерсииФайлов.Владелец.ПодписанЭП КАК ПодписанЭП, | &Служебный КАК Служебный, | ВерсииФайлов.Владелец.Изменил КАК Изменил, | ВерсииФайлов.Размер КАК Размер, @@ -557,8 +555,6 @@ | СправочникФайлов.Автор, | СправочникФайлов.ВладелецФайла, | СправочникФайлов.ДатаСоздания, - | СправочникФайлов.Зашифрован, - | СправочникФайлов.ПодписанЭП, | &Служебный, | СправочникФайлов.Изменил, | СправочникФайлов.Размер, diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl index 0e7791ae6..88619db2a 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl @@ -11,11 +11,6 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - ОписаниеСистемы = Новый СистемнаяИнформация; - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии("8.3.17.0", ОписаниеСистемы.ВерсияПриложения) > 0 Тогда - ВызватьИсключение НСтр("ru='Форма не предназначена для использования с платформой версии ниже 8.3.17'"); - КонецЕсли; - ТипыВнешнихСистем = ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем(); Телеграмм = СписокПодключений.ПолучитьЭлементы().Добавить(); diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl index 7754ba737..803dabac9 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl @@ -68,13 +68,13 @@ &НаСервере Процедура АктивироватьСервер() - ПараметрыИнтеграции = Новый Структура; - ПараметрыИнтеграции.Вставить("Идентификатор", Параметры.Идентификатор); - ПараметрыИнтеграции.Вставить("Ключ", Наименование); - ПараметрыИнтеграции.Вставить("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВКонтакте); - ПараметрыИнтеграции.Вставить("Участники", Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь")); - ПараметрыИнтеграции.Вставить("token", Токен); - ПараметрыИнтеграции.Вставить("groupId", ИдГруппы); + ПараметрыИнтеграции = ОбсужденияСлужебный.ПараметрыИнтеграции(); + ПараметрыИнтеграции.Идентификатор = Параметры.Идентификатор; + ПараметрыИнтеграции.Ключ = Наименование; + ПараметрыИнтеграции.Тип = ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВКонтакте; + ПараметрыИнтеграции.Участники = Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь"); + ПараметрыИнтеграции.token = Токен; + ПараметрыИнтеграции.groupId = ИдГруппы; Попытка ОбсужденияСлужебный.СоздатьИзменитьИнтеграцию(ПараметрыИнтеграции); diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl index da5769f8d..076c45b7d 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl @@ -61,12 +61,12 @@ &НаСервере Процедура АктивироватьСервер() - ПараметрыИнтеграции = Новый Структура; - ПараметрыИнтеграции.Вставить("Идентификатор", Параметры.Идентификатор); - ПараметрыИнтеграции.Вставить("Ключ", Наименование); - ПараметрыИнтеграции.Вставить("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Телеграм); - ПараметрыИнтеграции.Вставить("Участники", Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь")); - ПараметрыИнтеграции.Вставить("token", Токен); + ПараметрыИнтеграции = ОбсужденияСлужебный.ПараметрыИнтеграции(); + ПараметрыИнтеграции.Идентификатор = Параметры.Идентификатор; + ПараметрыИнтеграции.Ключ = Наименование; + ПараметрыИнтеграции.Тип = ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Телеграм; + ПараметрыИнтеграции.Участники = Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь"); + ПараметрыИнтеграции.token = Токен; Попытка ОбсужденияСлужебный.СоздатьИзменитьИнтеграцию(ПараметрыИнтеграции); diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form index bbd73c64d..1a18759b3 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form @@ -940,7 +940,7 @@ Auto true - CommonPicture.Информация + StdPicture.Information Left true @@ -4266,7 +4266,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl index fb95bc224..65469bc9b 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl @@ -1723,7 +1723,8 @@ ПараметрыПроцедуры.Вставить("СпособУдаления", СпособУдаления); Иначе - ВызватьИсключение НСтр("ru = 'Некорректная операция в НайтиИУдалитьДубли.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Некорректная операция %1.'"), Строка(ТекущаяСтраница)); КонецЕсли; НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl index 9b5a35d3c..e5cfbb561 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl @@ -707,8 +707,8 @@ КонецПроцедуры // Параметры: -// КоллекцияЭлементовДерева - ДанныеФормыДерева -// - ДанныеФормыЭлементДерева: +// ЭлементДеревоРазделовПоиска - ДанныеФормыДерево +// - ДанныеФормыЭлементДерева: // * Пометка - Число - обязательный реквизит дерева. // * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // ЗначениеПометки - Число - устанавливаемое значение. diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form index cd0366d40..10eb241de 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form @@ -1563,7 +1563,7 @@ Auto true - CommonPicture.Информация + StdPicture.Information Left true diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html index d776df2f0..954f73190 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html @@ -9,7 +9,7 @@
  • Автоматическое сопоставление выполняется по заданным по умолчанию полям сопоставления, при этом соблюдаются самые строгие правила сопоставления. Рекомендуется выполнить проверку результатов автоматического сопоставления данных. В списке выводится:
    • Данные, Всего принято, шт.
      -
    •  - имеются вопросы по сопоставлению объектов; +
    •  - имеются вопросы по сопоставлению объектов;
    • В этой программе, шт.
      diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form index 90049b2fa..d834c283f 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form @@ -429,7 +429,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl index 01c96a31c..8d3ca4bdb 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl @@ -107,6 +107,8 @@ ДлительнаяОперация = Ложь; ДлительнаяОперацияЗавершена = Истина; + ИдентификаторЗадания = Неопределено; + ПерейтиДалее(); Иначе @@ -663,8 +665,18 @@ &НаКлиенте Процедура ОтменитьСозданиеАвтономногоРабочегоМеста(Результат, ДополнительныеПараметры) Экспорт + Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда + + УзелОбмена = ОтменитьВыполнениеЗадания(ИдентификаторЗадания, Объект.АвтономноеРабочееМесто); + Если ЗначениеЗаполнено(УзелОбмена) Тогда + Объект.АвтономноеРабочееМесто = УзелОбмена; + КонецЕсли; + + КонецЕсли; + Если Объект.АвтономноеРабочееМесто <> Неопределено Тогда ОбменДаннымиВызовСервера.УдалитьНастройкуСинхронизации(Объект.АвтономноеРабочееМесто); + Оповестить("Удаление_АвтономноеРабочееМесто"); КонецЕсли; КонецПроцедуры @@ -778,6 +790,33 @@ КонецФункции +&НаСервереБезКонтекста +Функция ОтменитьВыполнениеЗадания(Знач ИдентификаторЗадания, Знач УзелОбмена) + + ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); + + Если Не ЗначениеЗаполнено(УзелОбмена) Тогда + + ИмяПланаОбмена = АвтономнаяРаботаСлужебный.ПланОбменаАвтономнойРаботы(); + УзелОбмена = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(Строка(ИдентификаторЗадания)); + + КонецЕсли; + + Если ЗначениеЗаполнено(УзелОбмена) Тогда + + Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС"); + МодульОбщегоНазначенияБТС.Пауза(2); + КонецЕсли; + + АвтономнаяРаботаСлужебный.УдалитьНеактуальныеСообщенияОбмена(УзелОбмена); + + КонецЕсли; + + Возврат УзелОбмена; + +КонецФункции + &НаСервере Функция ПользователиСинхронизации() diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl index bcc8492ae..f6063f419 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl @@ -87,7 +87,7 @@ ВызватьИсключение; КонецПопытки; - ЗаписатьПакетУстановкиВоВременноеХранилище( + ЗаписатьНачальныйОбразАвтономногоРабочегоМеста( АдресВременногоХранилищаНачальногоОбраза, АдресВременногоХранилищаИнформацииОПакетеУстановки); @@ -97,10 +97,10 @@ #Область СлужебныеПроцедурыИФункции -Процедура ЗаписатьПакетУстановкиВоВременноеХранилище( +Процедура ЗаписатьНачальныйОбразАвтономногоРабочегоМеста( АдресВременногоХранилищаНачальногоОбраза, АдресВременногоХранилищаИнформацииОПакетеУстановки) - + КодУзлаАвтономногоРабочегоМеста = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(АвтономноеРабочееМесто, "Код"); КаталогНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( @@ -113,32 +113,74 @@ СтрЗаменить("Replica_{GUID}.zip", "GUID", КодУзлаАвтономногоРабочегоМеста)); ИдентификаторФайлаПакетаУстановки = ОбменДаннымиСервер.ПоместитьФайлВХранилище(ИмяФайлаПакетаУстановки); - КаталогУстановки = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогНачальногоОбраза, "1"); - КаталогАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогУстановки, "InfoBase"); + ПараметрыЗаписи = СтруктураПараметровЗаписиПакетаУстановки(); + ПараметрыЗаписи.АдресНачальногоОбраза = АдресВременногоХранилищаНачальногоОбраза; + ПараметрыЗаписи.АдресИнформацииОПакетеУстановки = АдресВременногоХранилищаИнформацииОПакетеУстановки; + ПараметрыЗаписи.КаталогНачальногоОбраза = КаталогНачальногоОбраза; + ПараметрыЗаписи.ИдентификаторКаталогаНачальногоОбраза = ИдентификаторКаталогаНачальногоОбраза; + ПараметрыЗаписи.ИмяФайлаПакетаУстановки = ИмяФайлаПакетаУстановки; + ПараметрыЗаписи.ИдентификаторФайлаПакетаУстановки = ИдентификаторФайлаПакетаУстановки; - ИмяФайлаДанныхНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогАрхива, "data.xml"); + Попытка + + ЗаписатьПакетУстановкиВоВременноеХранилище(ПараметрыЗаписи); + + Исключение + + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + УдаляемыеФайлы = Новый Массив(); + УдаляемыеФайлы.Добавить( + СтруктураПараметровУдаленияФайла(КаталогНачальногоОбраза, ИдентификаторКаталогаНачальногоОбраза)); + УдаляемыеФайлы.Добавить( + СтруктураПараметровУдаленияФайла(ИмяФайлаПакетаУстановки, ИдентификаторФайлаПакетаУстановки)); + + Для Каждого ПараметрыУдаления Из УдаляемыеФайлы Цикл + + Попытка + ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ПараметрыУдаления.Идентификатор); + УдалитьФайлы(ПараметрыУдаления.ИмяФайла); + Исключение + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + + КонецЦикла; + + ВызватьИсключение; + + КонецПопытки; + +КонецПроцедуры + +Процедура ЗаписатьПакетУстановкиВоВременноеХранилище(ПараметрыЗаписи) + + КаталогУстановки = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ПараметрыЗаписи.КаталогНачальногоОбраза, "1"); + КаталогАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогУстановки, "InfoBase"); СоздатьКаталог(КаталогАрхива); // Создаем начальный образ автономного рабочего места. СтрокаСоединения = "File = ""&КаталогИнформационнойБазы"""; - СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "&КаталогИнформационнойБазы", СокрЛП(КаталогНачальногоОбраза)); + СтрокаСоединения = СтрЗаменить( + СтрокаСоединения, "&КаталогИнформационнойБазы", СокрЛП(ПараметрыЗаписи.КаталогНачальногоОбраза)); - ПотокПриемник = ФайловыеПотоки.Создать(ИмяФайлаДанныхНачальногоОбраза); - - ВыгруженныеДанные = Новый ЗаписьXML; - ВыгруженныеДанные.ОткрытьПоток(ПотокПриемник); - - ВыгруженныеДанные.ЗаписатьОбъявлениеXML(); - ВыгруженныеДанные.ЗаписатьНачалоЭлемента("Data"); - ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema"); - ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); - ВыгруженныеДанные.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); + ПараметрыВыгрузки = СтруктураПараметровВыгрузкиДанных(); + ПараметрыВыгрузки.КаталогАрхива = КаталогАрхива; АвтономноеРабочееМестоОбъект = АвтономноеРабочееМесто.ПолучитьОбъект(); - АвтономноеРабочееМестоОбъект.ДополнительныеСвойства.Вставить("ВыгруженныеДанные", ВыгруженныеДанные); АвтономноеРабочееМестоОбъект.ДополнительныеСвойства.Вставить("РазмещатьФайлыВНачальномОбразе"); АвтономноеРабочееМестоОбъект.ДополнительныеСвойства.Вставить("СвойстваМетаданных", Новый Соответствие); + АвтономноеРабочееМестоОбъект.ДополнительныеСвойства.Вставить("ПараметрыВыгрузки", ПараметрыВыгрузки); // Обновляем повторно используемые значения Механизма регистрации объектов. ОбменДаннымиСлужебный.ПроверитьКэшМеханизмаРегистрацииОбъектов(); @@ -153,7 +195,9 @@ // Хранить настройки для автономного рабочего места в ИБ небезопасно. Константы.НастройкиПодчиненногоУзлаРИБ.Установить(""); - ВыгруженныеДанные = Неопределено; + + ПараметрыВыгрузки.ВыгруженныеДанные = Неопределено; + ПараметрыВыгрузки.ПотокПриемник = Неопределено; // Удаляем автономное рабочее место АвтономнаяРаботаСлужебный.УдалитьАвтономноеРабочееМесто(Новый Структура("АвтономноеРабочееМесто", АвтономноеРабочееМесто), ""); @@ -161,14 +205,10 @@ ВызватьИсключение; КонецПопытки; - ВыгруженныеДанные.ЗаписатьКонецЭлемента(); // Data - ВыгруженныеДанные.Закрыть(); - - ПотокПриемник.Закрыть(); - ПотокПриемник = Неопределено; + АвтономнаяРаботаСлужебный.ЗакрытьЗаписьДанныхНачальногоОбраза(АвтономноеРабочееМестоОбъект, Истина); ИмяФайлаНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогНачальногоОбраза, "1Cv8.1CD"); + ПараметрыЗаписи.КаталогНачальногоОбраза, "1Cv8.1CD"); ИмяФайлаНачальногоОбразаВКаталогеАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогАрхива, "1Cv8.1CD"); @@ -184,7 +224,7 @@ ПереместитьФайл(ИмяФайлаНачальногоОбраза, ИмяФайлаНачальногоОбразаВКаталогеАрхива); - Архиватор = Новый ЗаписьZipФайла(ИмяФайлаПакетаУстановки, , , , УровеньСжатияZIP.Максимальный); + Архиватор = Новый ЗаписьZipФайла(ПараметрыЗаписи.ИмяФайлаПакетаУстановки, , , , УровеньСжатияZIP.Максимальный); Архиватор.Добавить( ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогУстановки, "*.*"), РежимСохраненияПутейZIP.СохранятьОтносительныеПути, @@ -192,8 +232,8 @@ Архиватор.Записать(); Попытка - ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ИдентификаторКаталогаНачальногоОбраза); - УдалитьФайлы(КаталогНачальногоОбраза); + ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ПараметрыЗаписи.ИдентификаторКаталогаНачальногоОбраза); + УдалитьФайлы(ПараметрыЗаписи.КаталогНачальногоОбраза); Исключение ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрации(), @@ -203,26 +243,29 @@ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; - ФайлПакетаУстановки = Новый Файл(ИмяФайлаПакетаУстановки); + ФайлПакетаУстановки = Новый Файл(ПараметрыЗаписи.ИмяФайлаПакетаУстановки); ДанныеФайла = Неопределено; ИнформацияОПакетеУстановки = Новый Структура; ИнформацияОПакетеУстановки.Вставить("РазмерФайлаПакетаУстановки", ФайлПакетаУстановки.Размер()); - ИнформацияОПакетеУстановки.Вставить("ИмяФайлаПакетаУстановки", АвтономнаяРаботаСлужебный.ИмяФайлаПакетаУстановки()); + ИнформацияОПакетеУстановки.Вставить("ИмяФайлаПакетаУстановки", АвтономнаяРаботаСлужебный.ИмяФайлаПакетаУстановки()); Если АвтономнаяРаботаСлужебный.ПоддерживаетсяПередачаБольшихФайлов() Тогда + ДанныеФайла = Новый Структура; - ДанныеФайла.Вставить("ИдентификаторФайлаПакетаУстановки", ИдентификаторФайлаПакетаУстановки); + ДанныеФайла.Вставить("ИдентификаторФайлаПакетаУстановки", ПараметрыЗаписи.ИдентификаторФайлаПакетаУстановки); ДанныеФайла.Вставить("ИмяФайлаИлиАдрес", ФайлПакетаУстановки.Имя); ДанныеФайла.Вставить("ПутьФайлаWindows", Константы.КаталогСообщенийОбменаДаннымиДляWindows.Получить()); ДанныеФайла.Вставить("ПутьФайлаLinux", Константы.КаталогСообщенийОбменаДаннымиДляLinux.Получить()); + Иначе - ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаПакетаУстановки); + + ДанныеФайла = Новый ДвоичныеДанные(ПараметрыЗаписи.ИмяФайлаПакетаУстановки); Попытка - ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ИдентификаторФайлаПакетаУстановки); - УдалитьФайлы(ИмяФайлаПакетаУстановки); + ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ПараметрыЗаписи.ИдентификаторФайлаПакетаУстановки); + УдалитьФайлы(ПараметрыЗаписи.ИмяФайлаПакетаУстановки); Исключение ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрации(), @@ -231,10 +274,11 @@ , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; + КонецЕсли; - ПоместитьВоВременноеХранилище(ДанныеФайла, АдресВременногоХранилищаНачальногоОбраза); - ПоместитьВоВременноеХранилище(ИнформацияОПакетеУстановки, АдресВременногоХранилищаИнформацииОПакетеУстановки); + ПоместитьВоВременноеХранилище(ДанныеФайла, ПараметрыЗаписи.АдресНачальногоОбраза); + ПоместитьВоВременноеХранилище(ИнформацияОПакетеУстановки, ПараметрыЗаписи.АдресИнформацииОПакетеУстановки); КонецПроцедуры @@ -341,8 +385,14 @@ Функция СоздатьАвтономноеРабочееМесто() + ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); + ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); + ИдентификаторУзла = ?(ФоновоеЗадание = Неопределено, + Новый УникальныйИдентификатор, + ФоновоеЗадание.УникальныйИдентификатор); + Результат = ПланыОбмена[АвтономнаяРаботаСлужебный.ПланОбменаАвтономнойРаботы()].СоздатьУзел(); - Результат.Код = Строка(Новый УникальныйИдентификатор); + Результат.Код = Строка(ИдентификаторУзла); Возврат Результат; @@ -378,6 +428,47 @@ КонецФункции +Функция СтруктураПараметровЗаписиПакетаУстановки() + + ПараметрыЗаписи = Новый Структура(); + ПараметрыЗаписи.Вставить("АдресНачальногоОбраза", Неопределено); + ПараметрыЗаписи.Вставить("АдресИнформацииОПакетеУстановки", Неопределено); + ПараметрыЗаписи.Вставить("КаталогНачальногоОбраза", Неопределено); + ПараметрыЗаписи.Вставить("ИдентификаторКаталогаНачальногоОбраза", Неопределено); + ПараметрыЗаписи.Вставить("ИмяФайлаПакетаУстановки", Неопределено); + ПараметрыЗаписи.Вставить("ИдентификаторФайлаПакетаУстановки", Неопределено); + + Возврат ПараметрыЗаписи; + +КонецФункции + +Функция СтруктураПараметровВыгрузкиДанных() + + ПараметрыВыгрузки = Новый Структура(); + ПараметрыВыгрузки.Вставить("ИспользоватьОптимизированнуюЗапись", + АвтономнаяРаботаСлужебный.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста()); + ПараметрыВыгрузки.Вставить("ВыгруженныеДанные", Неопределено); + ПараметрыВыгрузки.Вставить("ПотокПриемник", Неопределено); + ПараметрыВыгрузки.Вставить("КаталогАрхива", Неопределено); + ПараметрыВыгрузки.Вставить("ИмяФайлаДанных", Неопределено); + ПараметрыВыгрузки.Вставить("НомерФайла", 0); + ПараметрыВыгрузки.Вставить("ЗаписаноЭлементов", 0); + ПараметрыВыгрузки.Вставить("ЗаписаноЭлементовПослеПроверкиРазмераФайла", 0); + ПараметрыВыгрузки.Вставить("МаксимальноеКоличествоЭлементов", 50000); + ПараметрыВыгрузки.Вставить("КоличествоЭлементовПроверкиРазмераФайла", 1000); + ПараметрыВыгрузки.Вставить("МаксимальныйРазмерФайла", 1024 * 1024 * 100); // 100 Мб + + Возврат ПараметрыВыгрузки; + +КонецФункции + +Функция СтруктураПараметровУдаленияФайла(ИмяФайла, Идентификатор) + + Возврат Новый ФиксированнаяСтруктура( + "ИмяФайла, Идентификатор", ИмяФайла, Идентификатор); + +КонецФункции + #КонецОбласти #Иначе diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Form.form b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Form.form new file mode 100644 index 000000000..740ab54e0 --- /dev/null +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Form.form @@ -0,0 +1,1689 @@ + + + + <key>ru</key> + <value>Изменение префикса</value> + + + ГруппаКомпоновки + 46 + + ПанельОсновная + 3 + + СтраницаУстановкаПрефикса + 10 + + Группа2 + 204 + + КартинкаПредупреждениеНовыйПрефикс + 201 + true + true + + true + + + КартинкаПредупреждениеНовыйПрефиксРасширеннаяПодсказка + 203 + Label + true + true + + Left + + + + КартинкаПредупреждениеНовыйПрефиксКонтекстноеМеню + 202 + true + + true + true + Top + + + CommonPicture.Предупреждение32 + + + + + ДекорацияИнформация + 198 + + <key>ru</key> + <value><colorstyle -16>Внимание!</> + +Будут перенумерованы элементы справочников и документов (в разрезе организаций) с максимальным номером, которые поддерживают механизм префиксации.</value> + + true + true + + true + + + ДекорацияИнформацияРасширеннаяПодсказка + 200 + Label + true + true + + Left + + + + ДекорацияИнформацияКонтекстноеМеню + 199 + true + + true + Label + true + true + + Left + + + true + true + + true + + + Группа2РасширеннаяПодсказка + 205 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ДекорацияОтступ1 + 212 + + <key>ru</key> + <value>Декорация отступ1</value> + + true + true + + true + + + ДекорацияОтступ1РасширеннаяПодсказка + 214 + Label + true + true + + Left + + + + ДекорацияОтступ1КонтекстноеМеню + 213 + true + + true + 1 + true + + AsFileRef + + + + НовыйПрефиксИБ + 167 + true + true + + true + + + НовыйПрефиксИБ + + + НовыйПрефиксИБРасширеннаяПодсказка + 169 + Label + true + true + + Left + + + + НовыйПрефиксИБКонтекстноеМеню + 168 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Установка префикса</value> + + + СтраницаУстановкаПрефиксаРасширеннаяПодсказка + 104 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаОжидание + 11 + + ДлительнаяОперация48 + 170 + + <key>ru</key> + <value>Длительная операция48</value> + + true + true + + true + + + ДлительнаяОперация48РасширеннаяПодсказка + 172 + Label + true + true + + Left + + + + ДлительнаяОперация48КонтекстноеМеню + 171 + true + + true + true + Center + + + CommonPicture.ДлительнаяОперация48 + + + + + ДекорацияСообщениеПриОжидании + 173 + + <key>ru</key> + <value>Выполняется перенумерация. + +Операция может занять продолжительное время, пожалуйста, подождите... +</value> + + true + true + + true + + + ДекорацияСообщениеПриОжиданииРасширеннаяПодсказка + 175 + Label + true + true + + Left + + + + ДекорацияСообщениеПриОжиданииКонтекстноеМеню + 174 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница ожидание</value> + + + СтраницаОжиданиеРасширеннаяПодсказка + 106 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + auto + false + + + + СтраницаОшибка + 12 + + КартинкаПредупреждениеОшибка + 176 + + <key>ru</key> + <value>Картинка предупреждение ошибка</value> + + true + true + + true + + + КартинкаПредупреждениеОшибкаРасширеннаяПодсказка + 178 + Label + true + true + + Left + + + + КартинкаПредупреждениеОшибкаКонтекстноеМеню + 177 + true + + true + true + Top + + + CommonPicture.Предупреждение32 + + + + + Группа1 + 222 + + ДекорацияОшибка + 224 + + <key>ru</key> + <value>Ошибка</value> + + true + true + + true + + + ДекорацияОшибкаРасширеннаяПодсказка + 226 + Label + true + true + + Left + + + + ДекорацияОшибкаКонтекстноеМеню + 225 + true + + true + Label + true + true + + Left + + + + АктивныеПользователи + 227 + true + true + + true + + + АктивныеПользователиРасширеннаяПодсказка + 228 + Label + true + true + + Left + + + Hyperlink + Form.Command.АктивныеПользователи + Normal + Auto + true + true + UserCmds + Auto + + + ДекорацияПояснениеПоОшибке + 229 + + <key>ru</key> + <value>Пояснение</value> + + true + true + + true + + + ДекорацияПояснениеПоОшибкеРасширеннаяПодсказка + 231 + Label + true + true + + Left + + + + ДекорацияПояснениеПоОшибкеКонтекстноеМеню + 230 + true + + Label + 2 + true + + Left + Bottom + + + true + true + + true + + + Группа1РасширеннаяПодсказка + 223 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Ошибка</value> + + + СтраницаОшибкаРасширеннаяПодсказка + 108 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + auto + false + + + + СтраницаГотово + 13 + + КартинкаУспешноЗавершено + 182 + true + true + + true + + + КартинкаУспешноЗавершеноРасширеннаяПодсказка + 184 + Label + true + true + + Left + + + + КартинкаУспешноЗавершеноКонтекстноеМеню + 183 + true + + true + true + Center + + + CommonPicture.Успешно32 + + + + + ДекорацияУспех + 185 + + <key>ru</key> + <value>Префикс успешно изменен</value> + + true + true + + true + + + ДекорацияУспехРасширеннаяПодсказка + 187 + Label + true + true + + Left + + + + ДекорацияУспехКонтекстноеМеню + 186 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Готово</value> + + + СтраницаГотовоРасширеннаяПодсказка + 110 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Панель основная</value> + + + ПанельОсновнаяExtendedTooltip + 103 + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Компоновки</value> + + + ГруппаКомпоновкиExtendedTooltip + 95 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + РамкаПанелиНавигации + 51 + + ПанельНавигации + 1 + + СтраницаНавигацииНачало + 7 + + КоманднаяПанельСлева1 + 150 + + КомандаНазад + 72 + true + + true + + + КомандаНазадExtendedTooltip + 125 + Label + true + true + + Left + + + Form.Command.КомандаНазад + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель слева 1</value> + + + КоманднаяПанельСлева1РасширеннаяПодсказка + 151 + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельСправа1 + 70 + + КомандаДалее + 71 + true + true + + true + + true + + КомандаДалееExtendedTooltip + 126 + Label + true + true + + Left + + + Form.Command.КомандаДалее + Auto + true + true + true + UserCmds + Auto + + + КомандаОтмена + 73 + true + true + + true + + + КомандаОтменаExtendedTooltip + 127 + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель справа 1</value> + + true + + КоманднаяПанельСправа1РасширеннаяПодсказка + 124 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации начало</value> + + + СтраницаНавигацииНачалоExtendedTooltip + 123 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + + СтраницаНавигацииОжидание + 63 + + КоманднаяПанельСлева4 + 165 + true + true + + true + + + <key>ru</key> + <value>Командная панель слева 4</value> + + + КоманднаяПанельСлева4РасширеннаяПодсказка + 166 + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельСправа4 + 85 + + КомандаОтмена3 + 88 + true + true + + true + + + КомандаОтмена3ExtendedTooltip + 145 + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель справа 4</value> + + true + + КоманднаяПанельСправа4РасширеннаяПодсказка + 142 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации ожидание</value> + + + СтраницаНавигацииОжиданиеExtendedTooltip + 141 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + + СтраницаНавигацииОшибка + 8 + + КоманднаяПанельСлева2 + 155 + + КомандаВНачало + 196 + true + true + + true + + + КомандаВНачалоРасширеннаяПодсказка + 197 + Label + true + true + + Left + + + Form.Command.КомандаВНачало + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель слева 2</value> + + + КоманднаяПанельСлева2РасширеннаяПодсказка + 156 + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельСправа2 + 75 + + ПовторитьВМонопольномРежиме + 218 + true + true + + true + + + ПовторитьВМонопольномРежимеРасширеннаяПодсказка + 219 + Label + true + true + + Left + + + Form.Command.ПовторитьВМонопольномРежиме + Normal + Auto + true + true + UserCmds + Auto + + + КомандаОтмена1 + 78 + true + true + + true + + + КомандаОтмена1ExtendedTooltip + 133 + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Командная панель справа 2</value> + + true + + КоманднаяПанельСправа2РасширеннаяПодсказка + 130 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации ошибка</value> + + + СтраницаНавигацииОшибкаРасширеннаяПодсказка + 129 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + + СтраницаНавигацииОкончание + 9 + + КоманднаяПанельСлева3 + 160 + true + true + + true + + + <key>ru</key> + <value>Командная панель слева 3</value> + + + КоманднаяПанельСлева3РасширеннаяПодсказка + 161 + Label + true + true + + Left + + + CommandBar + + Left + + + + КоманднаяПанельСправа3 + 80 + + КомандаГотово + 90 + true + true + + true + + + КомандаГотовоExtendedTooltip + 138 + Label + true + true + + Left + + + Form.Command.КомандаГотово + Normal + Auto + true + true + UserCmds + Auto + + + КомандаОтмена2 + 83 + true + false + + true + + + КомандаОтмена2ExtendedTooltip + 139 + Label + true + true + + Left + + + Form.Command.КомандаОтмена + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель справа 3</value> + + true + + КоманднаяПанельСправа3РасширеннаяПодсказка + 136 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Страница навигации окончание</value> + + + СтраницаНавигацииОкончаниеExtendedTooltip + 135 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Панель навигации</value> + + true + + ПанельНавигацииExtendedTooltip + 122 + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + <key>ru</key> + <value>Рамка панели навигации</value> + + true + + РамкаПанелиНавигацииExtendedTooltip + 121 + Label + true + true + + Left + + + UsualGroup + + Vertical + Bottom + Auto + WeakSeparation + true + true + Auto + Auto + + + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwner + true + true + Vertical + true + true + true + auto + true + + Объект + 1 + + String + + + + true + + + true + +
      true
      +
      + + ПорядковыйНомерПерехода + 2 + + Number + + 3 + true + + + + true + + + true + + + + ТаблицаПереходов + 3 + + ValueTable + + + true + + + true + + + ПорядковыйНомерПерехода + 1 + + Number + + 3 + true + + + + true + + + true + + + + ИмяОсновнойСтраницы + 2 + + String + + + + true + + + true + + + + ИмяСтраницыДекорации + 3 + + String + + + + true + + + true + + + + ИмяСтраницыНавигации + 4 + + String + + + + true + + + true + + + + ИмяОбработчикаПриОткрытии + 5 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеДалее + 6 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеНазад + 7 + + String + + + + true + + + true + + + + ДлительнаяОперация + 8 + + Boolean + + + true + + + true + + + + ИмяОбработчикаДлительнойОперации + 9 + + String + + + + true + + + true + + + + + ЗакрытьФормуБезусловно + 4 + + Boolean + + + true + + + true + + + + НовыйПрефиксИБ + + <key>ru</key> + <value>Новый префикс ИБ</value> + + 5 + + String + + 2 + + + + true + + + true + + + + ИзменитьПрефиксВМонопольномРежиме + 7 + + Boolean + + + true + + + true + + + + КомандаДалее + + <key>ru</key> + <value>Далее ></value> + + 1 + + true + + + + КомандаДалее + + + DontUse + Auto + + + КомандаНазад + + <key>ru</key> + <value>< Назад</value> + + 2 + + true + + + + КомандаНазад + + + DontUse + Auto + + + КомандаОтмена + + <key>ru</key> + <value>Отмена</value> + + 3 + + true + + + + КомандаОтмена + + + DontUse + Auto + + + КомандаГотово + + <key>ru</key> + <value>Готово</value> + + 4 + + true + + + + КомандаГотово + + + DontUse + Auto + + + КомандаВНачало + + <key>ru</key> + <value>< Назад</value> + + 6 + + ru + Команда в начало + + + true + + + + КомандаВНачало + + + Auto + Auto + + + ПовторитьВМонопольномРежиме + + <key>ru</key> + <value>Повторить в монопольном режиме</value> + + 7 + + ru + Повторить в монопольном режиме + + + true + + + + ПовторитьВМонопольномРежиме + + + Auto + Auto + + + АктивныеПользователи + + <key>ru</key> + <value>Активные пользователи</value> + + 5 + + ru + Активные пользователи + + + true + + + + АктивныеПользователи + + + Auto + Auto + + + + + +
      diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Module.bsl new file mode 100644 index 000000000..a7263b2b5 --- /dev/null +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ИзменениеПрефиксаУзлаИБ/Module.bsl @@ -0,0 +1,522 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Параметры.Свойство("Префикс", НовыйПрефиксИБ); + + Элементы.АктивныеПользователи.Видимость = + ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + // Устанавливаем текущую таблицу переходов. + ЗаполнитьТаблицуПереходов(); + + // Позиционируемся на первом шаге помощника. + УстановитьПорядковыйНомерПерехода(1); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если Элементы.ПанельОсновная.ТекущаяСтраница = Элементы.СтраницаОжидание Тогда + + ТекстПредупреждения = НСтр("ru = 'Отменить перенумерацию?'"); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы( + ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезусловно"); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаДалее(Команда) + + ИзменитьПрефиксВМонопольномРежиме = Ложь; + ИзменитьПорядковыйНомерПерехода(+1); + +КонецПроцедуры + +&НаКлиенте +Процедура КомандаНазад(Команда) + + ИзменитьПорядковыйНомерПерехода(-1); + +КонецПроцедуры + +&НаКлиенте +Процедура КомандаВНачало(Команда) + + ИзменитьПорядковыйНомерПерехода(-2); + +КонецПроцедуры + +&НаКлиенте +Процедура КомандаГотово(Команда) + + ЗакрытьФормуБезусловно = Истина; + + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура КомандаОтмена(Команда) + + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПовторитьВМонопольномРежиме(Команда) + + ИзменитьПрефиксВМонопольномРежиме = Истина; + ИзменитьПорядковыйНомерПерехода(-1); + +КонецПроцедуры + +&НаКлиенте +Процедура АктивныеПользователи(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда + + ИмяФормыАктивныеПользователи = "АктивныеПользователи.Форма.АктивныеПользователи"; + ОткрытьФорму("Обработка." + ИмяФормыАктивныеПользователи, , , , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИзменитьПорядковыйНомерПерехода(Итератор) + + ОчиститьСообщения(); + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПорядковыйНомерПерехода(Знач Значение) + + ЭтоПереходДалее = (Значение > ПорядковыйНомерПерехода); + + ПорядковыйНомерПерехода = Значение; + + Если ПорядковыйНомерПерехода < 0 Тогда + + ПорядковыйНомерПерехода = 0; + + КонецЕсли; + + ПорядковыйНомерПереходаПриИзменении(ЭтоПереходДалее); + +КонецПроцедуры + +&НаКлиенте +Процедура ПорядковыйНомерПереходаПриИзменении(Знач ЭтоПереходДалее) + + // Выполняем обработчики событий перехода. + ВыполнитьОбработчикиСобытийПерехода(ЭтоПереходДалее); + + // Устанавливаем отображение страниц. + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Элементы.ПанельОсновная.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяОсновнойСтраницы]; + Элементы.ПанельНавигации.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыНавигации]; + + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяСтраницыДекорации) Тогда + + Элементы.ПанельДекорации.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыДекорации]; + + КонецЕсли; + + // Устанавливаем текущую кнопку по умолчанию. + КнопкаДалее = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "КомандаДалее"); + + Если КнопкаДалее <> Неопределено Тогда + + КнопкаДалее.КнопкаПоУмолчанию = Истина; + + Иначе + + КнопкаГотово = ПолучитьКнопкуФормыПоИмениКоманды(Элементы.ПанельНавигации.ТекущаяСтраница, "КомандаГотово"); + + Если КнопкаГотово <> Неопределено Тогда + + КнопкаГотово.КнопкаПоУмолчанию = Истина; + + КонецЕсли; + + КонецЕсли; + + Если ЭтоПереходДалее И СтрокаПереходаТекущая.ДлительнаяОперация Тогда + + ПодключитьОбработчикОжидания("ВыполнитьОбработчикДлительнойОперации", 0.1, Истина); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикиСобытийПерехода(Знач ЭтоПереходДалее) + + // Обработчики событий переходов. + Если ЭтоПереходДалее Тогда + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // Обработчик ПриПереходеДалее. + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее); + + Отказ = Ложь; + + Результат = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1; + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Иначе + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // Обработчик ПриПереходеНазад. + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад); + + Отказ = Ложь; + + Результат = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + ПорядковыйНомерПерехода = ПорядковыйНомерПерехода + 1; + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Если СтрокаПереходаТекущая.ДлительнаяОперация И Не ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + Возврат; + КонецЕсли; + + // обработчик ПриОткрытии + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда + + ИмяПроцедуры = "[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии); + + Отказ = Ложь; + ПропуститьСтраницу = Ложь; + + Результат = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1; + Возврат; + + ИначеЕсли ПропуститьСтраницу Тогда + + Если ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + Возврат; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикДлительнойОперации() + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + // Обработчик ОбработкаДлительнойОперации. + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда + + ИмяПроцедуры = "[ИмяОбработчика](Отказ, ПерейтиДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации); + + Отказ = Ложь; + ПерейтиДалее = Истина; + + Результат = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + ПорядковыйНомерПерехода = ПорядковыйНомерПерехода - 1; + Возврат; + + ИначеЕсли ПерейтиДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + Возврат; + + КонецЕсли; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + Возврат; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьКнопкуФормыПоИмениКоманды(ЭлементФормы, ИмяКоманды) + + Для Каждого Элемент Из ЭлементФормы.ПодчиненныеЭлементы Цикл + + Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Тогда + + ЭлементФормыПоИмениКоманды = ПолучитьКнопкуФормыПоИмениКоманды(Элемент, ИмяКоманды); + + Если ЭлементФормыПоИмениКоманды <> Неопределено Тогда + + Возврат ЭлементФормыПоИмениКоманды; + + КонецЕсли; + + ИначеЕсли ТипЗнч(Элемент) = Тип("КнопкаФормы") + И СтрНайти(Элемент.ИмяКоманды, ИмяКоманды) > 0 Тогда + + Возврат Элемент; + + Иначе + + Продолжить; + + КонецЕсли; + + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Функция УстановитьМонопольныйРежимНаСервере() + + Результат = Ложь; + + СеансыИнформационнойБазы = ПолучитьСеансыИнформационнойБазы(); + НомерСеансаТекущегоПользователя = НомерСеансаИнформационнойБазы(); + КоличествоАктивныхСеансов = 0; + Для Каждого СеансИБ Из СеансыИнформационнойБазы Цикл + Если СеансИБ.ИмяПриложения = "Designer" + Или СеансИБ.НомерСеанса = НомерСеансаТекущегоПользователя Тогда + Продолжить; + КонецЕсли; + КоличествоАктивныхСеансов = КоличествоАктивныхСеансов + 1; + КонецЦикла; + + ОшибкаУстановкиМонопольногоРежима = ""; + Если КоличествоАктивныхСеансов = 0 Тогда + Попытка + УстановитьМонопольныйРежим(Истина); + Результат = Истина; + Исключение + ОшибкаУстановкиМонопольногоРежима = НСтр("ru = 'Техническая информация:'") + " " + + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; + Если МонопольныйРежим() Тогда + УстановитьМонопольныйРежим(Ложь); + КонецЕсли; + Иначе + + Элементы.АктивныеПользователи.Видимость = Истина; + Элементы.ДекорацияПояснениеПоОшибке.Видимость = Истина; + + Элементы.ДекорацияОшибка.Заголовок = НСтр("ru = 'Невозможно изменить префикс, т.к. с программой работают другие пользователи:'"); + Элементы.АктивныеПользователи.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = 'Активные пользователи (%1)'"), КоличествоАктивныхСеансов); + Элементы.ДекорацияПояснениеПоОшибке.Заголовок = НСтр("ru = 'Для продолжения необходимо завершить их работу.'") + + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура УдалитьМонопольныйРежимНаСервере() + + Если МонопольныйРежим() Тогда + УстановитьМонопольныйРежим(Ложь); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция Подключаемый_СтраницаОжидание_ПриОткрытии(Отказ, ПропуститьСтраницу, Знач ЭтоПереходДалее) + + Если ИзменитьПрефиксВМонопольномРежиме Тогда + Если НЕ УстановитьМонопольныйРежимНаСервере() Тогда + ИзменитьПорядковыйНомерПерехода(+1); + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + + ФоновоеЗадание = ЗапуститьИзменениеПрефиксаИБВФоновомЗадании(); + + НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + НастройкиОжидания.ВыводитьОкноОжидания = Ложь; + + Обработчик = Новый ОписаниеОповещения("ПослеИзмененияПрефикса", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ФоновоеЗадание, Обработчик, НастройкиОжидания); + + Возврат Неопределено; + +КонецФункции + +&НаСервере +Функция ЗапуститьИзменениеПрефиксаИБВФоновомЗадании() + + ПараметрыПроцедуры = Новый Структура("НовыйПрефиксИБ, ПродолжитьНумерацию", НовыйПрефиксИБ, Истина); + + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Изменение префикса'"); + ПараметрыВыполнения.ОжидатьЗавершение = 0; + + Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения,"ПрефиксацияОбъектовСлужебный.ИзменитьПрефиксИБ", ПараметрыПроцедуры); + +КонецФункции + +&НаКлиенте +Процедура ПослеИзмененияПрефикса(ФоновоеЗадание, ДополнительныеПараметры) Экспорт + + Если ФоновоеЗадание.Статус = "Выполнено" Тогда + + ИзменитьПорядковыйНомерПерехода(+2); + УдалитьМонопольныйРежимНаСервере(); + Оповестить("НаборКонстант.ПрефиксУзлаРаспределеннойИнформационнойБазы", НовыйПрефиксИБ); + + ИначеЕсли ФоновоеЗадание.Статус = "Ошибка" Тогда + + Элементы.АктивныеПользователи.Видимость = Ложь; + Элементы.ДекорацияПояснениеПоОшибке.Видимость = Ложь; + + Шаблон = НСтр("ru = '%1 + | + |Запустите операцию позже или повторите попытку в монопольном режиме'"); + + Элементы.ДекорацияОшибка.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(Шаблон, ФоновоеЗадание.КраткоеПредставлениеОшибки); + ИзменитьПорядковыйНомерПерехода(+1); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьТаблицуПереходов() + + ТаблицаПереходов.Очистить(); + + Переход = ТаблицаПереходов.Добавить(); + Переход.ПорядковыйНомерПерехода = 1; + Переход.ИмяОсновнойСтраницы = "СтраницаУстановкаПрефикса"; + Переход.ИмяСтраницыНавигации = "СтраницаНавигацииНачало"; + + Переход = ТаблицаПереходов.Добавить(); + Переход.ПорядковыйНомерПерехода = 2; + Переход.ИмяОсновнойСтраницы = "СтраницаОжидание"; + Переход.ИмяСтраницыНавигации = "СтраницаНавигацииОжидание";; + Переход.ИмяОбработчикаПриОткрытии = "Подключаемый_СтраницаОжидание_ПриОткрытии"; + + Переход = ТаблицаПереходов.Добавить(); + Переход.ПорядковыйНомерПерехода = 3; + Переход.ИмяОсновнойСтраницы = "СтраницаОшибка"; + Переход.ИмяСтраницыНавигации = "СтраницаНавигацииОшибка"; + + Переход = ТаблицаПереходов.Добавить(); + Переход.ПорядковыйНомерПерехода = 4; + Переход.ИмяОсновнойСтраницы = "СтраницаГотово"; + Переход.ИмяСтраницыНавигации = "СтраницаНавигацииОкончание"; + +КонецПроцедуры + + + +#КонецОбласти diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаПодключения/Form.form b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаПодключения/Form.form index b0e23392b..afcde4fd4 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаПодключения/Form.form +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаПодключения/Form.form @@ -4829,7 +4829,7 @@ 798 <key>ru</key> - <value><color #ff0000>Внимание! + <value><color #FF0000>Внимание! </> Данная операция необратима и предназначена только для устранения ошибки синхронизации, связанной с дублированием настроек обмена в информационных базах, которые были получены путем копирования. @@ -6695,7 +6695,8 @@ 38 - CatalogRef.УчетныеЗаписиЭлектроннойПочты + String + true @@ -7764,7 +7765,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаСинхронизации/Form.form b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаСинхронизации/Form.form index 16fcac49a..57b3a5097 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаСинхронизации/Form.form +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/НастройкаСинхронизации/Form.form @@ -2413,7 +2413,7 @@ true - CommonPicture.Информация + CommonPicture.УдалитьИнформация diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/УдалениеНастройкиСинхронизации/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/УдалениеНастройкиСинхронизации/Module.bsl index ea2090d44..393abb091 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/УдалениеНастройкиСинхронизации/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/УдалениеНастройкиСинхронизации/Module.bsl @@ -27,6 +27,9 @@ &НаКлиенте Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + ЗакрытьФормуБезусловно = ЗакрытьФормуБезусловно + Или Элементы.ПанельОсновная.ТекущаяСтраница = Элементы.СтраницаОкончание; + ТекстПредупреждения = НСтр("ru = 'Отказаться от удаления настройки синхронизации данных?'"); ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы( ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезусловно"); diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ПомощникСозданияОбменаДанными.mdo b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ПомощникСозданияОбменаДанными.mdo index e7da68d27..d7cc33a8f 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ПомощникСозданияОбменаДанными.mdo +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ПомощникСозданияОбменаДанными.mdo @@ -948,4 +948,13 @@ PersonalComputer MobileDevice + + ИзменениеПрефиксаУзлаИБ + + ru + Изменение префикса узла ИБ + + PersonalComputer + MobileDevice + diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Form.form index cf3514e7e..6862b10e9 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Form.form @@ -1285,7 +1285,7 @@ СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодпись 246 - СписокКонтекстноеМенюЭППодписать + СписокКонтекстноеМенюПодписать 80 true true @@ -1293,7 +1293,7 @@ true - СписокКонтекстноеМенюЭППодписатьРасширеннаяПодсказка + СписокКонтекстноеМенюПодписатьРасширеннаяПодсказка 150 Label true @@ -1311,7 +1311,7 @@ Auto - СписокКонтекстноеМенюДобавитьЭПИзФайла + СписокКонтекстноеМенюДобавитьПодписьИзФайла 81 true true @@ -1319,7 +1319,7 @@ true - СписокКонтекстноеМенюДобавитьЭПИзФайлаРасширеннаяПодсказка + СписокКонтекстноеМенюДобавитьПодписьИзФайлаРасширеннаяПодсказка 151 Label true @@ -1337,7 +1337,7 @@ Auto - СписокКонтекстноеМенюСохранитьВместеСЭП + СписокКонтекстноеМенюСохранитьВместеСПодписью 82 true true @@ -1345,7 +1345,7 @@ true - СписокКонтекстноеМенюСохранитьВместеСЭПРасширеннаяПодсказка + СписокКонтекстноеМенюСохранитьВместеСПодписьюРасширеннаяПодсказка 152 Label true @@ -2544,7 +2544,7 @@ ФормаГруппаКомандЭлектроннаяПодпись 244 - ФормаЭППодписать + ФормаПодписать 75 true true @@ -2552,7 +2552,7 @@ true - ФормаЭППодписатьРасширеннаяПодсказка + ФормаПодписатьРасширеннаяПодсказка 111 Label true @@ -2570,33 +2570,7 @@ Auto - ФормаСохранитьВместеСЭП - 73 - true - true - - true - - - ФормаСохранитьВместеСЭПРасширеннаяПодсказка - 112 - Label - true - true - - Left - - - Form.Command.СохранитьВместеСЭП - Normal - Auto - true - true - UserCmds - Auto - - - ФормаДобавитьЭПИзФайла + ФормаДобавитьПодписьИзФайла 74 true true @@ -2604,7 +2578,7 @@ true - ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка + ФормаДобавитьПодписьИзФайлаРасширеннаяПодсказка 113 Label true @@ -2621,6 +2595,32 @@ UserCmds Auto + + ФормаСохранитьВместеСПодписью + 73 + true + true + + true + + + ФормаСохранитьВместеСПодписьюРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + Form.Command.СохранитьВместеСЭП + Normal + Auto + true + true + UserCmds + Auto + true true diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form index bcb8b727d..ba0ae8abd 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form @@ -590,7 +590,7 @@ ФормаГруппаКомандЭлектроннаяПодпись 129 - ФормаПодписатьФайлЭП + ФормаПодписать 19 true true @@ -598,7 +598,7 @@ true - ФормаПодписатьФайлЭПРасширеннаяПодсказка + ФормаПодписатьРасширеннаяПодсказка 71 Label true @@ -616,7 +616,7 @@ Auto - ФормаДобавитьЭПИзФайла + ФормаДобавитьПодписьИзФайла 20 true true @@ -624,7 +624,7 @@ true - ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка + ФормаДобавитьПодписьИзФайлаРасширеннаяПодсказка 72 Label true @@ -642,7 +642,7 @@ Auto - ФормаСохранитьВместеСЭП + ФормаСохранитьВместеСПодписью 21 true true @@ -650,7 +650,7 @@ true - ФормаСохранитьВместеСЭПРасширеннаяПодсказка + ФормаСохранитьВместеСПодписьюРасширеннаяПодсказка 73 Label true @@ -4833,7 +4833,6 @@ ПроверитьЭП - true DontUse Auto @@ -4878,7 +4877,6 @@ ПроверитьВсе - true DontUse Auto diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl index 936f9563d..2e075da41 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl @@ -19,7 +19,12 @@ ПрисоединенныйФайл = Параметры.Ключ; КонецЕсли; - ДоступнаЭлектроннаяПодпись = РаботаСФайламиСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(ПрисоединенныйФайл)); + Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда + ДоступнаЭлектроннаяПодпись = РаботаСФайламиСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(Параметры.ЗначениеКопирования)); + Иначе + ДоступнаЭлектроннаяПодпись = РаботаСФайламиСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(ПрисоединенныйФайл)); + КонецЕсли; + ТекущийПользователь = Пользователи.АвторизованныйПользователь(); ИзменениеФайлов = Пользователи.ЭтоПолноправныйПользователь(); @@ -525,6 +530,10 @@ &НаКлиенте Процедура ПроверитьЭП(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + Если Элементы.ЭлектронныеПодписи.ВыделенныеСтроки.Количество() = 0 Тогда Возврат; КонецЕсли; @@ -540,6 +549,10 @@ &НаКлиенте Процедура ПроверитьВсе(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + ДанныеФайла = ДанныеФайла(ТекущаяСсылкаНаФайл(), УникальныйИдентификатор); РаботаСФайламиСлужебныйКлиент.ПроверитьПодписи(ЭтотОбъект, ДанныеФайла.СсылкаНаДвоичныеДанныеФайла); @@ -570,6 +583,10 @@ &НаКлиенте Процедура УдалитьЭП(Команда) + Если ЭтоНовый() Тогда + Возврат; + КонецЕсли; + ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьЭПОтветПолучен", ЭтотОбъект); ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Удалить выделенные подписи?'"), РежимДиалогаВопрос.ДаНет); @@ -615,7 +632,7 @@ &НаКлиенте Процедура УстановитьДоступностьКомандСпискаЭП() - РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.УстановитьДоступностьКомандСпискаЭлектронныхПодписей(ЭтотОбъект, ЭтоНовый()); КонецПроцедуры @@ -1046,12 +1063,12 @@ ИменаКоманд = Новый Соответствие; ИменаЭлементов = Новый Массив; - ИменаЭлементов.Добавить("ФормаПодписатьФайлЭП"); + ИменаЭлементов.Добавить("ФормаПодписать"); ИменаЭлементов.Добавить("ЭлектронныеПодписиПодписать"); ИменаКоманд.Вставить("Подписать", ИменаЭлементов); ИменаЭлементов = Новый Массив; - ИменаЭлементов.Добавить("ФормаДобавитьЭПИзФайла"); + ИменаЭлементов.Добавить("ФормаДобавитьПодписьИзФайла"); ИменаКоманд.Вставить("ДобавитьЭПИзФайла", ИменаЭлементов); ИменаЭлементов = Новый Массив; @@ -1072,10 +1089,6 @@ ИменаЭлементов.Добавить("ФормаЗакончитьРедактирование"); ИменаКоманд.Вставить("ЗакончитьРедактирование", ИменаЭлементов); - ИменаЭлементов = Новый Массив; - ИменаЭлементов.Добавить("ФормаДобавитьЭПИзФайла"); - ИменаКоманд.Вставить("Освободить", ИменаЭлементов); - ИменаЭлементов = Новый Массив; ИменаЭлементов.Добавить("ФормаСохранитьИзменения"); ИменаКоманд.Вставить("СохранитьИзменения", ИменаЭлементов); diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl index 210ecc0d7..b169eece6 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl @@ -852,7 +852,9 @@ ДанныеВыбора = СписокАвтоподбораЗемельныхУчастков(Идентификатор, Текст + "%"); КонецЕсли; - СтандартнаяОбработка = (ДанныеВыбора.Количество() = 0); + Если ДанныеВыбора.Количество() > 0 Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; КонецЕсли; КонецЕсли; diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl index c6238d4aa..de0c7fcf7 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl @@ -1644,11 +1644,11 @@ // ** ГородСокращение - Строка - сокращение города (только для адресов РФ). // ** НаселенныйПункт - Строка - текстовое представление населенного пункта (только для адресов РФ). // ** НаселенныйПунктСокращение - сокращение населенного пункта (если СтарыйСоставПолей = Ложь). -// ** ТипДома - Строка - см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ(). +// ** ТипДома - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // ** Дом - Строка - текстовое представление дома (только для адресов РФ). -// ** ТипКорпуса - Строка - см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ(). +// ** ТипКорпуса - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // ** Корпус - Строка - текстовое представление корпуса (только для адресов РФ). -// ** ТипКвартиры - Строка - см. РаботаСАдресамиКлиентСервер.ТипыОбъектовАдресацииАдресаРФ(). +// ** ТипКвартиры - см. РаботаСАдресами.ТипыОбъектовАдресацииАдресаРФ. // ** Квартира - Строка - текстовое представление квартиры (только для адресов РФ). // Состав значений для телефона: // ** КодСтраны - Строка - код страны. Например, +7. diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl index e6da7c8bd..35ed56d48 100644 --- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl @@ -224,12 +224,30 @@ Значение = Данные.Регистратор; ТекИмяФормы = ЭтотОбъект().ПолучитьИмяФормы(Значение) + ".ФормаОбъекта"; Иначе + ЗаполнитьЗначенияСвойств(КлючФормыДанных, Данные); - ТекПараметры = Новый Массив; - ТекПараметры.Добавить(КлючФормыДанных); - ИмяКлючаЗаписи = СтрЗаменить(Параметры.ИмяТаблицы, ".", "КлючЗаписи."); - Значение = Новый(ИмяКлючаЗаписи, ТекПараметры); ТекИмяФормы = Параметры.ИмяТаблицы + ".ФормаЗаписи"; + + Позиция = СтрНайти(Параметры.ИмяТаблицы, "."); + Менеджер = РегистрыСведений[Сред(Параметры.ИмяТаблицы, Позиция + 1)]; + + ОбработкаОбъект = ЭтотОбъект(); + Набор = Менеджер.СоздатьНаборЗаписей(); + + Для Каждого КлючЗначение Из КлючФормыДанных Цикл + ОбработкаОбъект.УстановитьЗначениеЭлементаОтбора(Набор.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + + Набор.Прочитать(); + + Ключ = Новый Структура; + Для Каждого КолонкаНабора Из Набор.Выгрузить().Колонки Цикл + ИмяКолонки = КолонкаНабора.Имя; + Ключ.Вставить(ИмяКолонки, Набор[0][ИмяКолонки]); + КонецЦикла; + + Значение = Менеджер.СоздатьКлючЗаписи(Ключ); + КонецЕсли; КонецЕсли; diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl index 4ba8f7498..cb5b12236 100644 --- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl @@ -1329,7 +1329,10 @@ ТекДанные = Элемент.ДанныеСтроки(Строка); ДанныеСтроки = Новый Структура; Для Каждого Имя Из ИменаКлючей Цикл - ДанныеСтроки.Вставить(Имя, ТекДанные["СписокНаборовЗаписей" + Имя]); + ИмяКолонки = "СписокНаборовЗаписей" + Имя; + Если ТекДанные.Свойство(ИмяКолонки) Тогда + ДанныеСтроки.Вставить(Имя, ТекДанные[ИмяКолонки]); + КонецЕсли; КонецЦикла; Данные.Добавить(ДанныеСтроки); КонецЦикла; @@ -2685,8 +2688,12 @@ Измерения = Новый Структура; ИменаКлючей = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + Для Каждого Имя Из ИменаКлючей Цикл - Измерения.Вставить(Имя, ТекущиеДанные["СписокНаборовЗаписей" + Имя]); + ИмяКолонки = "СписокНаборовЗаписей" + Имя; + Если ТекущиеДанные.Свойство(ИмяКолонки) Тогда + Измерения.Вставить(Имя, ТекущиеДанные[ИмяКолонки]); + КонецЕсли; КонецЦикла; Если Измерения.Свойство("Регистратор") Тогда @@ -2774,6 +2781,9 @@ Результат.Вставить("ДоступнаРегистрацияСредствамиБСП", Объект.ДоступнаРегистрацияСредствамиБСП); Результат.Вставить("ДоступнаРаботаРИБ", Объект.ДоступнаРаботаРИБ); Результат.Вставить("НастройкаКонтрольВыгрузкиОбъектов", Объект.НастройкаКонтрольВыгрузкиОбъектов); + + Результат.Вставить("СтруктураИменМетаданных", СтруктураИменМетаданных); + Возврат Результат; КонецФункции diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl index c2dc7b151..acc9f1337 100644 --- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl @@ -590,7 +590,7 @@ НастройкаКонтрольВыгрузкиОбъектов = ПараметрыЗадания.НастройкаКонтрольВыгрузкиОбъектов; РезультатВыполнения = ИзменитьРегистрациюНаСервере(ПараметрыЗадания.Команда, ПараметрыЗадания.БезУчетаАвторегистрации, - ПараметрыЗадания.Узел, ПараметрыЗадания.Данные, ИмяТаблицы); + ПараметрыЗадания.Узел, ПараметрыЗадания.Данные, ИмяТаблицы, ПараметрыЗадания.СтруктураИменМетаданных); Если АдресХранилища <> Неопределено Тогда ПоместитьВоВременноеХранилище(РезультатВыполнения, АдресХранилища); @@ -1361,7 +1361,7 @@ // * Успешно - Число - числом успешно обработанных объектов. // * Команда - значение входящего параметра Команда для упрощения обработки результатов. // -Функция ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Данные, ИмяТаблицы = Неопределено) Экспорт +Функция ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Данные, ИмяТаблицы = Неопределено, СтруктураИменМетаданных = Неопределено) Экспорт ПрочитатьНастройки(); Результат = Новый Структура("Всего, Успешно", 0, 0); @@ -1386,19 +1386,19 @@ Если ТипЗнч(Команда) = Тип("Булево") И Команда Тогда // Добавляем регистрацию по частям. - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Константы", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Справочники", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Документы", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Последовательности", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыВидовХарактеристик", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыСчетов", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыВидовРасчета", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыСведений", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыНакопления", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыБухгалтерии", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыРасчета", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "БизнесПроцессы", ИмяТаблицы) ); - ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Задачи", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Константы", ИмяТаблицы, СтруктураИменМетаданных)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Справочники", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Документы", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Последовательности", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыВидовХарактеристик", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыСчетов", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "ПланыВидовРасчета", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыСведений", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыНакопления", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыБухгалтерии", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "РегистрыРасчета", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "БизнесПроцессы", ИмяТаблицы)); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, "Задачи", ИмяТаблицы)); Продолжить; КонецЕсли; @@ -1409,7 +1409,7 @@ // Метаданные, возможно как коллекция, так и конкретный вид, на авторегистрацию смотрим. Описание = ХарактеристикиПоМетаданным(Элемент); Если НадоФильтрБСП Тогда - ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации, СтруктураИменМетаданных)); Продолжить; ИначеЕсли БезУчетаАвторегистрации Тогда @@ -1472,6 +1472,13 @@ Для Каждого КлючЗначение Из Элемент Цикл УстановитьЗначениеЭлементаОтбора(Набор.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение); КонецЦикла; + + Для Каждого Отбор Из Набор.Отбор Цикл + Если НЕ Отбор.Использование Тогда + Отбор.Использование = Истина; + КонецЕсли; + КонецЦикла; + Значения.Добавить(Набор); // Смотрим опциональные варианты. Для Каждого ТекЭлемент Из ПолучитьДополнительныеОбъектыРегистрации(Элемент, Узел, БезУчетаАвторегистрации, ИмяТаблицы) Цикл @@ -2198,14 +2205,23 @@ // Проверяет набор метаданных на возможность регистрации изменения в БСП. // Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций. // -Функция БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации) +Функция БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации, СтруктураИменМетаданных) Результат = Новый Структура("Всего, Успешно", 0, 0); + Если СтруктураИменМетаданных <> Неопределено + И Описание.ЭтоКонстанта + И Не Описание.ЭтоКоллекция + И СтруктураИменМетаданных.Константы.Найти(Описание.Имятаблицы) = Неопределено Тогда + + Возврат Результат; + + КонецЕсли; + Если Описание.ЭтоКоллекция Тогда Для Каждого МетаВид Из Описание.Метаданные Цикл ТекОписание = ХарактеристикиПоМетаданным(МетаВид); - ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ТекОписание, БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ТекОписание, БезУчетаАвторегистрации, СтруктураИменМетаданных)); КонецЦикла; Иначе; ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийОбъектаМетаданных(Узел, Описание, БезУчетаАвторегистрации) ); diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Form.form b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Form.form index b79d68b4d..59c43c04e 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Form.form +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Form.form @@ -1428,7 +1428,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Form.form b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Form.form similarity index 100% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Form.form rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Form.form diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Help/ru.html b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Help/ru.html similarity index 100% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Help/ru.html rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Help/ru.html diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Module.bsl similarity index 99% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Module.bsl index b967535c0..5e7b7df36 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеВерсииПрограммы/Module.bsl @@ -499,7 +499,6 @@ &НаКлиенте Процедура ОбработатьОшибкуПравилРегистрации(СообщенияПользователю) - // См. ОбменДаннымиСобытия.ОбработатьОшибкуПравилРегистрации Если СообщенияПользователю <> Неопределено Тогда Для Каждого СообщениеПользователю Из СообщенияПользователю Цикл diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Form.form b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Form.form index d23edd9f9..689413e4b 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Form.form +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Form.form @@ -206,7 +206,7 @@ InAdditionalSubmenu - ЗапуститьВыделенный + ЗапуститьПроцедуру 123 true true @@ -214,7 +214,7 @@ true - ЗапуститьВыделенныйРасширеннаяПодсказка + ЗапуститьПроцедуруРасширеннаяПодсказка 124 Label true @@ -223,7 +223,7 @@ Left - Form.Command.ЗапуститьВыделенный + Form.Command.ЗапуститьПроцедуру Normal Auto true @@ -232,7 +232,7 @@ Auto - Запустить + Возобновить 93 true true @@ -240,7 +240,7 @@ true - ЗапуститьРасширеннаяПодсказка + ВозобновитьРасширеннаяПодсказка 94 Label true @@ -249,7 +249,7 @@ Left - Form.Command.Запустить + Form.Command.Возобновить Normal PictureAndText true @@ -259,7 +259,7 @@ InAdditionalSubmenu - Приостановить + Остановить 95 true true @@ -267,7 +267,7 @@ true - ПриостановитьРасширеннаяПодсказка + ОстановитьРасширеннаяПодсказка 96 Label true @@ -276,7 +276,7 @@ Left - Form.Command.Приостановить + Form.Command.Остановить Normal PictureAndText true @@ -821,6 +821,10 @@ 36 Left + + Selection + ОтложенныеОбработчикиВыбор + OnActivateRow ОтложенныеОбработчикиПриАктивизацииСтроки @@ -927,7 +931,7 @@ Left - Form.Command.ЗапуститьВыделенный + Form.Command.ЗапуститьПроцедуру Normal Auto true @@ -953,7 +957,7 @@ Left - Form.Command.Приостановить + Form.Command.Остановить Normal Auto true @@ -979,7 +983,7 @@ Left - Form.Command.Запустить + Form.Command.Возобновить Normal Auto true @@ -1186,64 +1190,210 @@ Normal - - ГиперссылкаПрогрессОбновления - 120 - - <key>ru</key> - <value>Отчет по прогрессу отложенного обновления</value> - - true - true - - true - - - ГиперссылкаПрогрессОбновленияРасширеннаяПодсказка - 122 - Label - true - true - - Left - - - - ГиперссылкаПрогрессОбновленияКонтекстноеМеню - 121 - true - - Label - true - - - Click - ГиперссылкаПрогрессОбновленияНажатие - - true - Left - - - - ГиперссылкаОтложенноеОбновление - 13 - - <key>ru</key> - <value>Техническая информация о результатах обработки данных</value> - - true - true - - true - - Button - - ГиперссылкаОтложенноеОбновлениеExtendedTooltip - 29 + + ГруппаДополнительныеСведения + 129 + + ГиперссылкаПрогрессОбновления + 120 <key>ru</key> - <value>Техническая информация из журнала регистрации для обращения в службу технической поддержки.</value> + <value>Отчет по прогрессу отложенного обновления</value> + true + true + + true + + + ГиперссылкаПрогрессОбновленияРасширеннаяПодсказка + 122 + Label + true + true + + Left + + + + ГиперссылкаПрогрессОбновленияКонтекстноеМеню + 121 + true + + Label + true + + + Click + ГиперссылкаПрогрессОбновленияНажатие + + true + Left + + + + ДекорацияОтступ + 131 + true + true + + true + + + ДекорацияОтступРасширеннаяПодсказка + 133 + Label + true + true + + Left + + + + ДекорацияОтступКонтекстноеМеню + 132 + true + + Label + true + true + + Left + + + + ДекорацияЗаголовокТехническаяИнформация + 134 + + <key>ru</key> + <value>Техническая информация:</value> + + true + true + + true + + + ДекорацияЗаголовокТехническаяИнформацияРасширеннаяПодсказка + 136 + Label + true + true + + Left + + + + ДекорацияЗаголовокТехническаяИнформацияКонтекстноеМеню + 135 + true + + Label + true + true + + Left + + + + ГиперссылкаОбработчикиОбновления + 137 + + <key>ru</key> + <value>Обработчики обновления</value> + + true + true + + true + + + ru + Переход к расширенному списку обработчиков обновления с возможностью просмотра служебных сведений для расследования ошибок обновления. + + Button + + ГиперссылкаОбработчикиОбновленияРасширеннаяПодсказка + 139 + Label + true + true + + Left + + + + ГиперссылкаОбработчикиОбновленияКонтекстноеМеню + 138 + true + + Label + true + true + + + Click + ГиперссылкаОбработчикиОбновленияНажатие + + true + Left + + + + ГиперссылкаОтложенноеОбновление + 13 + + <key>ru</key> + <value>Журнал регистрации</value> + + true + true + + true + + Button + + ГиперссылкаОтложенноеОбновлениеExtendedTooltip + 29 + + <key>ru</key> + <value>Техническая информация из журнала регистрации для обращения в службу технической поддержки.</value> + + Label + true + true + + Left + + + + ГиперссылкаОтложенноеОбновлениеКонтекстноеМеню + 14 + true + + Label + true + + + Click + ГиперссылкаОтложенноеОбновлениеНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные сведения</value> + + + ГруппаДополнительныеСведенияРасширеннаяПодсказка + 130 Label true true @@ -1251,20 +1401,14 @@ Left - - ГиперссылкаОтложенноеОбновлениеКонтекстноеМеню - 14 - true - - Label - true - - - Click - ГиперссылкаОтложенноеОбновлениеНажатие - - true - Left + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto @@ -1388,7 +1532,7 @@ UsualGroup - Vertical + AlwaysHorizontal Auto NormalSeparation true @@ -1459,10 +1603,6 @@ Right - - OnOpen - ПриОткрытии - OnCreateAtServer ПриСозданииНаСервере @@ -1666,8 +1806,7 @@ Статус 8 - String - + EnumRef.СтатусыОбработчиковОбновления true @@ -1975,7 +2114,7 @@ Auto - Приостановить + Остановить <key>ru</key> <value>Остановить</value> @@ -2000,7 +2139,7 @@ <selectedRowsUse>Auto</selectedRowsUse> </formCommands> <formCommands> - <name>Запустить</name> + <name>Возобновить</name> <title> <key>ru</key> <value>Возобновить</value> @@ -2095,7 +2234,7 @@ <selectedRowsUse>Auto</selectedRowsUse> </formCommands> <formCommands> - <name>ЗапуститьВыделенный</name> + <name>ЗапуститьПроцедуру</name> <title> <key>ru</key> <value>Запустить процедуру</value> diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Help/ru.html b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Help/ru.html index 8a69f9cd2..1e520ddca 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Help/ru.html +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Help/ru.html @@ -1,6 +1,6 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.16428"></meta></head><body> <p>Предназначен для просмотра дополнительных процедур обработки данных, которые проходят после <a href="DataProcessor.РезультатыОбновленияПрограммы/Help">обновления версии</a> отложенно, в фоновом режиме.</p> -<p>Список можно открыть, перейдя по соответствующей ссылке из окна <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">Результаты обновления программы</a>, в которое можно перейти по команде <strong>Результаты обновления и дополнительная обработка данных</strong> раздела <strong>Администрирование - Обслуживание - Обновление программы</strong>.</p> +<p>Список можно открыть, перейдя по соответствующей ссылке из окна <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.РезультатыОбновленияПрограммы/Help">Результаты обновления программы</a>, в которое можно перейти по команде <strong>Результаты обновления и дополнительная обработка данных</strong> раздела <strong>Администрирование - Обслуживание - Обновление программы</strong>.</p> <p>В списке выводится:</p> <ul><li> <div><strong>Процедура обработки данных</strong> - наименование процедуры дополнительной обработки данных и ее подробное описание.</div> diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl index 0cefa3854..0437a5d0a 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl @@ -20,8 +20,8 @@ ПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(, Ложь); Если Не ПолноправныйПользователь Тогда Элементы.ГруппаПовторныйЗапуск.Видимость = Ложь; - Элементы.Запустить.Видимость = Ложь; - Элементы.Приостановить.Видимость = Ложь; + Элементы.Возобновить.Видимость = Ложь; + Элементы.Остановить.Видимость = Ложь; Элементы.ГруппаПорядок.Видимость = Ложь; Элементы.КонтекстноеМенюПриостановить.Видимость = Ложь; Элементы.КонтекстноеМенюЗапустить.Видимость = Ложь; @@ -37,7 +37,7 @@ Если Не ОбщегоНазначения.РежимОтладки() Или СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Истина Тогда - Элементы.ЗапуститьВыделенный.Видимость = Ложь; + Элементы.ЗапуститьПроцедуру.Видимость = Ложь; Элементы.КонтекстноеМенюЗапуститьВыделенный.Видимость = Ложь; КонецЕсли; @@ -69,15 +69,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ПриОткрытии(Отказ) - - Если ОбновлениеВыполняется Тогда - ПодключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков", 15); - КонецЕсли; - -КонецПроцедуры - #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы @@ -89,29 +80,29 @@ Возврат; КонецЕсли; - Если Элемент.ТекущиеДанные.Статус = "Выполняется" Тогда + Если Элемент.ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыОбработчиковОбновления.Выполняется") Тогда Элементы.КонтекстноеМенюЗапустить.Доступность = Ложь; Элементы.КонтекстноеМенюПриостановить.Доступность = Истина; - Элементы.Запустить.Доступность = Ложь; - Элементы.Приостановить.Доступность = Истина; - ИначеЕсли Элемент.ТекущиеДанные.Статус = "Приостановлен" Тогда + Элементы.Возобновить.Доступность = Ложь; + Элементы.Остановить.Доступность = Истина; + ИначеЕсли Элемент.ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыОбработчиковОбновления.Приостановлен") Тогда Элементы.КонтекстноеМенюЗапустить.Доступность = Истина; Элементы.КонтекстноеМенюПриостановить.Доступность = Ложь; - Элементы.Запустить.Доступность = Истина; - Элементы.Приостановить.Доступность = Ложь; + Элементы.Возобновить.Доступность = Истина; + Элементы.Остановить.Доступность = Ложь; Иначе Элементы.КонтекстноеМенюЗапустить.Доступность = Ложь; Элементы.КонтекстноеМенюПриостановить.Доступность = Ложь; - Элементы.Запустить.Доступность = Ложь; - Элементы.Приостановить.Доступность = Ложь; + Элементы.Возобновить.Доступность = Ложь; + Элементы.Остановить.Доступность = Ложь; КонецЕсли; Если Не ОбновлениеВыполняется - И Элемент.ТекущиеДанные.Статус <> "Выполнено" Тогда - Элементы.ЗапуститьВыделенный.Доступность = Истина; + И Элемент.ТекущиеДанные.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыОбработчиковОбновления.Выполнен") Тогда + Элементы.ЗапуститьПроцедуру.Доступность = Истина; Элементы.КонтекстноеМенюЗапуститьВыделенный.Доступность = Истина; Иначе - Элементы.ЗапуститьВыделенный.Доступность = Ложь; + Элементы.ЗапуститьПроцедуру.Доступность = Ложь; Элементы.КонтекстноеМенюЗапуститьВыделенный.Доступность = Ложь; КонецЕсли; @@ -119,6 +110,38 @@ КонецПроцедуры +&НаКлиенте +Процедура ГиперссылкаОбработчикиОбновленияНажатие(Элемент) + ОтборСписка = Новый Структура; + ОтборСписка.Вставить("РежимВыполнения", ПредопределенноеЗначение("Перечисление.РежимыВыполненияОбработчиков.Отложенно")); + + ОткрытьФорму("РегистрСведений.ОбработчикиОбновления.ФормаСписка", ОтборСписка); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыОтложенныеОбработчики + +&НаКлиенте +Процедура ОтложенныеОбработчикиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если Элемент.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ИмяОбработчика = Элемент.ТекущиеДанные.Идентификатор; + + Отбор = Новый Структура("ИмяОбработчика",ИмяОбработчика); + + ТипЗначения = Тип("РегистрСведенийКлючЗаписи.ОбработчикиОбновления"); + ПараметрыЗаписи = Новый Массив(1); + ПараметрыЗаписи[0] = Отбор; + + КлючЗаписи = Новый(ТипЗначения, ПараметрыЗаписи); + ПоказатьЗначение(Неопределено, КлючЗаписи); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -214,7 +237,7 @@ ПроцедураОбновления = ТекущиеДанные.Идентификатор; ЗапуститьВыполнениеОтложенногоОбработчика(ПроцедураОбновления); Оповестить("ОтложенноеОбновление"); - ПодключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков", 15); + ПодключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков", 1, Истина); КонецПроцедуры @@ -308,7 +331,7 @@ КонецЕсли; Если Элемент.ТекущиеДанные.Приоритет = "Неопределено" - Или Элемент.ТекущиеДанные.Статус = "Выполнено" Тогда + Или Элемент.ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыОбработчиковОбновления.Выполнен") Тогда Элементы.ВПлановомПорядке.Доступность = Ложь; Элементы.ВПлановомПорядкеКонтекстноеМеню.Доступность = Ложь; Элементы.ЖелательноБыстрее.Доступность = Ложь; @@ -405,9 +428,6 @@ ВыполненыВсеОбработчики = Истина; СформироватьТаблицуОтложенныхОбработчиков(ВыполненыВсеОбработчики); - Если Не ПоКоманде И ВыполненыВсеОбработчики Тогда - ОтключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков"); - КонецЕсли; КонецПроцедуры @@ -519,9 +539,9 @@ КонецЕсли; Если ОбработчикиНеВыполнялись Тогда - Элементы.ТекстПояснения.Заголовок = НСтр("ru = 'Рекомендуется запустить невыполненные процедуры обработки данных.'"); + Элементы.ТекстПояснения.Заголовок = НСтр("ru = 'Рекомендуется Возобновить невыполненные процедуры обработки данных.'"); Иначе - Элементы.ТекстПояснения.Заголовок = НСтр("ru = 'Невыполненные процедуры рекомендуется запустить повторно.'"); + Элементы.ТекстПояснения.Заголовок = НСтр("ru = 'Невыполненные процедуры рекомендуется Возобновить повторно.'"); КонецЕсли; НомерЭлемента = 1; @@ -573,19 +593,17 @@ ШаблонИнформацияОПроцедуреОбновления = НСтр("ru = 'Процедура ""%1"" обработки данных %2.'"); - СтрокаСписка.Статус = ?(СтрокаОбработчика.Статус = "НеВыполнено", "НеЗапускалась", СтрокаОбработчика.Статус); + СтрокаСписка.Статус = СтрокаОбработчика.Статус; Если СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Выполнен Тогда ОбработчикиНеВыполнялись = Ложь; ПредставлениеСтатусаВыполнения = НСтр("ru = 'завершилась успешно'"); СтрокаСписка.СтатусПредставление = НСтр("ru = 'Выполнено'"); - СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Успешно; СтрокаСписка.ДлительностьВыполнения = ДлительностьВыполненияПроцедурыОбновления(ДлительностьВыполнения); ИначеЕсли СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Выполняется Тогда ОбработчикиНеВыполнялись = Ложь; ВыполненыВсеОбработчики = Ложь; - СтрокаСписка.СтатусКартинка = Новый Картинка; ПредставлениеСтатусаВыполнения = НСтр("ru = 'в данный момент выполняется'"); Если Прогресс <> Неопределено Тогда ШаблонСтатус = НСтр("ru = 'Выполняется (%1%)'"); @@ -601,7 +619,6 @@ ПредставлениеСтатусаВыполнения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПредставлениеСтатусаВыполнения, СтрокаОбработчика.ИмяОбработчика); СтрокаСписка.ИнформацияОПроцедуреОбновления = ПредставлениеСтатусаВыполнения + СтрокаОбработчика.ИнформацияОбОшибке; СтрокаСписка.СтатусПредставление = НСтр("ru = 'Ошибка'"); - СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Остановить; СтрокаСписка.ДлительностьВыполнения = ДлительностьВыполненияПроцедурыОбновления(ДлительностьВыполнения); ИначеЕсли СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Приостановлен Тогда @@ -609,7 +626,6 @@ ВыполненыВсеОбработчики = Ложь; ПредставлениеСтатусаВыполнения = НСтр("ru = 'остановлена администратором'"); СтрокаСписка.СтатусПредставление = НСтр("ru = 'Остановлено'"); - СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.ЗнакСтоп; Иначе ВыполненыВсеОбработчики = Ложь; diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Form.form similarity index 64% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Form.form index 611e3d6a1..f551354b8 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Form.form @@ -30,6 +30,7 @@ <id>258</id> <autoFill>true</autoFill> </contextMenu> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> @@ -143,6 +144,7 @@ <id>84</id> <autoFill>true</autoFill> </contextMenu> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> @@ -243,6 +245,7 @@ <id>189</id> <autoFill>true</autoFill> </contextMenu> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> @@ -430,7 +433,7 @@ <autoFill>true</autoFill> </contextMenu> <type>Label</type> - <width>3</width> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:LabelDecorationExtInfo"> @@ -751,6 +754,7 @@ <id>33</id> <autoFill>true</autoFill> </contextMenu> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> @@ -1011,6 +1015,7 @@ <id>122</id> <autoFill>true</autoFill> </contextMenu> + <width>5</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <extInfo xsi:type="form:PictureDecorationExtInfo"> @@ -1248,23 +1253,19 @@ </extInfo> </items> <items xsi:type="form:FormGroup"> - <name>ГруппаИнформацияОПрогрессе</name> - <id>6</id> + <name>ГруппаШапкаОбновлениеНеВыполняется</name> + <id>278</id> <items xsi:type="form:Decoration"> - <name>ИнформацияСтатусОбновления</name> - <id>9</id> - <title> - <key>ru</key> - <value>Выполнено: %1 из %2</value> - + КартинкаОбновлениеНеВыполняется + 280 true true true - ИнформацияСтатусОбновленияExtendedTooltip - 155 + КартинкаОбновлениеНеВыполняетсяРасширеннаяПодсказка + 282 Label true true @@ -1273,21 +1274,690 @@ - ИнформацияСтатусОбновленияКонтекстноеМеню - 10 + КартинкаОбновлениеНеВыполняетсяКонтекстноеМеню + 281 true + true + true + + + CommonPicture.ОжидаемаяДлительнаяОперация48 + + AsFileRef + + + + ПояснениеОбновлениеНеВыполняется + 283 + + <key>ru</key> + <value>Дополнительные процедуры обработки данных не выполняются, т.к. отключено регламентное задание "Отложенное обновление". +<link Включить>Включить</></value> + + true + true + + true + + + ПояснениеОбновлениеНеВыполняетсяРасширеннаяПодсказка + 285 + Label + true + true + + Left + + + + ПояснениеОбновлениеНеВыполняетсяКонтекстноеМеню + 284 + true + + true Label + 50 true - Click - ИнформацияСтатусОбновленияНажатие + URLProcessing + ПояснениеОбновлениеНеВыполняетсяОбработкаНавигационнойСсылки - true Left + true + + true + + + <key>ru</key> + <value>Шапка обновление не выполняется</value> + + + ГруппаШапкаОбновлениеНеВыполняетсяРасширеннаяПодсказка + 279 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаИнформацияОПрогрессе + 6 + + ГруппаПрогрессИОшибки + 263 + + ГруппаОтступИПрогресс + 318 + + ГруппаВыравнивание + 320 + + НадписьВыравнивание + 324 + true + true + + true + + + НадписьВыравниваниеРасширеннаяПодсказка + 326 + Label + true + true + + Left + + + + НадписьВыравниваниеКонтекстноеМеню + 325 + true + + Label + 5 + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Выравнивание</value> + + + ГруппаВыравниваниеРасширеннаяПодсказка + 321 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаПрогрессИПроблемы + 322 + + ГруппаПрогресс + 305 + + ГруппаИндикацияПроблемСОбработчиками + 333 + + ДекорацияИндикацияПроблем + 295 + true + true + + true + + + ДекорацияИндикацияПроблемРасширеннаяПодсказка + 297 + Label + true + true + + Left + + + + ДекорацияИндикацияПроблемКонтекстноеМеню + 296 + true + + true + true + Center + + + StdPicture.AppearanceExclamationMarkIcon + + AsFileRef + + + + ПроблемныеСитуации + 327 + + <key>ru</key> + <value>Проблемные ситуации</value> + + true + true + + true + + + ПроблемныеСитуацииРасширеннаяПодсказка + 329 + Label + true + true + + Left + + + + ПроблемныеСитуацииКонтекстноеМеню + 328 + true + + Label + true + true + + + Click + ПроблемныеСитуацииНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Индикация проблем с обработчиками</value> + + + ГруппаИндикацияПроблемСОбработчикамиРасширеннаяПодсказка + 334 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаИндикацияПроблемСДанными + 265 + + ДекорацияИндикацияПроблемСДанными + 312 + + <key>ru</key> + <value>Декорация индикация проблем с данными</value> + + true + true + + true + + + ДекорацияИндикацияПроблемСДаннымиРасширеннаяПодсказка + 314 + Label + true + true + + Left + + + + ДекорацияИндикацияПроблемСДаннымиКонтекстноеМеню + 313 + true + + true + true + Center + + + StdPicture.AppearanceExclamationMarkIcon + + AsFileRef + + + + ПроблемыСДанными + 330 + + <key>ru</key> + <value>Проблемы с данными</value> + + true + true + + true + + Button + + ПроблемыСДаннымиРасширеннаяПодсказка + 332 + Label + true + true + + Left + + + + ПроблемыСДаннымиКонтекстноеМеню + 331 + true + + Label + true + true + + + Click + ПроблемыСДаннымиНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Индикация проблем с данными</value> + + + ГруппаИндикацияПроблемСДаннымиРасширеннаяПодсказка + 266 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ИнформацияСтатусОбновления + 9 + + <key>ru</key> + <value>Выполнено: %1 из %2</value> + + true + true + + true + + + ИнформацияСтатусОбновленияExtendedTooltip + 155 + Label + true + true + + Left + + + + ИнформацияСтатусОбновленияКонтекстноеМеню + 10 + true + + Label + true + + + Click + ИнформацияСтатусОбновленияНажатие + + true + Left + + + + ДекорацияОтступ + 273 + true + + true + + + ДекорацияОтступРасширеннаяПодсказка + 275 + Label + true + true + + Left + + + + ДекорацияОтступКонтекстноеМеню + 274 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Прогресс</value> + + + ГруппаПрогрессРасширеннаяПодсказка + 306 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаЗацикливание + 307 + + ДекорацияПредупреждениеОЗацикливании + 309 + + <key>ru</key> + <value>За последний час не было обработано ни одного объекта, возможно произошло зацикливание обработки данных</value> + + true + + true + + + ДекорацияПредупреждениеОЗацикливанииРасширеннаяПодсказка + 311 + Label + true + true + + Left + + + + ДекорацияПредупреждениеОЗацикливанииКонтекстноеМеню + 310 + true + + Label + 55 + true + + Left + + Style.ЦветФонаВнимание + + + + true + true + + true + + + <key>ru</key> + <value>Зацикливание</value> + + + ГруппаЗацикливаниеРасширеннаяПодсказка + 308 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Прогресс и проблемы</value> + + + ГруппаПрогрессИПроблемыРасширеннаяПодсказка + 323 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Отступ и прогресс</value> + + + ГруппаОтступИПрогрессРасширеннаяПодсказка + 319 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Прогресс и ошибки</value> + + + ГруппаПрогрессИОшибкиРасширеннаяПодсказка + 264 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаОтступ + 286 + + ОтступПоВертикали + 288 + true + true + + true + + + ОтступПоВертикалиРасширеннаяПодсказка + 290 + Label + true + true + + Left + + + + ОтступПоВертикалиКонтекстноеМеню + 289 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Отступ</value> + + + ГруппаОтступРасширеннаяПодсказка + 287 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + ГруппаПриоритет 242 @@ -1383,7 +2053,7 @@ ru <b>● </><b>Работа пользователей</> - данные обрабатываются медленнее, но меньше нагрузка на сервер и влияние на работу пользователей в программе. <b>● </><b>Обработка данных</> - выше скорость обработки данных, но выше нагрузка на сервер, а так же существенное замедление работы пользователей в программе. Рекомендуется использовать в тех случаях, когда необходимо быстрее получить доступ к обрабатываемым данным. -<b>● </><fontsize 8><b>Количество</></><b> потоков</> - это количество одновременно выполняющихся обработчиков обновления. Значение по умолчанию равно 8. Рекомендуемое значение: +<b>● </><b><fontsize 8>Количество</></><b> потоков</> - это количество одновременно выполняющихся обработчиков обновления. Значение по умолчанию равно 8. Рекомендуемое значение: <b> •</> для штатного обновления до 50-75% от количества ядер, доступных кластеру серверов; <b> •</> для форсированного обновления в период минимальной активности пользователей - столько ядер, сколько доступно кластеру серверов. См. также <link http://1c.ru/news/info.jsp?id=25491>ограничение 12 ядер на сервер для версии ПРОФ платформы 1С:Предприятие</> и "<link https://v8.1c.ru/priobretenie-i-vnedrenie/otvety-na-tipovye-voprosy-po-litsenzirovaniyu-1s-predpriyatiya-8/>Какие ядра процессора следует считать — реальные или виртуальные?</>". @@ -1563,33 +2233,6 @@ UserCmds Auto - - СнятьБлокировкуРегламентныхЗаданий - 175 - true - true - - true - - - СнятьБлокировкуРегламентныхЗаданийРасширеннаяПодсказка - 176 - Label - true - true - - Left - - - Hyperlink - Form.Command.СнятьБлокировкуРегламентныхЗаданий - Normal - Auto - true - true - UserCmds - Auto - true true @@ -1764,6 +2407,7 @@ 44 true + 5 true true @@ -1874,21 +2518,48 @@ ГруппаПереходКСпискуОтложенныхОбработчиков 45 - - ОткрытьСписокОтложенныхОбработчиков - 57 - - <key>ru</key> - <value>Необходимо выполнить процедуры обработки данных</value> - + + Группа2 + 335 + + ПереходКСпискуВыравнивание + 339 + true + true + + true + + + ПереходКСпискуВыравниваниеРасширеннаяПодсказка + 341 + Label + true + true + + Left + + + + ПереходКСпискуВыравниваниеКонтекстноеМеню + 340 + true + + Label + 5 + true + true + + Left + + true true true - ОткрытьСписокОтложенныхОбработчиковExtendedTooltip - 170 + Группа2РасширеннаяПодсказка + 336 Label true true @@ -1896,35 +2567,348 @@ Left - Hyperlink - Form.Command.ОткрытьСписокДополнительныхПроцедурОбработкиДанных - Normal - Auto - true - true - UserCmds - Auto + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + - - ГиперссылкаОсновноеОбновление - 88 - - <key>ru</key> - <value>Техническая информация о результатах обновления</value> - - true - true - - true - - Button - - ГиперссылкаОсновноеОбновлениеExtendedTooltip - 132 + + Группа3 + 337 + + ГруппаПереходКСпискуИПроблемы + 298 + + ГруппаИндикацияПроблемСОбработчикамиЗавершено + 350 + + ДекорацияИндикацияПроблемЗавершено + 352 + + <key>ru</key> + <value>Декорация индикация проблем завершено</value> + + true + true + + true + + + ДекорацияИндикацияПроблемЗавершеноРасширеннаяПодсказка + 354 + Label + true + true + + Left + + + + ДекорацияИндикацияПроблемЗавершеноКонтекстноеМеню + 353 + true + + true + true + Center + + + StdPicture.AppearanceExclamationMarkIcon + + AsFileRef + + + + ПроблемныеСитуацииЗавершено + 355 + + <key>ru</key> + <value>Проблемные ситуации</value> + + true + true + + true + + + ПроблемныеСитуацииЗавершеноРасширеннаяПодсказка + 357 + Label + true + true + + Left + + + + ПроблемныеСитуацииЗавершеноКонтекстноеМеню + 356 + true + + Label + true + true + + + Click + ПроблемныеСитуацииНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа индикация проблем с обработчиками</value> + + + ГруппаИндикацияПроблемСОбработчикамиЗавершеноРасширеннаяПодсказка + 351 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаИндикацияПроблемСДаннымиЗавершено + 342 + + ДекорацияИндикацияПроблемСДаннымиЗавершено + 344 + + <key>ru</key> + <value>Декорация индикация проблем с данными завершено</value> + + true + true + + true + + + ДекорацияИндикацияПроблемСДаннымиЗавершеноРасширеннаяПодсказка + 346 + Label + true + true + + Left + + + + ДекорацияИндикацияПроблемСДаннымиЗавершеноКонтекстноеМеню + 345 + true + + true + true + Center + + + StdPicture.AppearanceExclamationMarkIcon + + AsFileRef + + + + ПроблемыСДаннымиЗавершено + 347 + + <key>ru</key> + <value>Проблемы с данными</value> + + true + true + + true + + Button + + ПроблемыСДаннымиЗавершеноРасширеннаяПодсказка + 349 + Label + true + true + + Left + + + + ПроблемыСДаннымиЗавершеноКонтекстноеМеню + 348 + true + + Label + true + true + + + Click + ПроблемыСДаннымиНажатие + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа индикация проблем с данными</value> + + + ГруппаИндикацияПроблемСДаннымиЗавершеноРасширеннаяПодсказка + 343 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ОткрытьСписокОтложенныхОбработчиков + 57 + + <key>ru</key> + <value>Необходимо выполнить процедуры обработки данных</value> + + true + true + + true + + + ОткрытьСписокОтложенныхОбработчиковExtendedTooltip + 170 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОткрытьСписокДополнительныхПроцедурОбработкиДанных + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + <key>ru</key> - <value>Техническая информация из журнала регистрации для обращения в службу технической поддержки.</value> + <value>Переход к списку и проблемы</value> + + ГруппаПереходКСпискуИПроблемыРасширеннаяПодсказка + 299 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГиперссылкаОсновноеОбновление + 88 + + <key>ru</key> + <value>Техническая информация о результатах обновления</value> + + true + true + + true + + Button + + ГиперссылкаОсновноеОбновлениеExtendedTooltip + 132 + + <key>ru</key> + <value>Техническая информация из журнала регистрации для обращения в службу технической поддержки.</value> + + Label + true + true + + Left + + + + ГиперссылкаОсновноеОбновлениеКонтекстноеМеню + 89 + true + + Label + true + + + Click + ГиперссылкаОсновноеОбновлениеНажатие + + true + Left + + + true + true + + true + + + Группа3РасширеннаяПодсказка + 338 Label true true @@ -1932,20 +2916,14 @@ Left - - ГиперссылкаОсновноеОбновлениеКонтекстноеМеню - 89 - true - - Label - true - - - Click - ГиперссылкаОсновноеОбновлениеНажатие - - true - Left + UsualGroup + + Vertical + Auto + true + true + Auto + Auto true @@ -1969,7 +2947,7 @@ UsualGroup - Vertical + AlwaysHorizontal Auto true true @@ -2097,6 +3075,37 @@ 2 + + КартинкаШаблон + 358 + true + + true + + + КартинкаШаблонРасширеннаяПодсказка + 360 + Label + true + true + + Left + + + + КартинкаШаблонКонтекстноеМеню + 359 + true + + true + true + + + StdPicture.AppearanceExclamationMarkIcon + + AsFileRef + + Bottom true @@ -2131,6 +3140,33 @@ UserCmds Auto + + ФормаПерезапуститьОтложенноеОбновление + 291 + true + true + + true + + + ФормаПерезапуститьОтложенноеОбновлениеРасширеннаяПодсказка + 292 + Label + true + true + + Left + + + Form.Command.ПерезапуститьОтложенноеОбновление + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Right @@ -2325,6 +3361,32 @@ true + + ЗаданиеАктивно + 12 + + Boolean + + + true + + + true + + + + ОбновлениеЗавершеноУспешно + 13 + + Boolean + + + true + + + true + + ВыполнитьОбновление @@ -2393,24 +3455,6 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> - <formCommands> - <name>СнятьБлокировкуРегламентныхЗаданий</name> - <title> - <key>ru</key> - <value>Проверить блокировку регламентных заданий</value> - - 5 - - true - - - - СнятьБлокировкуРегламентныхЗаданий - - - DontUse - Auto - ИнформацияДляТехническойПоддержки @@ -2433,6 +3477,28 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ПерезапуститьОтложенноеОбновление</name> + <title> + <key>ru</key> + <value>Перезапустить отложенное обновление...</value> + + 5 + + ru + Перезапустить отложенное обновление + + + true + + + + ПерезапуститьОтложенноеОбновление + + + Auto + Auto + ОткрытиеИзПанелиАдминистрирования diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Help/ru.html b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Help/ru.html similarity index 100% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Help/ru.html rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Help/ru.html diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Module.bsl similarity index 65% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Module.bsl index ed3a8c20d..9f2c1544f 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/РезультатыОбновленияПрограммы/Module.bsl @@ -58,6 +58,7 @@ Если Не ИБФайловая И СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено Тогда Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; + ПроверитьВыполнениеОтложенногоОбновления(СведенияОбОбновлении); Иначе Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВФайловойБазе; КонецЕсли; @@ -89,6 +90,7 @@ КонецЕсли; Иначе + ОбновитьИнформациюПоПроблемам(); Элементы.ИнформацияСтатусОбновления.Видимость = Ложь; Элементы.ИзменитьРасписание.Видимость = Ложь; КонецЕсли; @@ -121,7 +123,19 @@ Элементы.ОткрытьСписокОтложенныхОбработчиков.Заголовок = ТекстСообщения; Элементы.ЗаголовокИнформации.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Выполняются дополнительные процедуры обработки данных на версию %1 - |Работа с этими данными временно ограничена'"), Метаданные.Версия); + |Работа с этими данными временно ограничена.'"), Метаданные.Версия); + + Элементы.ФормаПерезапуститьОтложенноеОбновление.Видимость = Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() + И ЕстьОбработчикиСПараллельнымРежимомВыполнения() + И Пользователи.ЭтоПолноправныйПользователь(); + + ПодсказкаПроблемСДанными = НСтр("ru = 'Проблемы с данными могут мешать их обработке при переходе на новую версию. + |Если выполнение дополнительных процедур обработки данных завершилось с ошибкой, то необходимо: + | • перейти к списку проблем и исправить их согласно рекомендации в отчете; + | • продолжить выполнение дополнительных процедур обработки данных, для чего необходимо перейти по гиперссылке Не все процедуры удалось выполнить ... и нажать на кнопку Запустить внизу формы.'"); + ПодсказкаПроблемСДанными = СтроковыеФункции.ФорматированнаяСтрока(ПодсказкаПроблемСДанными); + Элементы.ПроблемыСДанными.РасширеннаяПодсказка.Заголовок = ПодсказкаПроблемСДанными; + Элементы.ПроблемыСДаннымиЗавершено.РасширеннаяПодсказка.Заголовок = ПодсказкаПроблемСДанными; КонецПроцедуры @@ -153,7 +167,17 @@ Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; КонецЕсли; + ОбновлениеЗавершеноУспешно = Ложь; ПодключитьОбработчикОжидания("ЗапуститьОтложенноеОбновление", 0.5, Истина); + ИначеЕсли ИмяСобытия = "ОтложенноеОбновлениеПерезапущено" Тогда + Если ИБФайловая Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВФайловойБазе; + Иначе + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; + КонецЕсли; + ОбновлениеЗавершеноУспешно = Ложь; + ПроверитьСтатусВыполненияОбработчиков(); + ПодключитьОбработчикОжидания("ПроверитьСтатусВыполненияОбработчиков", 15); КонецЕсли; КонецПроцедуры @@ -217,6 +241,23 @@ ПоказатьУстановленныеИсправления(); КонецПроцедуры +&НаКлиенте +Процедура ПояснениеОбновлениеНеВыполняетсяОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если НавигационнаяСсылкаФорматированнойСтроки = "ПроверитьБлокировку" Тогда + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда + МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент"); + МодульСоединенияИБКлиент.ПриОткрытииФормыБлокировкиРаботыПользователей(); + КонецЕсли; + ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Включить" Тогда + ВключитьРегламентноеЗадание(); + ТекстСообщения = НСтр("ru = 'Задание включено. Статус обновления скоро обновится.'"); + ПоказатьПредупреждение(, ТекстСообщения); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -247,14 +288,6 @@ КонецПроцедуры -&НаКлиенте -Процедура СнятьБлокировкуРегламентныхЗаданий(Команда) - Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент"); - МодульСоединенияИБКлиент.ПриОткрытииФормыБлокировкиРаботыПользователей(); - КонецЕсли; -КонецПроцедуры - &НаКлиенте Процедура ИнформацияДляТехническойПоддержки(Команда) @@ -276,6 +309,32 @@ КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ПроблемныеСитуацииНажатие(Элемент) + Уровни = Новый Массив; + Уровни.Добавить("Ошибка"); + Уровни.Добавить("Предупреждение"); + + ОтборЖурнала = Новый Структура; + ОтборЖурнала.Вставить("ДатаНачала", ВремяНачалаОтложенногоОбновления); + ОтборЖурнала.Вставить("Уровень", Уровни); + ОтборЖурнала.Вставить("СобытиеЖурналаРегистрации", НСтр("ru = 'Обновление информационной базы'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка())); + ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ОтборЖурнала, ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ПерезапуститьОтложенноеОбновление(Команда) + ОткрытьФорму("РегистрСведений.ОбработчикиОбновления.Форма.ПерезапускОтложенногоОбновления"); +КонецПроцедуры + +&НаКлиенте +Процедура ПроблемыСДаннымиНажатие(Элемент) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда + МодульКонтрольВеденияУчетаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольВеденияУчетаКлиент"); + МодульКонтрольВеденияУчетаКлиент.ОткрытьОтчетПоПроблемам("ОбновлениеВерсииИБ", Ложь); + КонецЕсли; +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -304,8 +363,6 @@ Элементы.ГруппаИнформацияОбУдаленииПатчей.Видимость = Ложь; КонецЕсли; - Элементы.СнятьБлокировкуРегламентныхЗаданий.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей"); - КонецПроцедуры &НаСервере @@ -346,6 +403,7 @@ ВыполнитьОбновлениеНаСервере(); Если Не ИБФайловая Тогда + ПроверитьСтатусВыполненияОбработчиков(); ПодключитьОбработчикОжидания("ПроверитьСтатусВыполненияОбработчиков", 15); Возврат; КонецЕсли; @@ -378,6 +436,9 @@ Если ОбновлениеЗавершено = Истина Тогда ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении); + ОбновитьИнформациюПоПроблемам(); + Иначе + ПроверитьВыполнениеОтложенногоОбновления(СведенияОбОбновлении); КонецЕсли; КонецПроцедуры @@ -396,7 +457,7 @@ ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); Если Не ИБФайловая Тогда - ОбновлениеИнформационнойБазыСлужебный.ПриВключенииОтложенногоОбновления(Истина); + ВключитьРегламентноеЗадание(); Возврат; КонецЕсли; @@ -474,6 +535,7 @@ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все процедуры обновления выполнены успешно (%1)'"), Прогресс.ВыполненоОбработчиков); КонецЕсли; Элементы.КартинкаЗавершено.Картинка = БиблиотекаКартинок.Успешно32; + ОбновлениеЗавершеноУспешно = Истина; Иначе ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не все процедуры удалось выполнить (выполнено %1 из %2)'"), Прогресс.ВыполненоОбработчиков, Прогресс.ВсегоОбработчиков); @@ -497,6 +559,85 @@ Прогресс.ВыполненоОбработчиков, Прогресс.ВсегоОбработчиков); + ОбновитьИнформациюПоПроблемам(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьИнформациюПоПроблемам() + + // Отображение информации о проблеме с обработчиками. + КоличествоПроблемВОбработчиках = ПроблемныеСитуацииВОбработчикахОбновления(); + Если КоличествоПроблемВОбработчиках <> 0 И Не ОбновлениеЗавершеноУспешно Тогда + ТекстИндикатора = НСтр("ru = 'Проблемы с обработчиками'"); + Иначе + ТекстИндикатора = НСтр("ru = 'Проблем с обработчиками не обнаружено'"); + КонецЕсли; + + Элементы.ПроблемныеСитуации.Заголовок = ТекстИндикатора; // На странице прогресса обновления. + Элементы.ПроблемныеСитуацииЗавершено.Заголовок = ТекстИндикатора; // На странице завершенного обновления. + + // Отображение информации о проблеме с данными. + КоличествоПроблемСДанными = ОбновлениеИнформационнойБазыСлужебный.КоличествоПроблемСДанными(); + Если КоличествоПроблемСДанными <> 0 Тогда + ТекстИндикатора = НСтр("ru = 'Проблемы с данными (%1)'"); + ТекстИндикатора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИндикатора, КоличествоПроблемСДанными); + Иначе + ТекстИндикатора = НСтр("ru = 'Проблем с данными не обнаружено'"); + КонецЕсли; + + Элементы.ПроблемыСДанными.Заголовок = ТекстИндикатора; // На странице прогресса обновления. + Элементы.ПроблемыСДаннымиЗавершено.Заголовок = ТекстИндикатора; // На странице завершенного обновления + + // Оформление элементов индикации проблем с данными. + ГиперссылкаПроблемСОбработчиками = Ложь; + ГиперссылкаПроблемСДанными = Ложь; + КартинкаПроблемСОбработчиками = БиблиотекаКартинок.ОформлениеЗнакФлажок; + КартинкаПроблемСДанными = БиблиотекаКартинок.ОформлениеЗнакФлажок; + + Если КоличествоПроблемВОбработчиках <> 0 И КоличествоПроблемСДанными <> 0 Тогда + Если Не ОбновлениеЗавершеноУспешно Тогда + КартинкаПроблемСОбработчиками = Элементы.КартинкаШаблон.Картинка; + ГиперссылкаПроблемСОбработчиками = Истина; + КонецЕсли; + КартинкаПроблемСДанными = Элементы.КартинкаШаблон.Картинка; + ГиперссылкаПроблемСДанными = Истина; + + ИначеЕсли КоличествоПроблемВОбработчиках <> 0 И Не ОбновлениеЗавершеноУспешно И КоличествоПроблемСДанными = 0 Тогда + КартинкаПроблемСОбработчиками = Элементы.КартинкаШаблон.Картинка; + ГиперссылкаПроблемСОбработчиками = Истина; + + ИначеЕсли КоличествоПроблемВОбработчиках = 0 И КоличествоПроблемСДанными <> 0 Тогда + КартинкаПроблемСДанными = Элементы.КартинкаШаблон.Картинка; + ГиперссылкаПроблемСДанными = Истина; + + КонецЕсли; + + Элементы.ПроблемыСДанными.Гиперссылка = ГиперссылкаПроблемСДанными; + Элементы.ПроблемныеСитуации.Гиперссылка = ГиперссылкаПроблемСОбработчиками; + Элементы.ПроблемыСДаннымиЗавершено.Гиперссылка = ГиперссылкаПроблемСДанными; + Элементы.ПроблемныеСитуацииЗавершено.Гиперссылка = ГиперссылкаПроблемСОбработчиками; + + Элементы.ДекорацияИндикацияПроблем.Картинка = КартинкаПроблемСОбработчиками; + Элементы.ДекорацияИндикацияПроблемСДанными.Картинка = КартинкаПроблемСДанными; + Элементы.ДекорацияИндикацияПроблемЗавершено.Картинка = КартинкаПроблемСОбработчиками; + Элементы.ДекорацияИндикацияПроблемСДаннымиЗавершено.Картинка = КартинкаПроблемСДанными; + + // Отображение предупреждения о зацикливании обработки данных. + ПредупреждатьОЗацикливании = Ложь; + Если ПриоритетОбновления = "ОбработкаДанных" + И ЗаданиеАктивно + И ЗавершенныеВсеПоследовательныеОбработчики() Тогда + СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + ДатаНачалаСеансаОбновления = СведенияОбОбновлении.ДатаНачалаСеансаОбновления; + Если ДатаНачалаСеансаОбновления <> Неопределено + И ТекущаяДатаСеанса() - ДатаНачалаСеансаОбновления > 5400 + И Не ЕстьИнтервалыПрогрессаОбработкиДанных() Тогда + ПредупреждатьОЗацикливании = Истина; + КонецЕсли; + КонецЕсли; + + Элементы.ДекорацияПредупреждениеОЗацикливании.Видимость = ПредупреждатьОЗацикливании; КонецПроцедуры &НаСервере @@ -533,6 +674,44 @@ КонецФункции +&НаСервере +Функция ЗавершенныеВсеПоследовательныеОбработчики() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполненияОтложенногоОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Последовательно); + Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОтложенногоОбработчика + | И ОбработчикиОбновления.Статус <> &Статус"; + + Возврат Запрос.Выполнить().Пустой(); + +КонецФункции + +&НаСервере +Функция ЕстьИнтервалыПрогрессаОбработкиДанных() + + ПроверяемыйИнтервал = НачалоЧаса(ТекущаяДатаСеанса() - 7200); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИнтервалЧас", ПроверяемыйИнтервал); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | РегистрСведений.ПрогрессОбновления КАК ПрогрессОбновления + |ГДЕ + | ПрогрессОбновления.ИнтервалЧас >= &ИнтервалЧас"; + + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + &НаСервере Процедура УстановитьРасписаниеОтложенногоОбновления(НовоеРасписание) @@ -561,9 +740,9 @@ КнопкиВопроса.Добавить("РекомендуемыеНастройки", НСтр("ru = 'Установить рекомендуемые настройки'")); ТекстСообщения = НСтр("ru = 'Дополнительные процедуры обработки данных выполняются небольшими порциями, - |поэтому для их корректной работы обязательно задайте интервал повтора после завершения. + |поэтому для их корректной работы необходимо обязательно задать интервал повтора после завершения. | - |Для этого в окне настройки расписания перейдите на вкладку ""Дневное"" + |Для этого в окне настройки расписания необходимо перейти на вкладку ""Дневное"" |и заполнить поле ""Повторять через"".'"); ПоказатьВопрос(Оповещение, ТекстСообщения, КнопкиВопроса,, "НастроитьРасписание"); Иначе @@ -698,4 +877,120 @@ КонецПроцедуры +&НаСервере +Функция ПроблемныеСитуацииВОбработчикахОбновления() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно); + Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.Текст = + "ВЫБРАТЬ + | ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика, + | ОбработчикиОбновления.СтатистикаВыполнения КАК СтатистикаВыполнения + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения"; + Результат = Запрос.Выполнить().Выгрузить(); + + КоличествоПроблем = 0; + Для Каждого Строка Из Результат Цикл + СтатистикаВыполнения = Строка.СтатистикаВыполнения; + СтатистикаВыполнения = СтатистикаВыполнения.Получить(); + Если ТипЗнч(СтатистикаВыполнения) <> Тип("Соответствие") Тогда + Продолжить; + КонецЕсли; + + Если СтатистикаВыполнения["ЕстьОшибки"] = Истина Тогда + КоличествоПроблем = КоличествоПроблем + 1; + КонецЕсли; + КонецЦикла; + + Возврат КоличествоПроблем; + +КонецФункции + +&НаСервере +Процедура ПроверитьВыполнениеОтложенногоОбновления(СведенияОбОбновлении) + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Возврат; + КонецЕсли; + + Задание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); + ЗаданиеВыполняется = Ложь; + Сообщения = Новый Массив; + ИдентификаторГиперссылки = ""; + Если Задание.Использование Тогда + ОтборЗаданий = Новый Структура; + ОтборЗаданий.Вставить("ИмяМетода", "ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновление"); + НайденныеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(ОтборЗаданий); + + Для Каждого ФоновоеЗадание Из НайденныеЗадания Цикл + // Есть активное фоновое задание обновления. + Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда + ЗаданиеАктивно = Истина; + ЗаданиеВыполняется = Истина; + Прервать; + КонецЕсли; + ЗаданиеАктивно = Ложь; + + // АПК:143-выкл в фоновых заданиях используется текущая дата. + // Фоновое задание недавно выполнялось. + Если ФоновоеЗадание.Конец > ТекущаяДата() - Задание.Расписание.ПериодПовтораВТечениеДня * 5 Тогда + ЗаданиеВыполняется = Истина; + КонецЕсли; + + Если Не ЗаданиеВыполняется Тогда + ТребуетсяВыполнение = Задание.Расписание.ТребуетсяВыполнение(ТекущаяДата(), ФоновоеЗадание.Начало, ФоновоеЗадание.Конец); + ЗаданиеВыполняется = Не ТребуетсяВыполнение; + КонецЕсли; + // АПК:143-вкл + + Прервать; + КонецЦикла; + + ТекстСообщения = НСтр("ru = 'Регламентное задание Отложенное обновление включено, но + |не выполняется. Вероятно включена блокировка выполнения регламентных заданий.'"); + Сообщения.Добавить(СтрСоединить(СтрРазделить(ТекстСообщения, Символы.ПС), " ")); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда + Сообщения.Добавить(НСтр("ru = 'Проверить блокировку регламентных заданий'")); + ИдентификаторГиперссылки = "ПроверитьБлокировку"; + КонецЕсли; + Иначе + ТекстСообщения = НСтр("ru = 'Дополнительные процедуры обработки данных не выполняются, + |т.к. отключено регламентное задание Отложенное обновление.'"); + Сообщения.Добавить(СтрСоединить(СтрРазделить(ТекстСообщения, Символы.ПС), " ")); + Сообщения.Добавить(НСтр("ru = 'Включить'")); + ИдентификаторГиперссылки = "Включить"; + КонецЕсли; + ТекстСообщения = СтроковыеФункции.ФорматированнаяСтрока(СтрСоединить(Сообщения, Символы.ПС), ИдентификаторГиперссылки); + Элементы.ПояснениеОбновлениеНеВыполняется.Заголовок = ТекстСообщения; + + Элементы.ГруппаШапкаКлиентСервер.Видимость = ЗаданиеВыполняется; + Элементы.ГруппаШапкаОбновлениеНеВыполняется.Видимость = Не ЗаданиеВыполняется; + +КонецПроцедуры + +&НаСервере +Процедура ВключитьРегламентноеЗадание() + ОбновлениеИнформационнойБазыСлужебный.ПриВключенииОтложенногоОбновления(Истина); +КонецПроцедуры + +&НаСервере +Функция ЕстьОбработчикиСПараллельнымРежимомВыполнения() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполненияОтложенногоОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОтложенногоОбработчика"; + Возврат Не Запрос.Выполнить().Пустой(); + +КонецФункции + #КонецОбласти diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеДляНеполноправногоПользователя/Form.form b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/СообщениеДляНеполноправногоПользователя/Form.form similarity index 100% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеДляНеполноправногоПользователя/Form.form rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/СообщениеДляНеполноправногоПользователя/Form.form diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеДляНеполноправногоПользователя/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/СообщениеДляНеполноправногоПользователя/Module.bsl similarity index 100% rename from SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОбновлениеДляНеполноправногоПользователя/Module.bsl rename to SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/СообщениеДляНеполноправногоПользователя/Module.bsl diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Help/ru.html b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Help/ru.html index 139a83a5b..30ee2d82b 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Help/ru.html +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Help/ru.html @@ -24,7 +24,7 @@
    • После этого начинается подготовка к завершению активных сеансов других пользователей, работающих с программой. В активных сеансах пользователей программа выводит сообщение о необходимости завершить свою работу. В указанное в сообщении время производится принудительное завершение работы программы и продолжается обновление версии.
    • -
    • При этом выполнение программы не останавливается и открывается пустой рабочий стол с сообщением Обновление версии программы. В сообщении выводится номер версии, на которую производится обновление ИБ. Индикатор показывает ход обновления ИБ - графически и в процентном отношении. Для получения подробных сведений о ходе обновления ИБ из журнала регистрации перейдите по ссылке Техническая информация о ходе обновления. +
    • При этом выполнение программы не останавливается и открывается пустой рабочий стол с сообщением Обновление версии программы. В сообщении выводится номер версии, на которую производится обновление ИБ. Индикатор показывает ход обновления ИБ - графически и в процентном отношении. Для получения подробных сведений о ходе обновления ИБ из журнала регистрации перейдите по ссылке Техническая информация о ходе обновления.
    • Если запуск происходит на устаревшей версии платформы, то выводится сообщение о необходимости обновления версии платформы и блокирует рабочий стол.
    • @@ -33,7 +33,7 @@
    • Если в процессе обновления возникает нештатная ситуация, то программа выводит сообщение об ошибке, по поводу которого необходимо обратиться в службу технической поддержки. По ссылке Подробности см. в Журнале регистрации можно просмотреть сообщения, возникшие в процессе обновления. Работа с программой в таком случае не может быть продолжена.
    • В случае успешного обновления программы открывается окно Что нового. Также будет разблокирован вход в программу для всех пользователей.

    Описание изменений программы

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

    Особенности и преимущества отложенного обновления ИБ

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

    Особенности и преимущества отложенного обновления ИБ

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

    Контроль процесса отложенного обновления

    diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo index dd4788351..7e6c21668 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo @@ -10,7 +10,7 @@ Результаты обновления программы АПК:78-выкл для вызова различных этапов обновления - DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ + DataProcessor.РезультатыОбновленияПрограммы.Form.РезультатыОбновленияПрограммы true @@ -18,10 +18,10 @@ - ИндикацияХодаОтложенногоОбновленияИБ + РезультатыОбновленияПрограммы ru - Индикация хода отложенного обновления ИБ + Результаты обновления программы @@ -46,10 +46,10 @@ MobileDevice - ИндикацияХодаОбновленияИБ + ОбновлениеВерсииПрограммы ru - Индикация хода обновления ИБ + Обновление версии программы @@ -92,10 +92,10 @@ MobileDevice - ОбновлениеДляНеполноправногоПользователя + СообщениеДляНеполноправногоПользователя ru - Обновление для неполноправного пользователя + Сообщение для неполноправного пользователя PersonalComputer MobileDevice diff --git a/SSL/src/DataProcessors/СдвигГраницыИтогов/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/СдвигГраницыИтогов/Forms/ОсновнаяФорма/Form.form index 615f559b2..1df4e95a5 100644 --- a/SSL/src/DataProcessors/СдвигГраницыИтогов/Forms/ОсновнаяФорма/Form.form +++ b/SSL/src/DataProcessors/СдвигГраницыИтогов/Forms/ОсновнаяФорма/Form.form @@ -48,7 +48,7 @@ 20 <key>ru</key> - <value><fontstyle -31><b>Выполняется сдвиг границы рассчитанных итогов...</></> + <value><fontstyle -31>Выполняется сдвиг границы рассчитанных итогов...</> <fontstyle -31>Пожалуйста, подождите, это может занять некоторое время.</></value> true diff --git a/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Form.form b/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Form.form index 67fccf25b..79e50b2d4 100644 --- a/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Form.form +++ b/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Form.form @@ -338,7 +338,7 @@ false - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form index 9073b3dd8..1cba42b21 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form @@ -2193,7 +2193,7 @@ false - CommonPicture.Информация + CommonPicture.УдалитьИнформация diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form index aa81d77a1..e6f6f2918 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form @@ -330,6 +330,7 @@ true UserCmds Auto + InAdditionalSubmenu true true @@ -3063,7 +3064,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl index 080ad4f88..5ba01ceab 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl @@ -294,16 +294,8 @@ Продолжить; КонецЕсли; - СтандартнаяОбработка = Истина; Контекст = Новый Структура; - ПередУдалениемГруппыОбъектов( - Контекст, - ОбщегоНазначения.ФиксированныеДанные(СсылкиНаУдаляемыеОбъекты, Ложь), - СтандартнаяОбработка); - - Если Не СтандартнаяОбработка Тогда - Продолжить; - КонецЕсли; + ПередУдалениемГруппыОбъектов(Контекст, ОбщегоНазначения.ФиксированныеДанные(СсылкиНаУдаляемыеОбъекты, Ложь)); НельзяУдалятьОсновнойОбъект = Ложь; НеудаленныеЭлементы = Новый Массив; @@ -311,10 +303,8 @@ Попытка ОсновнойОбъект = ОсновнойИПодчиненныеОбъекты[ОсновнойИПодчиненныеОбъекты.ВГраница()]; - Для каждого УдаляемыйСсылка Из ОсновнойИПодчиненныеОбъекты Цикл - Фильтр = Новый Структура("УдаляемыйСсылка", УдаляемыйСсылка.УдаляемыйСсылка); РезультатУдаления = УдалитьЭлементПакета( ПараметрыУдаления, @@ -355,11 +345,10 @@ Если НЕ НельзяУдалятьОсновнойОбъект Тогда ЗафиксироватьТранзакцию(); - ПослеУдаленияГруппыОбъектов(Контекст, Истина); Иначе ОтменитьТранзакцию(); - ПослеУдаленияГруппыОбъектов(Контекст, Ложь); КонецЕсли; + ПослеУдаленияГруппыОбъектов(Контекст, НЕ НельзяУдалятьОсновнойОбъект); Исключение ОтменитьТранзакцию(); @@ -378,13 +367,15 @@ КонецФункции // см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов -Процедура ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка) - ИнтеграцияПодсистемБСП.ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка); +Процедура ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты) + ИнтеграцияПодсистемБСП.ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты); + УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты); КонецПроцедуры // см. УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов Процедура ПослеУдаленияГруппыОбъектов(Контекст, Успешно) ИнтеграцияПодсистемБСП.ПослеУдаленияГруппыОбъектов(Контекст, Успешно); + УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов(Контекст, Успешно); КонецПроцедуры Функция РезультатУдаленияЭлемента(Знач Элемент) @@ -799,17 +790,13 @@ // см. РезультатОбработки // Функция ОбработатьПакетВОднойТранзакции(ПараметрыУдаления, Пакет) + Результат = РезультатОбработки(); - СтандартнаяОбработка = Истина; Контекст = Новый Структура; УдаляемыеОбъекты = Пакет.ВыгрузитьКолонку("УдаляемыйСсылка"); - ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты, СтандартнаяОбработка); - - Если НЕ СтандартнаяОбработка Тогда - Возврат РезультатОбработки(); - КонецЕсли; - + ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты); + НачатьТранзакцию(); Попытка Для Каждого ЭлементПакета Из Пакет Цикл @@ -1578,12 +1565,10 @@ КонецЕсли; КонецЦикла; КонецЦикла; - ОбщегоНазначенияКлиентСервер.ДополнитьМассив( - УдаляемыеОбъекты, ПодчиненныеОбъекты); + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(УдаляемыеОбъекты, ПодчиненныеОбъекты); Контекст = Новый Структура; - СтандартнаяОбработка = Истина; - ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты, СтандартнаяОбработка); + ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты); Пока УдаляемыеОбъекты.Количество() > 0 Цикл @@ -1624,11 +1609,7 @@ ВсеСвязиВИсключениях = Истина; - Если ПрепятствующиеУдалению.Количество() = 0 Тогда - ПослеУдаленияГруппыОбъектов(Контекст, Истина); - Иначе - ПослеУдаленияГруппыОбъектов(Контекст, Ложь); - КонецЕсли; + ПослеУдаленияГруппыОбъектов(Контекст, ПрепятствующиеУдалению.Количество() = 0); // Анализ причин не удаления (мест использования помеченных на удаление). Для Каждого СтрокаТаблицы Из ПрепятствующиеУдалению Цикл diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ПодтверждениеПользователя/Module.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ПодтверждениеПользователя/Module.bsl index 25af7012e..0d91499ff 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ПодтверждениеПользователя/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ПодтверждениеПользователя/Module.bsl @@ -255,7 +255,6 @@ МакетШапки = МакетПечати.ПолучитьОбласть("Ключ"); КартинкаКода = МакетШапки.Рисунки.ВекторАутентификации; КартинкаКода.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии); - КартинкаКода.ЦветФона = Новый Цвет(); КартинкаКода.Картинка = Новый Картинка(ПараметрыПечати.ДанныеКлюча); Результат.Вывести(МакетШапки); КонецЕсли; diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/РасширенныеНастройкиСервера/Module.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/РасширенныеНастройкиСервера/Module.bsl index 118f86810..5db9d00df 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/РасширенныеНастройкиСервера/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/РасширенныеНастройкиСервера/Module.bsl @@ -27,8 +27,8 @@ ПервичнаяАвторизация.ЗагрузитьЗначения(СервисКриптографииDSSСлужебный.ДоступныеСпособыПервичнойАвторизации()); ВторичнаяАвторизация.ЗагрузитьЗначения(СервисКриптографииDSSСлужебный.ДоступныеСпособыВторичнойАвторизации()); - СервисКриптографииDSSКлиентСервер.ПолучитьПредставлениеСпособовАвторизации(ПервичнаяАвторизация); - СервисКриптографииDSSКлиентСервер.ПолучитьПредставлениеСпособовАвторизации(ВторичнаяАвторизация); + СервисКриптографииDSSСлужебный.ПолучитьПредставлениеСпособовАвторизации(ПервичнаяАвторизация); + СервисКриптографииDSSСлужебный.ПолучитьПредставлениеСпособовАвторизации(ВторичнаяАвторизация); СпособыАвторизации = СервисКриптографииDSSКлиентСервер.ПолучитьПолеСтруктуры(Параметры, "СпособыАвторизации", Новый Массив); Для каждого СтрокаМассива Из СпособыАвторизации Цикл diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/СписокСертификатов/Module.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/СписокСертификатов/Module.bsl index dd91b67b7..6229af064 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/СписокСертификатов/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/СписокСертификатов/Module.bsl @@ -139,7 +139,7 @@ &НаКлиенте Процедура ВыборСтрокиСертификата() - + ТекущаяСтрока = Элементы.ТаблицаСертификатов.ТекущиеДанные; Если ТекущаяСтрока <> Неопределено Тогда ПараметрыЗакрытия = СервисКриптографииDSSКлиент.ОтветСервисаПоУмолчанию(); @@ -147,6 +147,9 @@ ВыборПользователя = Новый Структура("Отпечаток", ТекущаяСтрока.Отпечаток); Если ПолноеОписание Тогда ВыборПользователя = ПолучитьПолноеОписаниеСертификата(ВыборПользователя); + Если НЕ ВыборПользователя.Выполнено Тогда + ПараметрыЗакрытия = ВыборПользователя; + КонецЕсли; КонецЕсли; Иначе ВыборПользователя = ТекущаяСтрока.Идентификатор; diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаУчетнойЗаписи/Module.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаУчетнойЗаписи/Module.bsl index 4ade7fb5c..cb965b35b 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаУчетнойЗаписи/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаУчетнойЗаписи/Module.bsl @@ -448,9 +448,9 @@ ОбновитьДанныеСсылок(); ДоступныеСпособыАвторизации = ПодготовитьСписки(Объект.Владелец); Элементы.ВторичнаяАвторизация.СписокВыбора.ЗагрузитьЗначения(ДоступныеСпособыАвторизации.ВторичнаяАвторизация); - СервисКриптографииDSSКлиентСервер.ПолучитьПредставлениеСпособовАвторизации(Элементы.ВторичнаяАвторизация.СписокВыбора); + СервисКриптографииDSSСлужебный.ПолучитьПредставлениеСпособовАвторизации(Элементы.ВторичнаяАвторизация.СписокВыбора); Элементы.ПервичнаяАутентификация.СписокВыбора.ЗагрузитьЗначения(ДоступныеСпособыАвторизации.ПервичнаяАутентификация); - СервисКриптографииDSSКлиентСервер.ПолучитьПредставлениеСпособовАвторизации(Элементы.ПервичнаяАутентификация.СписокВыбора); + СервисКриптографииDSSСлужебный.ПолучитьПредставлениеСпособовАвторизации(Элементы.ПервичнаяАутентификация.СписокВыбора); УправлениеФормой(ЭтотОбъект); КонецПроцедуры @@ -508,7 +508,7 @@ Элементы.ГруппаСостояниеЗаявления.Видимость = ЗаявлениеПодключено И (ПринудительноПоказать ИЛИ НЕ НовоеЗаявление); Элементы.ИзменитьРеквизитыПодключения.Видимость = ЗаявлениеПодключено И НовоеЗаявление И НЕ ПринудительноПоказать; - Элементы.ОткрытьПредыдущееЗаявление.Видимость = ЗаявлениеПодключено И ЕстьЗаявление И ЗаявлениеПодключено; + Элементы.ОткрытьПредыдущееЗаявление.Видимость = ЗаявлениеПодключено И ЕстьЗаявление; КонецПроцедуры diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаЭкземпляраСервераDSS/Module.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаЭкземпляраСервераDSS/Module.bsl index 89077b1b4..63b758aa1 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаЭкземпляраСервераDSS/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/Forms/ФормаЭкземпляраСервераDSS/Module.bsl @@ -217,7 +217,7 @@ &НаКлиенте Процедура СервисОбработкиДокументовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) - ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка); + ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка, "DocumentStore"); КонецПроцедуры @@ -231,7 +231,7 @@ &НаКлиенте Процедура СервисАудитаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) - ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка); + ДополнитьСписокСервером(Элемент, Текст, СтандартнаяОбработка, "AnalyticsService"); КонецПроцедуры diff --git a/SSL/src/DataProcessors/УправлениеПодключениемDSS/ManagerModule.bsl b/SSL/src/DataProcessors/УправлениеПодключениемDSS/ManagerModule.bsl index ab873b15f..513cc4870 100644 --- a/SSL/src/DataProcessors/УправлениеПодключениемDSS/ManagerModule.bsl +++ b/SSL/src/DataProcessors/УправлениеПодключениемDSS/ManagerModule.bsl @@ -1027,7 +1027,7 @@ ВсеАдреса = АдресаСервисовОбработкиЗаявления(); ШаблонОписанияОшибки = - НСтр("ru = 'Не удалось обновить состояние по причине: %1'"); + НСтр("ru = 'Не удалось обновить состояние по причине'") + ": "; Попытка ВебСервис = ВебСервисУЦ(ВсеАдреса.ВебСервис, "http://regservice.keydisk.ru/", "RegService"); @@ -1042,8 +1042,10 @@ КонецПопытки; Если Не ЗначениеЗаполнено(Ответ) Тогда - Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул пустой ответ.'")); + Результат.Ошибка = ШаблонОписанияОшибки + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустой ответ.'"), + "ReceivePacket"); Возврат Результат; КонецЕсли; @@ -1069,8 +1071,10 @@ Результат.ДанныеОтвета = ДвоичныеДанные; Иначе - Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул пустые данные.'")); + Результат.Ошибка = ШаблонОписанияОшибки + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустые данные.'"), + "ReceivePacket"); КонецЕсли; ИначеЕсли КодРезультата = "1" Тогда @@ -1080,9 +1084,11 @@ Если УзелDOM.Количество() > 0 Тогда Результат.Ошибка = УзелDOM[0].ТекстовоеСодержимое; Иначе - Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Метод ReceivePacket сервиса 1С:Подпись вернул код ошибки: %1'"), - Строка(КодРезультата)); + Результат.Ошибка = ШаблонОписанияОшибки + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул код ошибки: %2'"), + "ReceivePacket", + Строка(КодРезультата)); КонецЕсли; КонецЕсли; @@ -1129,9 +1135,11 @@ КонецЕсли; Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); - Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось разобрать результат выполнения метода ReceivePacket сервиса 1С:Подпись по причине: %1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + Результат.Ошибка = ШаблонОписанияОшибки + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось разобрать результат выполнения метода %1 сервиса 1С:Подпись по причине: %2'"), + "ReceivePacket", + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); КонецПопытки; УдалитьФайлы(ИмяФайлаПакетОтвета); @@ -1172,8 +1180,9 @@ Результат.ДанныеОтвета = ДвоичныеДанные; Иначе - Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки, - НСтр("ru = 'Метод ReceiveUpdatedPacket сервиса 1С:Подпись вернул пустые данные.'")); + Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул пустые данные.'"), + "ReceiveUpdatedPacket"); КонецЕсли; Иначе УзелDOM = ПостроительDOM.ПолучитьЭлементыПоИмени("errorMessage"); @@ -1181,8 +1190,9 @@ Результат.Ошибка = УзелDOM[0].ТекстовоеСодержимое; Иначе Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Метод ReceiveUpdatedPacket сервиса 1С:Подпись вернул код ошибки: %1'"), - Строка(КодРезультата)); + НСтр("ru = 'Метод %1 сервиса 1С:Подпись вернул код ошибки: %2'"), + "ReceiveUpdatedPacket", + Строка(КодРезультата)); КонецЕсли; КонецЕсли; @@ -1246,8 +1256,9 @@ Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось разобрать результат выполнения метода ReceiveUpdatedPacket сервиса 1С:Подпись по причине: %1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + НСтр("ru = 'Не удалось разобрать результат выполнения метода %1 сервиса 1С:Подпись по причине: %2'"), + "ReceiveUpdatedPacket", + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); КонецПопытки; УдалитьФайлы(ИмяФайлаПакетОтвета); @@ -1274,8 +1285,9 @@ Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); Результат.Ошибка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось разобрать результат выполнения метода ReceiveUpdatedPacket сервиса 1С:Подпись по причине: %1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + НСтр("ru = 'Не удалось разобрать результат выполнения метода %1 сервиса 1С:Подпись по причине: %2'"), + "ReceiveUpdatedPacket", + КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); КонецПопытки; КонецЕсли; @@ -1329,15 +1341,16 @@ ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | СертификатыКлючейЭлектроннойПодписиИШифрования.СодержаниеЗаявления КАК СодержаниеЗаявления, - | СертификатыКлючейЭлектроннойПодписиИШифрования.Отпечаток КАК Отпечаток + | СертификатыКлючейЭлектроннойПодписиИШифрования.Отпечаток КАК Отпечаток, + | ЕСТЬNULL(ЗаявленияНаВыпускСертификата.СодержаниеЗаявления, Неопределено) КАК СодержаниеЗаявления |ИЗ | Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыКлючейЭлектроннойПодписиИШифрования + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявленияНаВыпускСертификата КАК ЗаявленияНаВыпускСертификата + | ПО ЗаявленияНаВыпускСертификата.Сертификат = СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка |ГДЕ | СертификатыКлючейЭлектроннойПодписиИШифрования.Программа = &Программа | И (&СсылкаСертификата = НЕОПРЕДЕЛЕНО - | ИЛИ СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка <> &СсылкаСертификата) - | + | ИЛИ СертификатыКлючейЭлектроннойПодписиИШифрования.Ссылка <> &СсылкаСертификата) |УПОРЯДОЧИТЬ ПО | СертификатыКлючейЭлектроннойПодписиИШифрования.ДействителенДо УБЫВ"; @@ -1356,9 +1369,11 @@ ДанныеЗаявления.ОтпечатокСертификата = НРег(ПолучитьHexСтрокуИзДвоичныхДанных(ДанныеОтпечатка)); КонецЕсли; - РеквизитыЗаявления = СведенияОЗаявлении.СодержаниеЗаявления.Получить(); - Если ТипЗнч(РеквизитыЗаявления) = Тип("Структура") Тогда - Прервать; + Если СведенияОЗаявлении.СодержаниеЗаявления <> Неопределено Тогда + РеквизитыЗаявления = СведенияОЗаявлении.СодержаниеЗаявления.Получить(); + Если ТипЗнч(РеквизитыЗаявления) = Тип("Структура") Тогда + Прервать; + КонецЕсли; КонецЕсли; КонецЦикла; diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Form.form b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Form.form index ed8bb3242..ba2a1010d 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Form.form @@ -219,7 +219,7 @@ true - CommonPicture.Информация + StdPicture.Information AsFileRef @@ -2349,7 +2349,7 @@ false - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl index 45bf3aa60..2d6b92824 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl @@ -84,12 +84,7 @@ Элементы.ПоискИУстановкаОбновлений.Видимость = ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ПолучениеОбновленийПрограммы"); - ДоступнаУстановкаПатчейВБазовойВерсии = СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии(); - ЭтоБазоваяВерсия = СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации(); - Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда - ЗаголовокВариантаВыбора = НСтр("ru = 'Укажите файл обновления'"); - Элементы.ПереключательНуженФайлОбновления.СписокВыбора[1].Представление = ЗаголовокВариантаВыбора; - ИначеЕсли ЭтоВебКлиент Тогда + Если ЭтоВебКлиент Тогда ЗаголовокВариантаВыбора = НСтр("ru = 'Укажите файл исправлений:'"); Элементы.ПереключательНуженФайлОбновления.СписокВыбора[1].Представление = ЗаголовокВариантаВыбора; КонецЕсли; @@ -486,19 +481,9 @@ ПараметрыЗагрузки.Диалог.Фильтр = СвойстваДиалога.Фильтр; ПараметрыЗагрузки.Диалог.Каталог = КаталогФайлаОбновления(Элементы.ПолеФайлОбновления.ТекстРедактирования); - Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда - - ФайловаяСистемаКлиент.ЗагрузитьФайл( - Новый ОписаниеОповещения("ПослеВыбораФайлаОбновления", ЭтотОбъект), - ПараметрыЗагрузки); - - Иначе - - ФайловаяСистемаКлиент.ЗагрузитьФайлы( - Новый ОписаниеОповещения("ПослеВыбораФайловОбновления", ЭтотОбъект), - ПараметрыЗагрузки); - - КонецЕсли; + ФайловаяСистемаКлиент.ЗагрузитьФайлы( + Новый ОписаниеОповещения("ПослеВыбораФайловОбновления", ЭтотОбъект), + ПараметрыЗагрузки); КонецПроцедуры @@ -528,12 +513,8 @@ ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки конфигурации (*.cf)|*.cf'")); ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки обновления конфигурации(*.cfu)|*.cfu'")); - Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда - ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы поставки (*.cf*;*.cfu)|*.cf*;*.cfu'")); - Иначе - ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы (*.cf*;*.cfu;*.cfe;*.zip)|*.cf*;*.cfu;*.cfe;*.zip'")); - ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'")); - КонецЕсли; + ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы (*.cf*;*.cfu;*.cfe;*.zip)|*.cf*;*.cfu;*.cfe;*.zip'")); + ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'")); Свойства.Фильтр = СтрСоединить(ОписаниеФильтраДиалога, "|"); @@ -556,30 +537,6 @@ КонецПроцедуры -// Параметры: -// ОписаниеВыбранногоФайла - Неопределено -// - Структура: -// * Хранение - Строка -// * Имя - Строка -// ДополнительныеПараметры - Неопределено -// -&НаКлиенте -Процедура ПослеВыбораФайлаОбновления(ОписаниеВыбранногоФайла, ДополнительныеПараметры) Экспорт - - Если ТипЗнч(ОписаниеВыбранногоФайла) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; - - ОписаниеИмениФайла = СтрРазделить(ОписаниеВыбранногоФайла.Имя, ПолучитьРазделительПути()); - ОписаниеВыбранногоФайла.Вставить("ИмяФайла", ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()]); - - ОписаниеВыбранныхФайлов = Новый Массив; - ОписаниеВыбранныхФайлов.Добавить(ОписаниеВыбранногоФайла); - - ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов) - -КонецПроцедуры - // Параметры: // ОписаниеВыбранныхФайлов - Массив из Структура: // * Хранение - Строка diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Help/ru.html b/SSL/src/DataProcessors/УстановкаОбновлений/Help/ru.html index dc4c3f272..c1e59f7e0 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Help/ru.html +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Help/ru.html @@ -49,7 +49,7 @@
  • Помощник выводит сообщение об успешном завершении обновления программы. Перейдите по ссылке Новое в этой версии, для того чтобы просмотреть описание изменений программы. Нажмите Готово, для того чтобы приступить к работе в программе.
  • -
  • Если в программе предусмотрено отложенное обновление, выводится предупреждение о необходимости ознакомиться с дополнительными инструкциями для завершения обновления. Перейдите по соответствующей ссылке.
  • Планирование обновлений

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

    • При работе в клиент-серверном варианте работы программы можно задавать отложенное по времени обновление, например, можно отложить обновление конфигурации на ночь.
    • Для этого при обновлении конфигурации в помощнике выберите с помощью переключателя Запланировать установку обновления на указанное время и укажите время и дату обновления. diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt index fdba42c17..2b85d9add 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt @@ -42,7 +42,7 @@ try { } catch (ex) { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеОтказИнициализации]" + ex.message) + outf.WriteLine(mainEvent + ": [СообщениеОтказИнициализации]: " + ex.message) } WScript.Quit(1) @@ -51,14 +51,14 @@ try { try { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеСозданиеОбъектаCOMСоединителя]") + outf.WriteLine(mainEvent + ": [СообщениеСозданиеОбъектаCOMСоединителя]") } COMConnector = new ActiveXObject(COMConnectorName) } catch (ex) { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеОтказСозданияОбъектаCOMСоединителя]" + ex.message) + outf.WriteLine(mainEvent + ": [СообщениеОтказСозданияОбъектаCOMСоединителя]: " + ex.message) } WScript.Quit(1) @@ -67,14 +67,14 @@ try { try { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеУстановкаСоединенияСБазой]" + ConnectionString + "...") + outf.WriteLine(mainEvent + ": [СообщениеУстановкаСоединенияСБазой]: " + ConnectionString) } connection = COMConnector.Connect(ConnectionString) } catch (ex) { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеОтказСоединенияСБазойОбщее]" + ConnectionString + ": " + ex.message) + outf.WriteLine(mainEvent + ": [СообщениеОтказСоединенияСБазойОбщее] " + ConnectionString + ": " + ex.message) } WScript.Quit(1) @@ -85,14 +85,14 @@ try { if (Action == 'RemoveAll') { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеВызовУдалитьИсправленияИзСкрипта]") + outf.WriteLine(mainEvent + ": [СообщениеВызовУдалитьИсправленияИзСкрипта]") } connection.ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта(); } else { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеВызовОбновитьИсправленияИзСкрипта]") + outf.WriteLine(mainEvent + ": [СообщениеВызовОбновитьИсправленияИзСкрипта]") } connection.ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта(fixFileNames, removeFixNames) @@ -101,7 +101,7 @@ try { } catch (ex) { if (outf != null) { - outf.WriteLine(mainEvent + "[СообщениеОшибкаБСП]" + ex.message) + outf.WriteLine(mainEvent + ": [СообщениеОшибка]" + ex.message) } WScript.Quit(1) diff --git a/SSL/src/DefinedTypes/МестоХраненияФункциональныхОпций/МестоХраненияФункциональныхОпций.mdo b/SSL/src/DefinedTypes/МестоХраненияФункциональныхОпций/МестоХраненияФункциональныхОпций.mdo index 1ae71c49c..28eb3bd3b 100644 --- a/SSL/src/DefinedTypes/МестоХраненияФункциональныхОпций/МестоХраненияФункциональныхОпций.mdo +++ b/SSL/src/DefinedTypes/МестоХраненияФункциональныхОпций/МестоХраненияФункциональныхОпций.mdo @@ -16,6 +16,7 @@ ConstantValueManager.ИспользоватьЗаметки ConstantValueManager.ИспользоватьНапоминанияПользователя ConstantValueManager.ИспользоватьСинхронизациюДанных + ConstantValueManager.ИспользоватьГруппыВнешнихПользователей ConstantValueManager.ИспользоватьДатуНачалаЗадач ConstantValueManager.ИзменятьЗаданияЗаднимЧислом ConstantValueManager.ИспользоватьПолнотекстовыйПоиск diff --git a/SSL/src/DefinedTypes/ПредметНапоминания/ПредметНапоминания.mdo b/SSL/src/DefinedTypes/ПредметНапоминания/ПредметНапоминания.mdo index 340ae48bc..b3f12fb93 100644 --- a/SSL/src/DefinedTypes/ПредметНапоминания/ПредметНапоминания.mdo +++ b/SSL/src/DefinedTypes/ПредметНапоминания/ПредметНапоминания.mdo @@ -11,6 +11,7 @@ CatalogRef.Заметки TaskRef.ЗадачаИсполнителя + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования CatalogRef.ИдентификаторыОбъектовМетаданных diff --git a/SSL/src/DefinedTypes/ПредметНапоминанияОбъект/ПредметНапоминанияОбъект.mdo b/SSL/src/DefinedTypes/ПредметНапоминанияОбъект/ПредметНапоминанияОбъект.mdo index ca5517393..8ec40b0c5 100644 --- a/SSL/src/DefinedTypes/ПредметНапоминанияОбъект/ПредметНапоминанияОбъект.mdo +++ b/SSL/src/DefinedTypes/ПредметНапоминанияОбъект/ПредметНапоминанияОбъект.mdo @@ -10,6 +10,7 @@ CatalogObject.Заметки + CatalogObject.СертификатыКлючейЭлектроннойПодписиИШифрования CatalogObject.ИдентификаторыОбъектовМетаданных TaskObject.ЗадачаИсполнителя diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl index fd672afcd..f272bcc58 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl @@ -1512,7 +1512,8 @@ ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтрокаПоиска"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; - + ОтборЭлемента.ПравоеЗначение = ""; + ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РасширенныйПоиск"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; @@ -1748,10 +1749,14 @@ КонецЕсли; ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаСвойства Тогда ТекущиеДанные = Элементы.Свойства.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено Тогда - ИзменитьОтборСписок("Свойства",Новый Структура("Значение", ТекущиеДанные.Значение)); + + ИзменитьОтборСписок("Свойства", Новый Структура("Значение", ТекущиеДанные.Значение)); СохранитьТекущееАктивноеЗначениеВНастройках("Свойства", ТекущиеДанные.Значение); + КонецЕсли; + ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаКатегории Тогда ТекущиеДанные = Элементы.Категории.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда @@ -1869,7 +1874,7 @@ ИмяПоля = "Ссылка.[" + Строка(ТекущееСвойствоПанелиНавигации) + "]"; ИмяОтбора = Строка(ТекущееСвойствоПанелиНавигации); Если ТипЗнч(ДанныеДляОбработки.Значение) = Тип("Строка") - И ДанныеДляОбработки.Значение = НСтр("ru = 'Не указан'") Тогда + И ДанныеДляОбработки.Значение = "НеУказан" Тогда ВидСравненияЭлементаОтбора = ВидСравненияКомпоновкиДанных.НеЗаполнено; ПравоеЗначение = ""; @@ -2163,7 +2168,11 @@ | ВложенныйЗапрос.Значение КАК Значение, | СУММА(ВложенныйЗапрос.НеРассмотрено) КАК НеРассмотрено, | 1 КАК НомерКартинки, - | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Значение) КАК Представление + | ВЫБОР + | КОГДА ВложенныйЗапрос.Значение = &НеУказан + | ТОГДА &НеУказанПредставление + | ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Значение) + | КОНЕЦ КАК Представление |ИЗ | (ВЫБРАТЬ | ДокументВзаимодействий.Ссылка КАК Ссылка, @@ -2175,12 +2184,12 @@ | КОНЕЦ КАК НеРассмотрено | ИЗ | Документ.ЭлектронноеПисьмоИсходящее КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоИсходящее.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия + | И &ТекстУсловия | | ОБЪЕДИНИТЬ ВСЕ | @@ -2194,12 +2203,12 @@ | КОНЕЦ | ИЗ | Документ.ЭлектронноеПисьмоВходящее КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмоВходящее.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия + | И &ТекстУсловия | | ОБЪЕДИНИТЬ ВСЕ | @@ -2213,12 +2222,12 @@ | КОНЕЦ | ИЗ | Документ.Встреча КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.Встреча.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия + | И &ТекстУсловия | | ОБЪЕДИНИТЬ ВСЕ | @@ -2232,13 +2241,13 @@ | КОНЕЦ | ИЗ | Документ.ТелефонныйЗвонок КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СообщениеSMS.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия - | + | И &ТекстУсловия + | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ @@ -2251,12 +2260,12 @@ | КОНЕЦ | ИЗ | Документ.СообщениеSMS КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СообщениеSMS.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия + | И &ТекстУсловия | | ОБЪЕДИНИТЬ ВСЕ | @@ -2270,31 +2279,34 @@ | КОНЕЦ | ИЗ | Документ.ЗапланированноеВзаимодействие КАК ДокументВзаимодействий - | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий | ПО ДокументВзаимодействий.Ссылка = ПредметыПапкиВзаимодействий.Взаимодействие | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗапланированноеВзаимодействие.ДополнительныеРеквизиты КАК ДокументВзаимодействийДополнительныеРеквизиты | ПО (ДокументВзаимодействийДополнительныеРеквизиты.Ссылка = ДокументВзаимодействий.Ссылка) | И (ДокументВзаимодействийДополнительныеРеквизиты.Свойство = &Свойство) - | И &ТекстУсловия ) КАК ВложенныйЗапрос + | И &ТекстУсловия) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Значение | |УПОРЯДОЧИТЬ ПО - |Значение - | + | Значение |ИТОГИ ПО - |Значение ИЕРАРХИЯ"; + | Значение ИЕРАРХИЯ"; Иначе Запрос.Текст = Запрос.Текст + " |ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ВложенныйЗапрос.Значение, - | СУММА(ВложенныйЗапрос.НеРассмотрено) КАК НеРассмотрено, - | 1 КАК НомерКартинки, - | ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Значение) КАК Представление - |ИЗ + | ВложенныйЗапрос.Значение КАК Значение, + | СУММА(ВложенныйЗапрос.НеРассмотрено) КАК НеРассмотрено, + | 1 КАК НомерКартинки, + | ВЫБОР + | КОГДА ВложенныйЗапрос.Значение = &НеУказан + | ТОГДА &НеУказанПредставление + | ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Значение) + | КОНЕЦ КАК Представление + | ИЗ | (ВЫБРАТЬ | ДокументВзаимодействий.Ссылка КАК Ссылка, | ВЫБОР @@ -2310,7 +2322,7 @@ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения | ПО ДокументВзаимодействий.Ссылка = ДополнительныеСведения.Объект | И (ДополнительныеСведения.Свойство = &Свойство) - | И &ТекстУсловия ) КАК ВложенныйЗапрос + | И &ТекстУсловия) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Значение @@ -2325,8 +2337,9 @@ Запрос.Текст = СтрЗаменить(Запрос.Текст, "И &ТекстУсловия", ТекстУсловия); - Запрос.УстановитьПараметр("Свойство",ТекущееСвойствоПанелиНавигации); - Запрос.УстановитьПараметр("НеУказан", НСтр("ru = 'Не указан'")); + Запрос.УстановитьПараметр("Свойство", ТекущееСвойствоПанелиНавигации); + Запрос.УстановитьПараметр("НеУказан", "НеУказан"); + Запрос.УстановитьПараметр("НеУказанПредставление", НСтр("ru = 'Не указан'")); Результат = Запрос.Выполнить(); Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); @@ -2702,22 +2715,34 @@ Запрос = Новый Запрос; ТекстЗапросаПоОтбору = ПолучитьТекстЗапросаПоОтборуСписка(Запрос); - СтрокаПоКоторойИщем = Прав(ТекстЗапросаПоОтбору, СтрДлина(ТекстЗапросаПоОтбору) - СтрНайти(ТекстЗапросаПоОтбору,"ГДЕ") + 1); + ПозицияГде = СтрНайти(ТекстЗапросаПоОтбору, "ГДЕ"); + Если ПозицияГде = 0 Тогда + СтрокаПоКоторойИщем = ""; + Иначе + СтрокаПоКоторойИщем = Прав(ТекстЗапросаПоОтбору, СтрДлина(ТекстЗапросаПоОтбору) - ПозицияГде + 1); + КонецЕсли; + МассивСтрокУсловия = СтрРазделить(СтрокаПоКоторойИщем, Символы.ПС, Ложь); - УсловияПоЖурналуДокументов = Новый Массив; - УсловияПоРегистру = Новый Массив; + ТекстУсловийПоЖурналуДокументов = ""; + ТекстУсловийПоРегистру = ""; + КонструкцияИ = Символы.Таб + "И"; Для Каждого СтрокаУсловия Из МассивСтрокУсловия Цикл - СтрокаУсловия = СтрЗаменить(СтрокаУсловия,"&П","&Пар"); + СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "&П", "&Пар"); Если СтрНайти(СтрокаУсловия, "ЖурналДокументовВзаимодействия") Тогда - УсловияПоЖурналуДокументов.Добавить(СтрокаУсловия); - ИначеЕсли СтрНайти(СтрокаУсловия, "ПредметыВзаимодействий") Тогда - УсловияПоРегистру.Добавить(СтрокаУсловия); + Если ПустаяСтрока(ТекстУсловийПоЖурналуДокументов) + И СтрНачинаетсяС(СтрокаУсловия, КонструкцияИ) Тогда + СтрокаУсловия = Прав(СтрокаУсловия, СтрДлина(СтрокаУсловия) - СтрДлина(КонструкцияИ)); + КонецЕсли; + ТекстУсловийПоЖурналуДокументов = ТекстУсловийПоЖурналуДокументов + СтрокаУсловия + Символы.ПС; + ИначеЕсли СтрНайти(СтрокаУсловия, "ПредметыВзаимодействий") Тогда + Если ПустаяСтрока(ТекстУсловийПоРегистру) + И СтрНачинаетсяС(СтрокаУсловия, КонструкцияИ) Тогда + СтрокаУсловия = Прав(СтрокаУсловия, СтрДлина(СтрокаУсловия) - СтрДлина(КонструкцияИ)); + КонецЕсли; + ТекстУсловийПоРегистру = ТекстУсловийПоРегистру + СтрокаУсловия + Символы.ПС; КонецЕсли; - КонецЦикла; - - ТекстУсловийПоЖурналуДокументов = ?(УсловияПоЖурналуДокументов.Количество() = 0, "ИСТИНА", СтрСоединить(УсловияПоЖурналуДокументов, Символы.ПС)); - ТекстУсловийПоРегистру = ?(УсловияПоРегистру.Количество() = 0, "ИСТИНА", СтрСоединить(УсловияПоРегистру, Символы.ПС)); + КонецЦикла;; ТекстЗапросаДинамическийСписок = "ВЫБРАТЬ @@ -2745,8 +2770,10 @@ | И КонтактыВзаимодействий.Взаимодействие = ПредметыВзаимодействий.Взаимодействие | И &ТекстУсловияРегистрПапки)"; - ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияЖурналДокументов", ТекстУсловийПоЖурналуДокументов); - ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияРегистрПапки", ТекстУсловийПоРегистру); + ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияЖурналДокументов", + ?(ПустаяСтрока(ТекстУсловийПоЖурналуДокументов), "ИСТИНА", ТекстУсловийПоЖурналуДокументов)); + ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияРегистрПапки", + ?(ПустаяСтрока(ТекстУсловийПоРегистру), "ИСТИНА", ТекстУсловийПоРегистру)); СтруктураСвойствСписка.ТекстЗапроса = ТекстЗапросаДинамическийСписок; ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.КонтактыПанелиНавигации, СтруктураСвойствСписка); @@ -3071,7 +3098,9 @@ КонецЕсли; Если ТекущиеДанные <> Неопределено Тогда - ИзменитьОтборСписок("Свойства",Новый Структура("Значение", ТекущиеДанные.Значение)); + + ИзменитьОтборСписок("Свойства", Новый Структура("Значение", ТекущиеДанные.Значение)); + КонецЕсли; ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаКатегории Тогда @@ -3508,7 +3537,7 @@ КонецЕсли; Иначе - Если ДанныеДляОбработки.Значение = НСтр("ru = 'Все'") Тогда + Если ДанныеДляОбработки.Значение = "ВсеЗначения" Тогда Результат.ТекстСообщенияОшибка = НСтр("ru = 'Закладку без отбора создать нельзя.'"); Возврат Результат; КонецЕсли; @@ -3531,16 +3560,11 @@ Результат.ПредставлениеЭлемента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, ОбщегоНазначения.ПредметСтрокой(ДанныеДляОбработки.Значение)); Результат.НавигационнаяСсылкаЭлемента = ПолучитьНавигационнуюСсылку(ДанныеДляОбработки.Значение); - ИначеЕсли ДанныеДляОбработки.Значение = НСтр("ru = 'Не указан'") Тогда + ИначеЕсли ДанныеДляОбработки.Значение = "НеУказан" Тогда НаименованиеЗакладки = НСтр("ru = 'Предмет не указан'"); Результат.ПредставлениеЭлемента = ?(ТолькоПочта, НСтр("ru = 'Письма без предмета'"), НСтр("ru = 'Взаимодействия без предмета'")); - ИначеЕсли ДанныеДляОбработки.Значение = НСтр("ru = 'Прочие вопросы'") Тогда - - НаименованиеЗакладки = НСтр("ru = 'Прочие вопросы'"); - Результат.ПредставлениеЭлемента = ?(ТолькоПочта, НСтр("ru = 'Прочие письма'"), НСтр("ru = 'Прочие взаимодействия'")); - Иначе НаименованиеЗакладки = НСтр("ru = 'Тип предмета'") + " " + Строка(ДанныеДляОбработки.ОписаниеТипов.Типы()[0]); @@ -3552,7 +3576,7 @@ ИначеЕсли ИмяЭлементаФормы = "Свойства" Тогда Если ТипЗнч(ДанныеДляОбработки.Значение) = Тип("Строка") - И ДанныеДляОбработки.Значение = НСтр("ru = 'Не указан'") Тогда + И ДанныеДляОбработки.Значение = "НеУказан" Тогда НаименованиеЗакладки = ТекущееСвойствоПанелиНавигации.Наименование + " " + НСтр("ru = 'не указан'"); Результат.ПредставлениеЭлемента = ?(ТолькоПочта, НСтр("ru = 'Письма'"), НСтр("ru = 'Взаимодействия'")); Иначе @@ -3819,12 +3843,12 @@ &НаКлиенте Процедура ВыполнитьПолнотекстовыйПоиск() - КоличествоЭлементовНайдено = 0; - ТекстОшибки = НайтиВзаимодействияПолнотекстовыйПоиск(КоличествоЭлементовНайдено); - Если ТекстОшибки = Неопределено Тогда + Результат = РезультатПоискаВзаимодействийПолнотекстовымПоиском(); + + Если Не Результат.ЕстьОшибка Тогда РасширенныйПоиск = Истина; - ТекстОповещения = ?(ТолькоПочта, НСтр("ru = 'Найдено %1 писем.'"), НСтр("ru = 'Найдено %1 взаимодействий.'")); - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОповещения, Строка(КоличествоЭлементовНайдено)); + ТекстОповещения = ?(ТолькоПочта, НСтр("ru = 'Найдено писем - %1.'"), НСтр("ru = 'Найдено взаимодействий - %1.'")); + ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОповещения, Строка(Результат.КоличествоЭлементовНайдено)); ПоказатьОповещениеПользователя(ТекстОповещения); ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда @@ -3833,10 +3857,10 @@ ОписаниеНайденоПолнотекстовымПоиском = ""; КонецЕсли; Иначе - Если НЕ ТекстОшибки = НСтр("ru = 'Ничего не найдено'") Тогда - ПоказатьОповещениеПользователя(ТекстОшибки); - Иначе + Если Результат.ИдентификаторОшибки = "НичегоНеНайдено" Тогда РасширенныйПоиск = Ложь; + Иначе + ПоказатьОповещениеПользователя(Результат.ТекстОшибки); КонецЕсли; КонецЕсли; @@ -3845,8 +3869,14 @@ КонецПроцедуры &НаСервере -Функция НайтиВзаимодействияПолнотекстовыйПоиск(КоличествоЭлементов) +Функция РезультатПоискаВзаимодействийПолнотекстовымПоиском() + Результат = Новый Структура; + Результат.Вставить("ЕстьОшибка", Ложь); + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("ИдентификаторОшибки", ""); + Результат.Вставить("КоличествоЭлементовНайдено", 0); + // настроить параметры поиска ОбластьПоиска = Новый Массив; РазмерПорции = 200; @@ -3854,7 +3884,7 @@ СтрокаПолнотекстовогоПоиска = СтрокаПоиска; Если СтрНайти(СтрокаПолнотекстовогоПоиска, "*") = 0 Тогда СтрокаПолнотекстовогоПоиска = "*" + СтрокаПолнотекстовогоПоиска + "*"; - КонецЕсли; + КонецЕсли; СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(СтрокаПолнотекстовогоПоиска, РазмерПорции); ОбластьПоиска.Добавить(Метаданные.Документы.ЭлектронноеПисьмоВходящее); @@ -3883,7 +3913,12 @@ Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; - Возврат НСтр("ru = 'Слишком много результатов, уточните запрос.'"); + + Результат.ЕстьОшибка = Истина; + Результат.ИдентификаторОшибки = "СлишкомМногоРезультатов"; + Результат.ТекстОшибки = НСтр("ru = 'Слишком много результатов, уточните запрос.'"); + Возврат Результат; + КонецЕсли; // Возврат, если поиск не результативен. @@ -3894,13 +3929,18 @@ Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; - Возврат НСтр("ru = 'Ничего не найдено'"); + + Результат.ЕстьОшибка = Истина; + Результат.ИдентификаторОшибки = "НичегоНеНайдено"; + Результат.ТекстОшибки = НСтр("ru = 'Ничего не найдено.'"); + Возврат Результат; + КонецЕсли; - КоличествоЭлементов = СписокПоиска.ПолноеКоличество(); + Результат.КоличествоЭлементовНайдено = СписокПоиска.ПолноеКоличество(); НачальнаяПозиция = 0; - КонечнаяПозиция = ?(КоличествоЭлементов > РазмерПорции, РазмерПорции, КоличествоЭлементов) - 1; + КонечнаяПозиция = ?(Результат.КоличествоЭлементовНайдено > РазмерПорции, РазмерПорции, Результат.КоличествоЭлементовНайдено) - 1; ЕстьСледующаяПорция = Истина; // Обработать по порциям результаты ППД. @@ -3920,11 +3960,11 @@ КонецЦикла; НачальнаяПозиция = НачальнаяПозиция + РазмерПорции; - ЕстьСледующаяПорция = (НачальнаяПозиция < КоличествоЭлементов - 1); + ЕстьСледующаяПорция = (НачальнаяПозиция < Результат.КоличествоЭлементовНайдено - 1); Если ЕстьСледующаяПорция Тогда КонечнаяПозиция = - ?(КоличествоЭлементов > НачальнаяПозиция + РазмерПорции, РазмерПорции, - КоличествоЭлементов - НачальнаяПозиция) - 1; + ?(Результат.КоличествоЭлементовНайдено > НачальнаяПозиция + РазмерПорции, РазмерПорции, + Результат.КоличествоЭлементовНайдено - НачальнаяПозиция) - 1; СписокПоиска.СледующаяЧасть(); КонецЕсли; КонецЦикла; @@ -3936,7 +3976,11 @@ Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; - Возврат НСтр("ru = 'Ничего не найдено.'"); + + Результат.ЕстьОшибка = Истина; + Результат.ИдентификаторОшибки = "НичегоНеНайдено"; + Результат.ТекстОшибки = НСтр("ru = 'Ничего не найдено.'"); + Возврат Результат; КонецЕсли; // Удалим элемент из истории поиска если он там был. @@ -3963,7 +4007,8 @@ ВидСравненияКомпоновкиДанных.ВСписке,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ЦветФонаПоля; - Возврат Неопределено; + + Возврат Результат; КонецФункции diff --git a/SSL/src/Documents/Анкета/ManagerModule.bsl b/SSL/src/Documents/Анкета/ManagerModule.bsl index 8048d6330..8dc6977ea 100644 --- a/SSL/src/Documents/Анкета/ManagerModule.bsl +++ b/SSL/src/Documents/Анкета/ManagerModule.bsl @@ -87,7 +87,7 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать анкету: %1 по причине: + НСтр("ru = 'Не удалось обработать анкету %1 по причине: |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -99,14 +99,13 @@ Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Документ.Анкета"); Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ЗаполнитьРеквизитРежимАнкетирования не удалось обработать некоторые анкеты (пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать некоторые анкеты (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.Документы.Анкета,, - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ЗаполнитьРеквизитРежимАнкетирования обработала очередную порцию анкет: %1'"), - ОбъектовОбработано)); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция анкет: %1'"), ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Documents/ОтзывСогласияНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ОтзывСогласияНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Form.form index ef275d093..4b01d81ad 100644 --- a/SSL/src/Documents/ОтзывСогласияНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ОтзывСогласияНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Form.form @@ -542,7 +542,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl index ee36641d2..aca506e85 100644 --- a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl +++ b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl @@ -50,7 +50,12 @@ Если ПечатнаяФорма <> Неопределено Тогда // имена файлов ИменаФайлов = Новый Соответствие; - Шаблон = НСтр("ru = 'Согласие на обработку ПДн [Субъект] - [Организация] (№[Номер] получено [ДатаПолучения])'"); + Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Согласие на обработку ПДн [%1] - [%2] (№[%3] получено [%4])'"), + "Субъект", + "Организация", + "Номер", + "ДатаПолучения"); ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "Организация,Субъект,Номер,ДатаПолучения,Ссылка"); Для Каждого Ссылка Из МассивОбъектов Цикл ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка]; @@ -77,7 +82,12 @@ ОфисныеДокументы = Новый Соответствие; - Шаблон = НСтр("ru = 'Согласие на обработку ПДн [Субъект] - [Организация] (№[Номер] получено [ДатаПолучения])'"); + Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Согласие на обработку ПДн [%1] - [%2] (№[%3] получено [%4])'"), + "Субъект", + "Организация", + "Номер", + "ДатаПолучения"); ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "Организация,Субъект,Номер,ДатаПолучения,Ссылка"); Для Каждого Ссылка Из МассивОбъектов Цикл ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка]; diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl index 481f13a82..d182935ff 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl @@ -2467,10 +2467,23 @@ Результат = Новый Структура; Результат.Вставить("ТекстСообщения", ""); Результат.Вставить("ПисьмоОтправлено", Ложь); + Результат.Вставить("ОшибкаПодключения", Ложь); ПараметрыПисьма = Взаимодействия.ПараметрыПисьмаДляОтправки(ПисьмоОбъект); Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(ПисьмоОбъект.УчетнаяЗапись, ПараметрыПисьма); - РезультатОтправки = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(ПисьмоОбъект.УчетнаяЗапись, Письмо); + Попытка + РезультатОтправки = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(ПисьмоОбъект.УчетнаяЗапись, Письмо); + Исключение + ТекстОшибки = РаботаСПочтовымиСообщениями.РасширенноеПредставлениеОшибки( + ИнформацияОбОшибке(), ОбщегоНазначения.КодОсновногоЯзыка()); + + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , ПисьмоОбъект.Ссылка, ТекстОшибки); + + Результат.ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + Результат.ОшибкаПодключения = Истина; + Возврат Результат; + КонецПопытки; ПараметрыОбработкиОшибки = УправлениеЭлектроннойПочтой.ПараметрыОбработкиОшибкиОтправки(); ПараметрыОбработкиОшибки.ПисьмоОбъект = ПисьмоОбъект; @@ -2582,21 +2595,20 @@ Возврат; КонецЕсли; - Если Результат.ПисьмоОтправлено - И Результат.ТекстСообщения = "" Тогда - + Если Результат.ПисьмоОтправлено И Результат.ТекстСообщения = "" Тогда Закрыть(); + Возврат; + КонецЕсли; - ИначеЕсли Результат.ПисьмоОтправлено - И Результат.ТекстСообщения <> "" Тогда - + Если Результат.ПисьмоОтправлено Тогда Прочитать(); + КонецЕсли; + + Если Результат.ОшибкаПодключения Тогда + РаботаСПочтовымиСообщениямиКлиент.СообщитьОбОшибкеПодключения(Объект.УчетнаяЗапись, + НСтр("ru = 'Письмо не отправлено'"), Результат.ТекстСообщения); + Иначе ПоказатьПредупреждение(, Результат.ТекстСообщения); - - ИначеЕсли Результат.ТекстСообщения <> "" Тогда - - ПоказатьПредупреждение(, Результат.ТекстСообщения); - КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl index 2f74f84f5..939b1d038 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl @@ -282,17 +282,15 @@ ОтменитьТранзакцию(); МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта); - - ТекстСообщения = НСтр("ru = 'Не удалось обработать %ИмяОбъекта%: %Ссылка% по причине: %Причина%'"); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ИмяОбъекта%", ПолноеИмяОбъекта); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Ссылка%", ОбъектыДляОбработки.Ссылка); - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать %1 %2 по причине: + |%3'"), + ПолноеИмяОбъекта, ОбъектыДляОбработки.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Предупреждение, - МетаданныеОбъекта, - ОбъектыДляОбработки.Ссылка, - ТекстСообщения); + УровеньЖурналаРегистрации.Предупреждение, + МетаданныеОбъекта, + ОбъектыДляОбработки.Ссылка, + ТекстСообщения); КонецПопытки; diff --git a/SSL/src/Enums/ИсточникиПравилДляОбменаДанными/ИсточникиПравилДляОбменаДанными.mdo b/SSL/src/Enums/ИсточникиПравилДляОбменаДанными/ИсточникиПравилДляОбменаДанными.mdo index dd7cd842d..c79ff6d9d 100644 --- a/SSL/src/Enums/ИсточникиПравилДляОбменаДанными/ИсточникиПравилДляОбменаДанными.mdo +++ b/SSL/src/Enums/ИсточникиПравилДляОбменаДанными/ИсточникиПравилДляОбменаДанными.mdo @@ -43,4 +43,18 @@ Файл + + МенеджерТиповой + + ru + Менеджер (Типовой) + + + + МенеджерПользовательский + + ru + Менеджер (Пользовательский) + + diff --git a/SSL/src/Enums/СостоянияЗаявленияНаВыпускСертификата/СостоянияЗаявленияНаВыпускСертификата.mdo b/SSL/src/Enums/СостоянияЗаявленияНаВыпускСертификата/СостоянияЗаявленияНаВыпускСертификата.mdo index 4103a4710..e801fded4 100644 --- a/SSL/src/Enums/СостоянияЗаявленияНаВыпускСертификата/СостоянияЗаявленияНаВыпускСертификата.mdo +++ b/SSL/src/Enums/СостоянияЗаявленияНаВыпускСертификата/СостоянияЗаявленияНаВыпускСертификата.mdo @@ -56,6 +56,13 @@ Отклонено + + ИсполненоРаспискаНеОтправлена + + ru + Исполнено, расписка не отправлена + + ИсполненоСертификатНеУстановлен diff --git a/SSL/src/Enums/ТипыПроблемОбменаДанными/ТипыПроблемОбменаДанными.mdo b/SSL/src/Enums/ТипыПроблемОбменаДанными/ТипыПроблемОбменаДанными.mdo index 03ddbdbc7..e7807ab4f 100644 --- a/SSL/src/Enums/ТипыПроблемОбменаДанными/ТипыПроблемОбменаДанными.mdo +++ b/SSL/src/Enums/ТипыПроблемОбменаДанными/ТипыПроблемОбменаДанными.mdo @@ -28,6 +28,13 @@ true BothWays + + АдминистративнаяОшибкаПриложения + + ru + Административная ошибка приложения + + НепроведенныйДокумент diff --git a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo index a1da59635..7949e5630 100644 --- a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo +++ b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo @@ -38,6 +38,7 @@ CatalogObject.СценарииОбменовДанными ConstantValueManager.ПутьКТомуБезУчетаРегиональныхНастроек ConstantValueManager.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса + ConstantValueManager.ДанныеДляИзмененияМультиязычныхРеквизитов ConstantValueManager.ИсточникДанныхАдресногоКлассификатора ConstantValueManager.ИспользоватьПрофилиБезопасностиДляДОО ConstantValueManager.ХранитьФайлыВТомахНаДиске @@ -58,6 +59,7 @@ ConstantValueManager.СпособХраненияФайлов ConstantValueManager.ГлавныйУзел ConstantValueManager.ОценкаПроизводительностиПериодЗаписи + ConstantValueManager.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста ConstantValueManager.СписокРасширенийФайловOpenDocument ConstantValueManager.МинимальныйИнтервалРегламентныхЗаданийДОИОВМоделиСервиса ConstantValueManager.ИспользоватьРазделениеПоОбластямДанных diff --git a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ManagerModule.bsl b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ManagerModule.bsl index ea3bd23b2..ffca8f3ad 100644 --- a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ManagerModule.bsl +++ b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ManagerModule.bsl @@ -29,6 +29,7 @@ |ГДЕ | ОбновлениеИнформационнойБазы.Очередь < &Очередь | И НЕ ОбновлениеИнформационнойБазы.ЭтотУзел + | И НЕ ОбновлениеИнформационнойБазы.Временная | И ОбновлениеИнформационнойБазы.Очередь <> 0"; Запрос.УстановитьПараметр("Очередь", Очередь); @@ -41,12 +42,13 @@ // Если узла еще нет, то он будет создан. // // Параметры: -// Очередь - Число - очередь обработки данных. +// Очередь - Число - очередь обработки данных. +// Временная - Булево - признак для регистрации данных при перезапуске отложенного обновления. // // Возвращаемое значение: // ПланОбменаСсылка.ОбновлениеИнформационнойБазы. // -Функция УзелПоОчереди(Очередь) Экспорт +Функция УзелПоОчереди(Очередь, Временная = Ложь) Экспорт Если ТипЗнч(Очередь) <> Тип("Число") Или Очередь = 0 Тогда ВызватьИсключение НСтр("ru = 'Невозможно получить узел плана обмена ОбновлениеИнформационнойБазы, т.к. не передан номер очереди.'"); @@ -59,8 +61,10 @@ | ПланОбмена.ОбновлениеИнформационнойБазы КАК ОбновлениеИнформационнойБазы |ГДЕ | ОбновлениеИнформационнойБазы.Очередь = &Очередь + | И ОбновлениеИнформационнойБазы.Временная = &Временная | И НЕ ОбновлениеИнформационнойБазы.ЭтотУзел"); Запрос.УстановитьПараметр("Очередь", Очередь); + Запрос.УстановитьПараметр("Временная", Временная); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда @@ -72,6 +76,7 @@ Блокировки = Новый БлокировкаДанных; Блокировка = Блокировки.Добавить("ПланОбмена.ОбновлениеИнформационнойБазы"); Блокировка.УстановитьЗначение("Очередь", Очередь); + Блокировка.УстановитьЗначение("Временная", Временная); Блокировки.Заблокировать(); Выборка = Запрос.Выполнить().Выбрать(); @@ -82,8 +87,9 @@ ОчередьСтрокой = Строка(Очередь); УзелОбъект = СоздатьУзел(); УзелОбъект.Очередь = Очередь; + УзелОбъект.Временная = Временная; УзелОбъект.УстановитьНовыйКод(ОчередьСтрокой); - УзелОбъект.Наименование = ОчередьСтрокой; + УзелОбъект.Наименование = ОчередьСтрокой + ?(Временная, " " + НСтр("ru = 'Новая для перезапуска'"), ""); УзелОбъект.Записать(); Узел = УзелОбъект.Ссылка; КонецЕсли; diff --git a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo index 168f86c4c..ca8ff71e8 100644 --- a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo +++ b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo @@ -76,6 +76,7 @@ DontUse ExchangePlan.ОбновлениеИнформационнойБазы.Attribute.Очередь + ExchangePlan.ОбновлениеИнформационнойБазы.Attribute.Временная Managed Use @@ -95,6 +96,9 @@ Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы + + Catalog.ЭкземплярыСервераDSS + Catalog.ШаблоныАнкет @@ -206,6 +210,9 @@ InformationRegister.ОбработчикиСобытийСинхронизацииДанных + + InformationRegister.ЗаявленияНаВыпускСертификата + Catalog.ВнешниеКомпоненты @@ -308,6 +315,9 @@ InformationRegister.НастройкиСинхронизацииФайлов + + InformationRegister.ПрогрессОбновления + InformationRegister.УдалитьОбластиПерсональныхДанных @@ -374,6 +384,9 @@ InformationRegister.ИсполнителиЗадач + + Catalog.УчетныеЗаписиDSS + Document.ТелефонныйЗвонок @@ -482,6 +495,9 @@ InformationRegister.СостоянияОбменовДанными + + InformationRegister.ОповещенияПользователейСертификатов + Constant.ИспользоватьАвтономнуюРаботуВМоделиСервиса @@ -581,6 +597,9 @@ Constant.СоздаватьЭлектронныеПодписиНаСервере + + Constant.ИспользоватьГруппыВнешнихПользователей + Constant.ИспользоватьДатуИВремяВСрокахЗадач @@ -707,6 +726,9 @@ Constant.АвтоматическиНастраиватьРазрешенияВПрофиляхБезопасности + + Constant.РежимОчисткиФайлов + InformationRegister.КэшПрограммныхИнтерфейсов @@ -719,6 +741,9 @@ Constant.ДанныеДляОтложенногоОбновления + + Constant.СервисПереводаТекста + Constant.НеИспользоватьРазделениеПоОбластямДанных @@ -803,6 +828,9 @@ Constant.ИспользоватьОнлайнПоддержку + + InformationRegister.СертификатыПользователяDSS + InformationRegister.УдалитьНастройкиТранспортаОбмена @@ -908,6 +936,9 @@ Catalog.ЯзыкиПечатныхФорм + + Constant.ИспользоватьСервисПереводаТекста + Document.СогласиеНаОбработкуПерсональныхДанных @@ -1004,6 +1035,9 @@ BusinessProcess.Задание + + Catalog.МакетыПечатныхФорм + InformationRegister.ИдентификаторыОбъектовВерсийРасширений @@ -1157,4 +1191,19 @@ Use Use + + Временная + + ru + Временная + + + Boolean + + + + + Use + Use + diff --git a/SSL/src/FunctionalOptions/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo b/SSL/src/FunctionalOptions/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo new file mode 100644 index 000000000..e6f6f452f --- /dev/null +++ b/SSL/src/FunctionalOptions/ИспользоватьГруппыВнешнихПользователей/ИспользоватьГруппыВнешнихПользователей.mdo @@ -0,0 +1,11 @@ + + + ИспользоватьГруппыВнешнихПользователей + + ru + Использовать группы внешних пользователей + + Constant.ИспользоватьГруппыВнешнихПользователей + true + Catalog.ГруппыВнешнихПользователей + diff --git a/SSL/src/FunctionalOptions/ИспользоватьГруппыПользователей/ИспользоватьГруппыПользователей.mdo b/SSL/src/FunctionalOptions/ИспользоватьГруппыПользователей/ИспользоватьГруппыПользователей.mdo index cabe3cb73..0f379e4cd 100644 --- a/SSL/src/FunctionalOptions/ИспользоватьГруппыПользователей/ИспользоватьГруппыПользователей.mdo +++ b/SSL/src/FunctionalOptions/ИспользоватьГруппыПользователей/ИспользоватьГруппыПользователей.mdo @@ -8,5 +8,4 @@ Constant.ИспользоватьГруппыПользователей true Catalog.ГруппыПользователей - Catalog.ГруппыВнешнихПользователей diff --git a/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык1/ИспользоватьДополнительныйЯзык1.mdo b/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык1/ИспользоватьДополнительныйЯзык1.mdo index f4c2d4b24..dc7cfa7bb 100644 --- a/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык1/ИспользоватьДополнительныйЯзык1.mdo +++ b/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык1/ИспользоватьДополнительныйЯзык1.mdo @@ -9,4 +9,11 @@ true CommonAttribute.НаименованиеЯзык1 CommonAttribute.КомментарийЯзык1 + Catalog.ВариантыОтчетов.Attribute.ОписаниеЯзык1 + Catalog.ПредопределенныеВариантыОтчетов.Attribute.ОписаниеЯзык1 + Catalog.ПредопределенныеВариантыОтчетовРасширений.Attribute.ОписаниеЯзык1 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокФормыВыбораЗначенияЯзык1 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ПодсказкаЯзык1 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокЯзык1 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокФормыЗначенияЯзык1 diff --git a/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык2/ИспользоватьДополнительныйЯзык2.mdo b/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык2/ИспользоватьДополнительныйЯзык2.mdo index b8f7af283..e1f9b705a 100644 --- a/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык2/ИспользоватьДополнительныйЯзык2.mdo +++ b/SSL/src/FunctionalOptions/ИспользоватьДополнительныйЯзык2/ИспользоватьДополнительныйЯзык2.mdo @@ -9,4 +9,11 @@ true CommonAttribute.НаименованиеЯзык2 CommonAttribute.КомментарийЯзык2 + Catalog.ВариантыОтчетов.Attribute.ОписаниеЯзык2 + Catalog.ПредопределенныеВариантыОтчетовРасширений.Attribute.ОписаниеЯзык2 + Catalog.ПредопределенныеВариантыОтчетов.Attribute.ОписаниеЯзык2 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокЯзык2 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ПодсказкаЯзык2 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокФормыВыбораЗначенияЯзык2 + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЗаголовокФормыЗначенияЯзык2 diff --git a/SSL/src/FunctionalOptions/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo b/SSL/src/FunctionalOptions/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo new file mode 100644 index 000000000..9a26e4ae0 --- /dev/null +++ b/SSL/src/FunctionalOptions/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста/ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста.mdo @@ -0,0 +1,10 @@ + + + ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста + + ru + Использовать оптимизированную запись создания автономного рабочего места + + Constant.ИспользоватьОптимизированнуюЗаписьСозданияАвтономногоРабочегоМеста + true + diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl index 7941814ad..8e15c3225 100644 --- a/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl @@ -1569,15 +1569,23 @@ // Прогресс удаления предупреждений синхронизации // -Процедура ПрогрессУдалениеПредупрежденийСинхронизации(Знач ТекущийШаг, Максимум) +Процедура ПрогрессУдалениеПредупрежденийСинхронизации(Знач ТекущийШаг, Максимум, ИтераторВыборки = 0) ТекущийШаг = ?(ТекущийШаг = 0, 1, ТекущийШаг); - Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2'", ОбщегоНазначения.КодОсновногоЯзыка()); - ТекстПрогресса = СтрШаблон(Шаблон, ТекущийШаг, Максимум); + Если ИтераторВыборки = 0 Тогда + + Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2'", ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстПрогресса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ТекущийШаг, Максимум); + + Иначе + + Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2 (%3)'", ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстПрогресса = СтрШаблон(Шаблон, ТекущийШаг, Максимум, ИтераторВыборки); + + КонецЕсли; ПроцентВыполнения = ОКР(ТекущийШаг * 100 / Максимум, 0); - ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, ТекстПрогресса); КонецПроцедуры @@ -1676,7 +1684,7 @@ КонецЕсли; - ПрогрессУдалениеПредупрежденийСинхронизации(ПараметрыУдаления.КоличествоОперацийТекущийШаг, ПараметрыУдаления.КоличествоОперацийМаксимум); + ПрогрессУдалениеПредупрежденийСинхронизации(ПараметрыУдаления.КоличествоОперацийТекущийШаг, ПараметрыУдаления.КоличествоОперацийМаксимум, ИтераторВыборки); ЗафиксироватьТранзакцию(); diff --git a/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Form.form index d1dadb459..8d1d072cb 100644 --- a/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Form.form +++ b/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Form.form @@ -357,6 +357,33 @@ Auto InAdditionalSubmenu + + ФормаПерезапуститьОтложенноеОбновление + 30 + true + true + + true + + + ФормаПерезапуститьОтложенноеОбновлениеРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + Form.Command.ПерезапуститьОтложенноеОбновление + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left true @@ -417,6 +444,28 @@ DontUse Auto + + ПерезапуститьОтложенноеОбновление + + <key>ru</key> + <value>Перезапустить отложенное обновление...</value> + + 2 + + ru + Перезапустить отложенное обновление + + + true + + + + ПерезапуститьОтложенноеОбновление + + + Auto + Auto + diff --git a/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Module.bsl index 02dc480d2..d9586197d 100644 --- a/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/InformationRegisters/ВерсииПодсистем/Forms/ФормаСписка/Module.bsl @@ -12,6 +12,7 @@ Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТолькоПросмотр = Истина; + Элементы.ФормаПерезапуститьОтложенноеОбновление.Видимость = Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ(); КонецПроцедуры @@ -27,4 +28,9 @@ КонецПроцедуры +&НаКлиенте +Процедура ПерезапуститьОтложенноеОбновление(Команда) + ОткрытьФорму("РегистрСведений.ОбработчикиОбновления.Форма.ПерезапускОтложенногоОбновления"); +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/InformationRegisters/ДвоичныеДанныеФайлов/ManagerModule.bsl b/SSL/src/InformationRegisters/ДвоичныеДанныеФайлов/ManagerModule.bsl index abc337cce..3618605c0 100644 --- a/SSL/src/InformationRegisters/ДвоичныеДанныеФайлов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ДвоичныеДанныеФайлов/ManagerModule.bsl @@ -115,26 +115,26 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать версию файла: %1 по причине: - |%2'"), - Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + НСтр("ru = 'Не удалось обработать двоичные данные файла %1 по причине: + |%2'"), + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, - Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); + Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); КонецПопытки; КонецЦикла; Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов не удалось обработать некоторые версии файлов (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые двоичные данные файла (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - Метаданные.НайтиПоПолномуИмени("Справочник.ВерсииФайлов"),, + Метаданные.Справочники.ВерсииФайлов,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура ПеренестиДвоичныеДанныеФайловВРегистрСведенийДвоичныеДанныеФайлов обработала очередную порцию версий: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Обработана очередная порция двоичных данных файлов: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры @@ -194,12 +194,11 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать файл: %1 по причине: + НСтр("ru = 'Не удалось обработать файл %1 по причине: |%2'"), - Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - + Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, - Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); + Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); КонецПопытки; @@ -207,15 +206,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре СоздатьНедостающиеВерсииФайлов не удалось обработать некоторые файлы (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые файлы (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - Метаданные.НайтиПоПолномуИмени("Справочник.ВерсииФайлов"),, + Метаданные.Справочники.ВерсииФайлов,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура СоздатьНедостающиеВерсииФайлов обработала очередную порцию файлов: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Обработана очередная порция файлов: %1'"), + ОбъектовОбработано)); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Form.form new file mode 100644 index 000000000..bfaf1aaeb --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Form.form @@ -0,0 +1,437 @@ + + + + Сертификат + 1 + true + true + + true + + + Запись.Сертификат + + + СертификатРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 2 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + СертификатОснование + 28 + true + true + + true + + + Запись.СертификатОснование + + + СертификатОснованиеРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + СертификатОснованиеКонтекстноеМеню + 29 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + СостояниеЗаявления + 4 + true + true + + true + + + Запись.СостояниеЗаявления + + + СостояниеЗаявленияРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + СостояниеЗаявленияКонтекстноеМеню + 5 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ОформленоВЭлектронномВиде + 7 + true + true + + true + + + Запись.ОформленоВЭлектронномВиде + + + ОформленоВЭлектронномВидеРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + ОформленоВЭлектронномВидеКонтекстноеМеню + 8 + true + + CheckBoxField + Enter + true + Left + true + + + + ДляФизическогоЛица + 10 + true + true + + true + + + Запись.ДляФизическогоЛица + + + ДляФизическогоЛицаРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + ДляФизическогоЛицаКонтекстноеМеню + 11 + true + + CheckBoxField + Enter + true + Left + true + + + + ДатаОбновленияСостояния + 13 + true + true + + true + + + Запись.ДатаОбновленияСостояния + + + ДатаОбновленияСостоянияРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + ДатаОбновленияСостоянияКонтекстноеМеню + 14 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаОтправки + 16 + true + true + + true + + + Запись.ДатаОтправки + + + ДатаОтправкиРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + ДатаОтправкиКонтекстноеМеню + 17 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИдентификаторАбонента + 19 + true + true + + true + + + Запись.ИдентификаторАбонента + + + ИдентификаторАбонентаРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + ИдентификаторАбонентаКонтекстноеМеню + 20 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИдентификаторДокументооборота + 22 + true + true + + true + + + Запись.ИдентификаторДокументооборота + + + ИдентификаторДокументооборотаРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + ИдентификаторДокументооборотаКонтекстноеМеню + 23 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + СостояниеОбработкиЗаявления + 25 + true + true + + true + + + Запись.СостояниеОбработкиЗаявления + + + СостояниеОбработкиЗаявленияРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + СостояниеОбработкиЗаявленияКонтекстноеМеню + 26 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Запись + 1 + + InformationRegisterRecordManager.ЗаявленияНаВыпускСертификата + + + true + + + true + +
      true
      + true +
      + + + + + +
      diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Module.bsl b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Module.bsl new file mode 100644 index 000000000..d31bf1a47 --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаЗаписи/Module.bsl @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..61e6fb4bb --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Form.form new file mode 100644 index 000000000..b18cbe325 --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Form.form @@ -0,0 +1,594 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>User settings group</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Сертификат + 16 + true + true + + true + + + Список.Сертификат + + true + + СертификатРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + СертификатКонтекстноеМеню + 17 + true + + LabelField + Enter + true + Left + true + + true + true + + + + СостояниеЗаявления + 19 + true + true + + true + + + Список.СостояниеЗаявления + + + СостояниеЗаявленияРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + СостояниеЗаявленияКонтекстноеМеню + 20 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОформленоВЭлектронномВиде + 22 + true + true + + true + + + Список.ОформленоВЭлектронномВиде + + + ОформленоВЭлектронномВидеРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + ОформленоВЭлектронномВидеКонтекстноеМеню + 23 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ДляФизическогоЛица + 25 + true + true + + true + + + Список.ДляФизическогоЛица + + + ДляФизическогоЛицаРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + ДляФизическогоЛицаКонтекстноеМеню + 26 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ДатаОбновленияСостояния + 28 + true + true + + true + + + Список.ДатаОбновленияСостояния + + + ДатаОбновленияСостоянияРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ДатаОбновленияСостоянияКонтекстноеМеню + 29 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ДатаОтправки + 31 + true + true + + true + + + Список.ДатаОтправки + + + ДатаОтправкиРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + + ДатаОтправкиКонтекстноеМеню + 32 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ИдентификаторАбонента + 34 + true + true + + true + + + Список.ИдентификаторАбонента + + + ИдентификаторАбонентаРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + + ИдентификаторАбонентаКонтекстноеМеню + 35 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ИдентификаторДокументооборота + 37 + true + true + + true + + + Список.ИдентификаторДокументооборота + + + ИдентификаторДокументооборотаРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + + ИдентификаторДокументооборотаКонтекстноеМеню + 38 + true + + LabelField + Enter + true + Left + true + + true + true + + + + СостояниеОбработкиЗаявления + 40 + true + true + + true + + + Список.СостояниеОбработкиЗаявления + + + СостояниеОбработкиЗаявленияРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + + СостояниеОбработкиЗаявленияКонтекстноеМеню + 41 + true + + LabelField + Enter + true + Left + true + + true + true + + + + СертификатОснование + 43 + true + true + + true + + + Список.СертификатОснование + + + СертификатОснованиеРасширеннаяПодсказка + 45 + Label + true + true + + Left + + + + СертификатОснованиеКонтекстноеМеню + 44 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + 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 + + + + СписокКонтекстноеМеню + 4 + true + + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + true + AsFileRef + + Список.DefaultPicture + + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
      + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Change + Copy + Create + Delete + DontBlock + true + true + true + Vertical + true + true + true + auto + true + + Список + 1 + + DynamicList + + + true + + + true + +
      true
      + + InformationRegister.ЗаявленияНаВыпускСертификата + true + true + true + true + +
      + + + + + +
      diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..d31bf1a47 --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,18 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТолькоПросмотр = Истина; + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/ManagerModule.bsl b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/ЗаявленияНаВыпускСертификата.mdo b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/ЗаявленияНаВыпускСертификата.mdo new file mode 100644 index 000000000..42d3aa605 --- /dev/null +++ b/SSL/src/InformationRegisters/ЗаявленияНаВыпускСертификата/ЗаявленияНаВыпускСертификата.mdo @@ -0,0 +1,270 @@ + + + + + + + + + + + + ЗаявленияНаВыпускСертификата + + ru + Заявления на выпуск сертификата + + InDialog + InformationRegister.ЗаявленияНаВыпускСертификата.Form.ФормаЗаписи + InformationRegister.ЗаявленияНаВыпускСертификата.Form.ФормаСписка + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + ru + Заявление на выпуск сертификата + + + ru + Данные завялений на выпуск сертфиката, заполняются обработкой "ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата" + + + СостояниеЗаявления + + ru + Состояние заявления + + + EnumRef.СостоянияЗаявленияНаВыпускСертификата + + + + Use + Use + + Index + + + ОформленоВЭлектронномВиде + + ru + Оформлено в электронном виде + + + Boolean + + + + Use + Use + + + + ДляФизическогоЛица + + ru + Для физического лица + + + Boolean + + + + Use + Use + + + + ДатаОбновленияСостояния + + ru + Дата обновления состояния + + + Date + + + + + Use + Use + + + + ДатаОтправки + + ru + Дата отправки + + + Date + + + + + Use + Use + + + + ИдентификаторАбонента + + ru + Идентификатор абонента + + + String + + 36 + + + + + Use + Use + + + + ИдентификаторДокументооборота + + ru + Идентификатор документооборота + + + String + + 32 + + + + + Use + Use + + + + СодержаниеЗаявления + + ru + Содержание заявления + + + ValueStorage + + + + Use + Use + + + + СостояниеОбработкиЗаявления + + ru + Состояние обработки заявления + + + String + + + + ru + Дополнительные сообщения при обновлении состояния заявления + + + + Use + Use + + + + СертификатОснование + + ru + Сертификат основание + + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + ru + Сертификат, данные которого использовались при заполнении данных заявления + + + + Use + Use + + + + Сертификат + + ru + Сертификат + + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + ru + Ссылка на сертификат, для которого оформлялось заявление на выпуск сертификата + + + + Use + Use + true + + true + true + + + ФормаЗаписи + + ru + Форма записи + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl b/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl index d07c4d80a..a69cfe350 100644 --- a/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl @@ -133,7 +133,7 @@ ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Информация, , , + УровеньЖурналаРегистрации.Информация, МетаданныеРегистра, , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Процедура %1 обработала очередную порцию записей: %2'"), ИмяПроцедуры, diff --git a/SSL/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl b/SSL/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl index c3b2cbe30..9ef2ec8b8 100644 --- a/SSL/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl +++ b/SSL/src/InformationRegisters/КурсыВалют/RecordSetModule.bsl @@ -201,11 +201,8 @@ Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("КодыВалют", КодыВалют); Запрос.УстановитьПараметр("Период", Период); - - Выражение = Формула; - Если СтрНайти(Выражение, ".") = 0 Тогда - Выражение = СтрЗаменить(Выражение, ",", "."); - КонецЕсли; + + Выражение = ФорматироватьЧисла(Формула); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл @@ -267,6 +264,52 @@ КонецФункции +Функция ФорматироватьЧисла(Строка) Экспорт + + Результат = ""; + Число = ""; + ЕстьРазделительВЧисле = Ложь; + ПредыдущийСимвол = ""; + + ДлинаСтроки = СтрДлина(Строка); + Для Индекс = 1 По ДлинаСтроки Цикл + Если Индекс < ДлинаСтроки Тогда + СледующийСимвол = Сред(Строка, Индекс + 1, 1); + Иначе + СледующийСимвол = ""; + КонецЕсли; + Символ = Сред(Строка, Индекс, 1); + + ПредыдущийСимволЭтоРазделитель = ПредыдущийСимвол = "" Или СтрНайти("()[]/*-+%=<>, ", ПредыдущийСимвол) > 0; + + Если ЭтоЦифра(Символ) И (ПредыдущийСимволЭтоРазделитель Или ЭтоЦифра(ПредыдущийСимвол) И ЗначениеЗаполнено(Число)) Тогда + Число = Число + Символ; + ИначеЕсли Не ЕстьРазделительВЧисле И (Символ = "," Или Символ = ".") И ЭтоЦифра(СледующийСимвол) + И (ЭтоЦифра(ПредыдущийСимвол) Или ПредыдущийСимволЭтоРазделитель) И ЗначениеЗаполнено(Число) Тогда + Число = Число + "."; + ЕстьРазделительВЧисле = Истина; + Иначе + Результат = Результат + Число + Символ; + Число = ""; + ЕстьРазделительВЧисле = Ложь; + КонецЕсли; + + ПредыдущийСимвол = Символ; + Символ = ""; + КонецЦикла; + + Результат = Результат + Число + Символ; + Возврат Результат; + +КонецФункции + +Функция ЭтоЦифра(Символ) + + Возврат СтрНайти("1234567890", Символ) > 0; + +КонецФункции + + #КонецОбласти #Иначе diff --git a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl index 10e55bcfe..c3e1570d1 100644 --- a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl @@ -506,7 +506,7 @@ НСтр("ru = '%1 | |Трассировка: - |ЗащищенноеСоединение: %2 + |Защищенное соединение: %2 |Таймаут: %3'"), ТекстОшибки, Формат(ЗащищенноеСоединение, НСтр("ru = 'БЛ=Нет; БИ=Да'")), diff --git a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl index 98823d5a2..e6f421be5 100644 --- a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl +++ b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl @@ -50,18 +50,16 @@ Новый Структура("Идентификатор, ТипДанных", Запись.Идентификатор, Запись.ТипДанных)); Если КонтрольныеСтроки.Количество() <> 1 Тогда - ОшибкаКонтроля(); - Иначе - - КонтрольнаяСтрока = КонтрольныеСтроки.Получить(0); - - ТекущиеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(Запись.Данные.Получить()); - КонтрольныеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(КонтрольнаяСтрока.Данные.Получить()); - - Если ТекущиеДанные <> КонтрольныеДанные Тогда - ОшибкаКонтроля(); - КонецЕсли; + ВызватьИсключениеКонтроля(); + КонецЕсли; + КонтрольнаяСтрока = КонтрольныеСтроки.Получить(0); + + ТекущиеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(Запись.Данные.Получить()); + КонтрольныеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(КонтрольнаяСтрока.Данные.Получить()); + + Если ТекущиеДанные <> КонтрольныеДанные Тогда + ВызватьИсключениеКонтроля(); КонецЕсли; КонецЦикла; @@ -94,10 +92,12 @@ КонецПроцедуры -Процедура ОшибкаКонтроля() +Процедура ВызватьИсключениеКонтроля() - ВызватьИсключение НСтр("ru = 'Недопустимое изменение ресурса Данные записи регистра сведений КэшПрограммныхИнтерфейсов - |внутри транзакции записи из сеанса с включенным разделением.'"); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое изменение ресурса %1 записи регистра сведений %2 + |внутри транзакции записи из сеанса с включенным разделением.'"), + "Данные", "КэшПрограммныхИнтерфейсов"); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/НаличиеФайлов/ManagerModule.bsl b/SSL/src/InformationRegisters/НаличиеФайлов/ManagerModule.bsl index 507347eaa..af34b9919 100644 --- a/SSL/src/InformationRegisters/НаличиеФайлов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НаличиеФайлов/ManagerModule.bsl @@ -100,10 +100,10 @@ ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать версию файла: %1 по причине: - |%2'"), + НСтр("ru = 'Не удалось обработать сведения о наличие файлов %1 по причине: + |%2'"), Выборка.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Выборка.Ссылка.Метаданные(), Выборка.Ссылка, ТекстСообщения); КонецПопытки; @@ -115,15 +115,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре РегистрыСведений.НаличиеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать программы электронной подписи (пропущены): %1'"), - ПроблемныхОбъектов); + НСтр("ru = 'Не удалось обработать сведения о наличие файлов (пропущены): %1'"), + ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе - ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - , , - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура РегистрыСведений.НаличиеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию программ электронной подписи: %1'"), - ОбъектовОбработано)); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработана очередная порция сведений о наличие файлов: %1'"), + ОбъектовОбработано)); КонецЕсли; Параметры.ОбработкаЗавершена = ОбработкаЗавершена; diff --git a/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl index c95f39b90..8df06f266 100644 --- a/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl @@ -706,8 +706,6 @@ Обработано = 0; Отказано = 0; - #Область ОбработкаДанных - Пока Вариант.Следующий() Цикл Данные.Вариант = Вариант.Ссылка; @@ -739,36 +737,24 @@ КонецПопытки; КонецЦикла; - - #КонецОбласти - - #Область ОбработкаСтатистики - + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена( Параметры.Очередь, Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); Если Обработано = 0 И Отказано <> 0 Тогда - - ШаблонСообщения = НСтр("ru = 'Процедуре ПеренестиНастройкиДоступностиВариантаОтчета не удалось обработать некоторые данные: %1'"); + ШаблонСообщения = НСтр("ru = 'Не удалось обработать некоторые настройки вариантов отчетов: %1'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Отказано); - ВызватьИсключение ТекстСообщения; - Иначе - - ШаблонКомментария = НСтр("ru = 'Процедура ПеренестиНастройкиДоступностиВариантаОтчета обработала очередной пакет данных: %1'"); + ШаблонКомментария = НСтр("ru = 'Обработан очередной пакет настроек вариантов отчетов: %1'"); Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано); - ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, МетаданныеРегистра,, Комментарий); - КонецЕсли; - #КонецОбласти - КонецПроцедуры Процедура ПеренестиНастройкиДоступностиВариантаОтчета(Данные) diff --git a/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/Forms/ФормаСписка/Module.bsl index 9dc958095..f096e951b 100644 --- a/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/Forms/ФормаСписка/Module.bsl @@ -58,7 +58,7 @@ #КонецОбласти -#Область ОбработчикиСобытийЭлементовФормы +#Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура РежимОчисткиФайловПриИзменении(Элемент) diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/Forms/ФормаСписка/Form.form index b92621b85..648fdd9dc 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/Forms/ФормаСписка/Form.form +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/Forms/ФормаСписка/Form.form @@ -90,38 +90,11 @@ true + None СписокКоманднаяПанель 5 - - ФормаИзменить - 19 - true - true - - true - - - ФормаИзменитьРасширеннаяПодсказка - 20 - Label - true - true - - Left - - - Form.StandardCommand.Change - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - Left - true СписокСтрокаПоиска @@ -231,6 +204,8 @@ Список.DefaultPicture + None + None true 60 @@ -247,7 +222,35 @@ ФормаКоманднаяПанель -1 + + ФормаИзменить + 19 + true + true + + true + + + ФормаИзменитьРасширеннаяПодсказка + 20 + Label + true + true + + Left + + + Form.StandardCommand.Change + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + Left + true Copy Create diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Form.form b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Form.form new file mode 100644 index 000000000..9a1d32a8b --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Form.form @@ -0,0 +1,449 @@ + + + + Страницы + 19 + + СтраницаГлавное + 21 + + ГруппаШапка + 1 + + КартинкаИнформация + 6 + true + true + + true + + + КартинкаИнформацияРасширеннаяПодсказка + 8 + Label + true + true + + Left + + + + КартинкаИнформацияКонтекстноеМеню + 7 + true + + true + true + + + StdPicture.DialogInformation + + AsFileRef + + + + ГруппаИнформация + 31 + + НадписьИнформация + 3 + + <key>ru</key> + <value>Перезапуск отложенного обновления нужен в тех случаях, когда отложенный обработчик завершился с ошибкой, исправление которой потребовало повторно с самого начала зарегистрировать данные для обновления. + +При этом: + • не требуется завершать работу пользователей в программе, а по завершении регистрации отложенное обновление будет запущено автоматически; + • все незавершенные отложенные обработчики будут перезапущены автоматически. Дополнительно можно выбрать другие обработчики для перезапуска:</value> + + true + true + + true + + + НадписьИнформацияРасширеннаяПодсказка + 5 + Label + true + true + + Left + + + + НадписьИнформацияКонтекстноеМеню + 4 + true + + Label + 80 + true + + Left + + + + ГиперссылкаВыборОбработчиков + 12 + + <key>ru</key> + <value>Выбрать обработчики</value> + + true + true + + true + + + ГиперссылкаВыборОбработчиковРасширеннаяПодсказка + 14 + Label + true + true + + Left + + + + ГиперссылкаВыборОбработчиковКонтекстноеМеню + 13 + true + + Label + true + true + + + Click + ГиперссылкаВыборОбработчиковНажатие + + + URLProcessing + ГиперссылкаВыборОбработчиковОбработкаНавигационнойСсылки + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Информация</value> + + + ГруппаИнформацияРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница главное</value> + + + СтраницаГлавноеРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + Page + + Vertical + false + + + + СтраницаДлительнаяОперация + 23 + + КартинкаДлительнаяОперация + 25 + + <key>ru</key> + <value>Картинка длительная операция</value> + + true + true + + true + + + КартинкаДлительнаяОперацияРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + КартинкаДлительнаяОперацияКонтекстноеМеню + 26 + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + + AsFileRef + + + + НадписьДлительнаяОперация + 28 + + <key>ru</key> + <value>Выполняется регистрация данных для отложенного обновления.</value> + + true + true + + true + + + НадписьДлительнаяОперацияРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + НадписьДлительнаяОперацияКонтекстноеМеню + 29 + true + + Label + true + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница длительная операция</value> + + + СтраницаДлительнаяОперацияРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы</value> + + + СтраницыРасширеннаяПодсказка + 20 + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаПерезапустить + 15 + true + true + + true + + + ФормаПерезапуститьРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + Form.Command.Перезапустить + Auto + true + true + true + UserCmds + Auto + + + ФормаЗакрыть + 17 + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + Form.StandardCommand.Close + Normal + Auto + true + true + UserCmds + Auto + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + auto + true + + ВыбранныеОбработчики + 1 + + ValueList + + + true + + + true + + + + + + + Перезапустить + + <key>ru</key> + <value>Перезапустить</value> + + 1 + + ru + Перезапустить + + + true + + + + Перезапустить + + + Auto + Auto + + + + + + diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Module.bsl b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Module.bsl new file mode 100644 index 000000000..fe18a4e94 --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ПерезапускОтложенногоОбновления/Module.bsl @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Заголовок = НСтр("ru = 'Перезапуск отложенного обновления'"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ГиперссылкаВыборОбработчиковОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ГиперссылкаВыборОбработчиковНажатие(Элемент) + ОбработкаЗавершения = Новый ОписаниеОповещения("ПослеВыбораОбработчиков", ЭтотОбъект); + + ПараметрыВыбора = Новый Структура; + ПараметрыВыбора.Вставить("ВыбранныеОбработчики", ВыбранныеОбработчики); + ОткрытьФорму("РегистрСведений.ОбработчикиОбновления.Форма.ФормаВыбора", ПараметрыВыбора,,,,, ОбработкаЗавершения); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКоманд + +&НаКлиенте +Процедура Перезапустить(Команда) + Элементы.ФормаПерезапустить.Доступность = Ложь; + + ДлительнаяОперация = ДлительнаяОперация(); + + ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект); + ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеВыбораОбработчиков(Результат, ДополнительныеПараметры) Экспорт + + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + ВыбранныеОбработчики.ЗагрузитьЗначения(Результат); + + Если ВыбранныеОбработчики.Количество() = 0 Тогда + Элементы.ГиперссылкаВыборОбработчиков.Заголовок = НСтр("ru = 'Выбрать обработчики'"); + Иначе + Элементы.ГиперссылкаВыборОбработчиков.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выбрано обработчиков: %1'"), + ВыбранныеОбработчики.Количество()); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ДлительнаяОперация() + ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); + ПараметрыВыполнения.ОжидатьЗавершение = 0; + + Результат = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ОбновлениеИнформационнойБазы.ПерезапуститьОтложенноеОбновление", + ВыбранныеОбработчики.ВыгрузитьЗначения()); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Оповестить("ОтложенноеОбновлениеПерезапущено"); + Закрыть(); +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Form.form b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Form.form new file mode 100644 index 000000000..458bb9bdf --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Form.form @@ -0,0 +1,660 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + СписокОбработчиков + 31 + + <key>ru</key> + <value>Обработчиков</value> + + true + true + + true + + + СписокОбработчиков + + None + Add + Change + Copy + Delete + MoveDown + MoveUp + + Выбран + 55 + true + true + + true + + + СписокОбработчиков.Выбран + + None + + ВыбранРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + ВыбранКонтекстноеМеню + 56 + true + + CheckBoxField + Auto + true + Left + true + + + + ИмяОбработчика + 44 + true + true + + true + + + СписокОбработчиков.ИмяОбработчика + + + ИмяОбработчикаРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ИмяОбработчикаКонтекстноеМеню + 45 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + Статус + 47 + true + true + + true + + + СписокОбработчиков.Статус + + + СтатусРасширеннаяПодсказка + 49 + Label + true + true + + Left + + + + СтатусКонтекстноеМеню + 48 + true + + InputField + Auto + true + Left + true + + 5 + true + true + true + true + true + true + Normal + + + + Версия + 50 + true + true + + true + + + СписокОбработчиков.Версия + + + ВерсияРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 51 + true + + InputField + Auto + true + Left + true + + 5 + true + true + true + true + true + true + Normal + + + + СписокОбработчиковКоманднаяПанель + 33 + Left + + + Selection + СписокОбработчиковВыбор + + + BeforeAddRow + СписокОбработчиковПередНачаломДобавления + + + BeforeDeleteRow + СписокОбработчиковПередУдалением + + + BeforeRowChange + СписокОбработчиковПередНачаломИзменения + + + СписокОбработчиковСтрокаПоиска + 35 + + СписокОбработчиковСтрокаПоискаРасширеннаяПодсказка + 37 + Label + true + true + + Left + + + + СписокОбработчиковСтрокаПоискаКонтекстноеМеню + 36 + true + + СписокОбработчиков + + true + + + + СписокОбработчиковСостояниеПросмотра + 38 + + СписокОбработчиковСостояниеПросмотраРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + СписокОбработчиковСостояниеПросмотраКонтекстноеМеню + 39 + true + + ViewStatusAddition + СписокОбработчиков + + true + + + + СписокОбработчиковУправлениеПоиском + 41 + + СписокОбработчиковУправлениеПоискомРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + + СписокОбработчиковУправлениеПоискомКонтекстноеМеню + 42 + true + + SearchControlAddition + СписокОбработчиков + + true + + + + СписокОбработчиковРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + СписокОбработчиковКонтекстноеМеню + 32 + true + + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + AsFileRef + true + +
      + + ФормаКоманднаяПанель + -1 + + ФормаГотово + 25 + true + true + + true + + + ФормаГотовоРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + Form.Command.Готово + Auto + true + true + true + UserCmds + Auto + + + ФормаВыбрать + 27 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + Form.Command.Выбрать + Normal + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьВыбор + 29 + true + true + + true + + + ФормаОтменитьВыборРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + Form.Command.ОтменитьВыбор + Normal + Auto + true + true + UserCmds + Auto + + + ФормаОтменитьВыборВсех + 53 + true + true + + true + + + ФормаОтменитьВыборВсехРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + Form.Command.ОтменитьВыборВсех + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + 100 + LockOwner + true + true + Vertical + true + true + true + auto + true + + СписокОбработчиков + + <key>ru</key> + <value>Список обработчиков</value> + + 3 + + ValueTable + + + true + + + true + + + ИмяОбработчика + + <key>ru</key> + <value>Имя обработчика</value> + + 1 + + String + + + + true + + + true + + + + Статус + + <key>ru</key> + <value>Статус</value> + + 2 + + String + + + + true + + + true + + + + Версия + + <key>ru</key> + <value>Версия</value> + + 3 + + String + + + + true + + + true + + + + Выбран + + <key>ru</key> + <value>Выбран</value> + + 4 + + Boolean + + + true + + + true + + + + + Готово + + <key>ru</key> + <value>Готово</value> + + 1 + + ru + Готово + + + true + + + + Готово + + + Auto + Auto + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 2 + + ru + Выбрать + + + true + + + + Выбрать + + + Auto + Auto + + + ОтменитьВыбор + + <key>ru</key> + <value>Отменить выбор</value> + + 3 + + ru + Отменить выбор + + + true + + + + ОтменитьВыбор + + + Auto + Auto + + + ОтменитьВыборВсех + + <key>ru</key> + <value>Отменить выбор всех</value> + + 4 + + ru + Отменить выбор всех + + + true + + + + ОтменитьВыборВсех + + + Auto + Auto + + + ВыбранныеОбработчики + + ValueList + + + + + + +
      diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Module.bsl b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Module.bsl new file mode 100644 index 000000000..4bf3e5b34 --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаВыбора/Module.bsl @@ -0,0 +1,147 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Заголовок = НСтр("ru = 'Выбор обработчиков для перезапуска отложенного обновления'"); + + УстановитьУсловноеОформление(); + ЗаполнитьСписокОбработчиков(Параметры.ВыбранныеОбработчики.ВыгрузитьЗначения()); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокОбработчиков + +&НаКлиенте +Процедура СписокОбработчиковВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Элемент.ТекущиеДанные.Выбран = Не Элемент.ТекущиеДанные.Выбран; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработчиковПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработчиковПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработчиковПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Готово(Команда) + Закрыть(ВыбранныеОбработчики()); +КонецПроцедуры + +&НаКлиенте +Процедура Выбрать(Команда) + + Для Каждого ИдентификаторСтроки Из Элементы.СписокОбработчиков.ВыделенныеСтроки Цикл + ВыделеннаяСтрока = СписокОбработчиков.НайтиПоИдентификатору(ИдентификаторСтроки); + ВыделеннаяСтрока.Выбран = Истина; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьВыбор(Команда) + Для Каждого ИдентификаторСтроки Из Элементы.СписокОбработчиков.ВыделенныеСтроки Цикл + ВыделеннаяСтрока = СписокОбработчиков.НайтиПоИдентификатору(ИдентификаторСтроки); + ВыделеннаяСтрока.Выбран = Ложь; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьВыборВсех(Команда) + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("Выбран", Истина); + НайденныеСтроки = СписокОбработчиков.НайтиСтроки(ПараметрыПоиска); + Для Каждого Строка Из НайденныеСтроки Цикл + Строка.Выбран = Ложь; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИмяОбработчика.Имя); + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Статус.Имя); + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Версия.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокОбработчиков.Выбран"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Роса); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокОбработчиков(ВыбранныеОбработчики) + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.УстановитьПараметр("РежимВыполненияОтложенногоОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно); + Запрос.Текст = + "ВЫБРАТЬ + | РегистрСведенийОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика, + | РегистрСведенийОбработчикиОбновления.Статус КАК Статус, + | РегистрСведенийОбработчикиОбновления.Версия КАК Версия + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК РегистрСведенийОбработчикиОбновления + |ГДЕ + | РегистрСведенийОбработчикиОбновления.Статус = &Статус + | И РегистрСведенийОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОтложенногоОбработчика"; + Обработчики = Запрос.Выполнить().Выгрузить(); + Обработчики.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево")); + + Для Каждого ВыбранныйОбработчик Из ВыбранныеОбработчики Цикл + НайденныйОбработчик = Обработчики.Найти(ВыбранныйОбработчик, "ИмяОбработчика"); + НайденныйОбработчик.Выбран = Истина; + КонецЦикла; + + ЗначениеВРеквизитФормы(Обработчики, "СписокОбработчиков"); +КонецПроцедуры + +&НаСервере +Функция ВыбранныеОбработчики() + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Выбран", Истина); + ВыбранныеОбработчики = СписокОбработчиков.Выгрузить(ПараметрыОтбора, "ИмяОбработчика"); + + Возврат ВыбранныеОбработчики.ВыгрузитьКолонку("ИмяОбработчика"); + +КонецФункции + +#КонецОбласти + + diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Form.form new file mode 100644 index 000000000..04b720951 --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Form.form @@ -0,0 +1,1479 @@ + + + + ГруппаШапка + 85 + + ИмяОбработчика + 4 + true + true + + true + + + Запись.ИмяОбработчика + + + ИмяОбработчикаРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + ИмяОбработчикаКонтекстноеМеню + 5 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + ПроцедураЗаполненияДанныхОбновления + 43 + + <key>ru</key> + <value>Процедура заполнения</value> + + true + true + + true + + + Запись.ПроцедураЗаполненияДанныхОбновления + + + ПроцедураЗаполненияДанныхОбновленияРасширеннаяПодсказка + 45 + Label + true + true + + Left + + + + ПроцедураЗаполненияДанныхОбновленияКонтекстноеМеню + 44 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + ГруппаОсновныеСвойства + 73 + + ГруппаСтатусВерсия + 75 + + Статус + 7 + true + true + + true + + + Запись.Статус + + + СтатусРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + СтатусКонтекстноеМеню + 8 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + Версия + 10 + true + true + + true + + + Запись.Версия + + + ВерсияРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 11 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Статус версия</value> + + + ГруппаСтатусВерсияРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаРежимБиблиотека + 77 + + РежимВыполнения + 19 + true + true + + true + + + Запись.РежимВыполнения + + + РежимВыполненияРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + РежимВыполненияКонтекстноеМеню + 20 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИмяБиблиотеки + 13 + true + true + + true + + + Запись.ИмяБиблиотеки + + + ИмяБиблиотекиРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + ИмяБиблиотекиКонтекстноеМеню + 14 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Режим библиотека</value> + + + ГруппаРежимБиблиотекаРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Основные свойства</value> + + + ГруппаОсновныеСвойстваРасширеннаяПодсказка + 74 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ГруппаОчередьПопыткиМногопоточность + 79 + + ОчередьОтложеннойОбработки + 46 + + <key>ru</key> + <value>Очередь</value> + + true + true + + true + + + Запись.ОчередьОтложеннойОбработки + + + ОчередьОтложеннойОбработкиРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ОчередьОтложеннойОбработкиКонтекстноеМеню + 47 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЧислоПопыток + 28 + true + true + + true + + + Запись.ЧислоПопыток + + + ЧислоПопытокРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ЧислоПопытокКонтекстноеМеню + 29 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + Многопоточный + 55 + true + true + + true + + + Запись.Многопоточный + + + МногопоточныйРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + МногопоточныйКонтекстноеМеню + 56 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Очередь попытки многопоточность</value> + + + ГруппаОчередьПопыткиМногопоточностьРасширеннаяПодсказка + 80 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ОбрабатываемыеДанные + 97 + true + + true + + + ОбрабатываемыеДанные + + + ОбрабатываемыеДанныеРасширеннаяПодсказка + 99 + Label + true + true + + Left + + + + ОбрабатываемыеДанныеКонтекстноеМеню + 98 + true + + LabelField + Enter + true + Left + true + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ГруппаШапкаРасширеннаяПодсказка + 86 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + DontUse + Auto + + + + ГруппаКомментарий + 81 + + Комментарий + 34 + true + true + + true + + + Запись.Комментарий + + None + + КомментарийРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 35 + true + + InputField + Enter + true + Left + true + + 5 + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ГруппаКомментарийРасширеннаяПодсказка + 82 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + Button + NormalSeparation + true + true + auto + Auto + Auto + + + + ГруппаИнформацияОбОшибке + 83 + + ИнформацияОбОшибке + 31 + true + true + + true + + + Запись.ИнформацияОбОшибке + + None + + ИнформацияОбОшибкеРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + + ИнформацияОбОшибкеКонтекстноеМеню + 32 + true + + InputField + Enter + true + Left + true + + 5 + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Информация об ошибке</value> + + + ГруппаИнформацияОбОшибкеРасширеннаяПодсказка + 84 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + Button + NormalSeparation + true + true + auto + Auto + Auto + + + + ГруппаДополнительныеСвойства + 87 + + ГруппаСвойстваБулево + 95 + + ОбработкаПорцииЗавершена + 58 + true + true + + true + + + Запись.ОбработкаПорцииЗавершена + + Right + + ОбработкаПорцииЗавершенаРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + ОбработкаПорцииЗавершенаКонтекстноеМеню + 59 + true + + CheckBoxField + Enter + true + Left + true + + + + ЗапускатьТолькоВГлавномУзле + 49 + true + true + + true + + + Запись.ЗапускатьТолькоВГлавномУзле + + Right + + ЗапускатьТолькоВГлавномУзлеРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + + ЗапускатьТолькоВГлавномУзлеКонтекстноеМеню + 50 + true + + CheckBoxField + Enter + true + Left + true + + + + ЗапускатьИВПодчиненномУзлеРИБСФильтрами + 52 + + <key>ru</key> + <value>Запускать в РИБ с фильтрами</value> + + true + true + + true + + + Запись.ЗапускатьИВПодчиненномУзлеРИБСФильтрами + + Right + + ЗапускатьИВПодчиненномУзлеРИБСФильтрамиРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + ЗапускатьИВПодчиненномУзлеРИБСФильтрамиКонтекстноеМеню + 53 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Свойства булево</value> + + + ГруппаСвойстваБулевоРасширеннаяПодсказка + 96 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + DontUse + Auto + + + + ГруппаСвойстваПоКолонкам + 89 + + ГруппаЛеваяКолонка + 91 + + ДлительностьОбработки + 16 + true + true + + true + + + Запись.ДлительностьОбработки + + + ДлительностьОбработкиРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + ДлительностьОбработкиКонтекстноеМеню + 17 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ГруппаОбновления + 61 + true + true + + true + + + Запись.ГруппаОбновления + + + ГруппаОбновленияРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + ГруппаОбновленияКонтекстноеМеню + 62 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИтерацияЗапуска + 64 + true + true + + true + + + Запись.ИтерацияЗапуска + + + ИтерацияЗапускаРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + + ИтерацияЗапускаКонтекстноеМеню + 65 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ВерсияПорядок + 25 + true + true + + true + + + Запись.ВерсияПорядок + + + ВерсияПорядокРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + ВерсияПорядокКонтекстноеМеню + 26 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Левая колонка</value> + + + ГруппаЛеваяКолонкаРасширеннаяПодсказка + 92 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаПраваяКолонка + 93 + + ВерсияРегистрации + 22 + true + true + + true + + + Запись.ВерсияРегистрации + + + ВерсияРегистрацииРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + ВерсияРегистрацииКонтекстноеМеню + 23 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + Приоритет + 37 + true + true + + true + + + Запись.Приоритет + + + ПриоритетРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + + ПриоритетКонтекстноеМеню + 38 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИзменяемыеОбъекты + 70 + true + true + + true + + + Запись.ИзменяемыеОбъекты + + + ИзменяемыеОбъектыРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + ИзменяемыеОбъектыКонтекстноеМеню + 71 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Правая колонка</value> + + + ГруппаПраваяКолонкаРасширеннаяПодсказка + 94 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Свойства по колонкам</value> + + + ГруппаСвойстваПоКолонкамРасширеннаяПодсказка + 90 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + + + + ПроцедураПроверки + 40 + true + true + + true + + + Запись.ПроцедураПроверки + + + ПроцедураПроверкиРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + + ПроцедураПроверкиКонтекстноеМеню + 41 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + РежимВыполненияОтложенногоОбработчика + 67 + true + true + + true + + + Запись.РежимВыполненияОтложенногоОбработчика + + + РежимВыполненияОтложенногоОбработчикаРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + РежимВыполненияОтложенногоОбработчикаКонтекстноеМеню + 68 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ОбластьДанныхВспомогательныеДанные + 1 + true + true + + true + + + Запись.ОбластьДанныхВспомогательныеДанные + + + ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню + 2 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Дополнительные свойства</value> + + + ГруппаДополнительныеСвойстваРасширеннаяПодсказка + 88 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Collapsible + true + Button + NormalSeparation + true + true + auto + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Copy + DontBlock + true + true + Vertical + true + true + true + auto + true + + Запись + 1 + + InformationRegisterRecordManager.ОбработчикиОбновления + + + true + + + true + +
      true
      + true +
      + + ОбрабатываемыеДанные + + <key>ru</key> + <value>Обрабатываемые данные</value> + + 2 + + String + + + + true + + + true + + + + ОбрабатываемыеДанныеХранилище + 3 + + String + + + + true + + + true + + + + + + + + + AfterWrite + ПослеЗаписи + + +
      diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Module.bsl b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Module.bsl new file mode 100644 index 000000000..f7669d978 --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаЗаписи/Module.bsl @@ -0,0 +1,40 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Заголовок = НСтр("ru = 'Обработчик обновления'") + " " + Запись.ИмяОбработчика; + + Если ЗначениеЗаполнено(Запись.Комментарий) Тогда + Элементы.ГруппаКомментарий.Заголовок = НСтр("ru = 'Комментарий'") + " *"; + Иначе + Элементы.ГруппаКомментарий.Заголовок = НСтр("ru = 'Комментарий'"); + КонецЕсли; + + Если ЗначениеЗаполнено(Запись.ИнформацияОбОшибке) Тогда + Элементы.ГруппаИнформацияОбОшибке.Заголовок = НСтр("ru = 'Информация об ошибке'") + " *"; + Иначе + Элементы.ГруппаИнформацияОбОшибке.Заголовок = НСтр("ru = 'Информация об ошибке'"); + КонецЕсли; + + ОбрабатываемыеДанные = НСтр("ru = 'Открыть'"); + + Данные = РеквизитФормыВЗначение("Запись").ОбрабатываемыеДанные; + ОбрабатываемыеДанныеХранилище = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_ОбработчикиОбновления", ПараметрыЗаписи); +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..61e6fb4bb --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,17 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Form.form new file mode 100644 index 000000000..cac1d5fad --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Form.form @@ -0,0 +1,651 @@ + + + + <key>ru</key> + <value>Обработчики обновления</value> + + + ГруппаОтборКоманднаяПанель + 61 + + ОтборСтатус + 63 + + <key>ru</key> + <value>Статус</value> + + true + true + + true + + + ОтборСтатус + + + OnChange + ОтборСтатусПриИзменении + + + ОтборСтатусРасширеннаяПодсказка + 65 + Label + true + true + + Left + + + + ОтборСтатусКонтекстноеМеню + 64 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + + ОтборРежимВыполнения + 66 + + <key>ru</key> + <value>Режим выполнения</value> + + true + true + + true + + + ОтборРежимВыполнения + + + OnChange + ОтборРежимВыполненияПриИзменении + + + ОтборРежимВыполненияРасширеннаяПодсказка + 68 + Label + true + true + + Left + + + + ОтборРежимВыполненияКонтекстноеМеню + 67 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + + КоманднаяПанель + 69 + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 70 + Label + true + true + + Left + + + CommandBar + + Left + Item.Список + + + true + true + + true + + + <key>ru</key> + <value>Отбор командная панель</value> + + + ГруппаОтборКоманднаяПанельРасширеннаяПодсказка + 62 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + true + true + + true + + + Список + + true + None + SearchEverywhere + + ИмяОбработчика + 16 + true + true + + true + + + Список.ИмяОбработчика + + true + + ИмяОбработчикаРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + ИмяОбработчикаКонтекстноеМеню + 17 + true + + LabelField + Enter + true + Left + true + + true + true + + + + Статус + 19 + true + true + + true + + + Список.Статус + + true + + СтатусРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + СтатусКонтекстноеМеню + 20 + true + + LabelField + Enter + true + Left + true + + true + true + + + + Версия + 22 + true + true + + true + + + Список.Версия + + true + + ВерсияРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + ВерсияКонтекстноеМеню + 23 + true + + LabelField + Enter + true + Left + true + + true + true + + + + РежимВыполнения + 31 + true + true + + true + + + Список.РежимВыполнения + + true + + РежимВыполненияРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + + РежимВыполненияКонтекстноеМеню + 32 + true + + LabelField + Enter + true + Left + true + + true + true + + + + ОчередьОтложеннойОбработки + 58 + + <key>ru</key> + <value>Очередь</value> + + true + true + + true + + + Список.ОчередьОтложеннойОбработки + + true + + ОчередьОтложеннойОбработкиРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + ОчередьОтложеннойОбработкиКонтекстноеМеню + 59 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + 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 + + + + СписокКонтекстноеМеню + 4 + true + + true + true + true + true + true + MultiRow +
      true
      + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.DefaultPicture + + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
      + + ФормаКоманднаяПанель + -1 + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + OpenFromStandaloneServer + DontBlock + true + true + Vertical + true + true + true + auto + true + + Список + 1 + + DynamicList + + + true + + + true + +
      true
      + + ВЫБРАТЬ + ОбработчикиОбновления.ИмяОбработчика, + ОбработчикиОбновления.Статус, + ОбработчикиОбновления.Версия, + ОбработчикиОбновления.ИмяБиблиотеки, + ОбработчикиОбновления.ДлительностьОбработки, + ОбработчикиОбновления.РежимВыполнения, + ОбработчикиОбновления.ВерсияРегистрации, + ОбработчикиОбновления.ВерсияПорядок, + ОбработчикиОбновления.Идентификатор, + ОбработчикиОбновления.ЧислоПопыток, + ОбработчикиОбновления.СтатистикаВыполнения, + ОбработчикиОбновления.ИнформацияОбОшибке, + ОбработчикиОбновления.Комментарий, + ОбработчикиОбновления.Приоритет, + ОбработчикиОбновления.ПроцедураПроверки, + ОбработчикиОбновления.ПроцедураЗаполненияДанныхОбновления, + ОбработчикиОбновления.ОчередьОтложеннойОбработки, + ОбработчикиОбновления.ЗапускатьТолькоВГлавномУзле, + ОбработчикиОбновления.ЗапускатьИВПодчиненномУзлеРИБСФильтрами, + ОбработчикиОбновления.Многопоточный, + ОбработчикиОбновления.ОбработкаПорцииЗавершена, + ОбработчикиОбновления.ГруппаОбновления, + ОбработчикиОбновления.ИтерацияЗапуска, + ОбработчикиОбновления.ОбрабатываемыеДанные, + ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика, + ОбработчикиОбновления.ИзменяемыеОбъекты + ИЗ + РегистрСведений.ОбработчикиОбновления + КАК + ОбработчикиОбновления + true + true + true + true + +
      + + ОтборСтатус + + <key>ru</key> + <value>Отбор статус</value> + + 2 + + EnumRef.СтатусыОбработчиковОбновления + + + true + + + true + + + + ОтборРежимВыполнения + + <key>ru</key> + <value>Отбор режим выполнения</value> + + 3 + + EnumRef.РежимыВыполненияОбработчиков + + + true + + + true + + + + РежимВыполнения + + EnumRef.РежимыВыполненияОбработчиков + + + + + + + +
      diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..5b8c075be --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Параметры.РежимВыполнения) Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "РежимВыполнения", Параметры.РежимВыполнения); + ОтборРежимВыполнения = Параметры.РежимВыполнения; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ВРег(ИмяСобытия) = ВРег("Запись_ОбработчикиОбновления") Тогда + Элементы.Список.Обновить(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОтборСтатусПриИзменении(Элемент) + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Статус", ОтборСтатус, , , ЗначениеЗаполнено(ОтборСтатус)); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборРежимВыполненияПриИзменении(Элемент) + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "РежимВыполнения", ОтборРежимВыполнения, , , ЗначениеЗаполнено(ОтборРежимВыполнения)); +КонецПроцедуры + +#КонецОбласти + diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo b/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo index 0803f6193..bb28cfcf9 100644 --- a/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo @@ -16,6 +16,8 @@
      true InDialog + InformationRegister.ОбработчикиОбновления.Form.ФормаЗаписи + InformationRegister.ОбработчикиОбновления.Form.ФормаСписка Use Active @@ -493,4 +495,40 @@ true + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ПерезапускОтложенногоОбновления + + ru + Перезапуск отложенного обновления + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЗаписи + + ru + Форма записи + + PersonalComputer + MobileDevice + diff --git a/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ManagerModule.bsl b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ManagerModule.bsl new file mode 100644 index 000000000..a16f41e18 --- /dev/null +++ b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ManagerModule.bsl @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда +#Область СлужебныеПроцедурыИФункции + +// Прочитать отметку о напоминании. +// +// Параметры: +// Сертификат - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования +// +// Возвращаемое значение: +// Булево, Неопределено - отметка о напоминании (Истина - Оповещен, больше не напоминать) +// +Функция ПрочитатьОтметкуОНапоминании(Сертификат) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ОповещенияПользователейСертификатов.Оповещен + |ИЗ + | РегистрСведений.ОповещенияПользователейСертификатов КАК ОповещенияПользователейСертификатов + |ГДЕ + | ОповещенияПользователейСертификатов.Сертификат = &Сертификат + | И ОповещенияПользователейСертификатов.Пользователь = &Пользователь"; + + Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь()); + Запрос.УстановитьПараметр("Сертификат", Сертификат); + + УстановитьПривилегированныйРежим(Истина); + РезультатЗапроса = Запрос.Выполнить(); + УстановитьПривилегированныйРежим(Ложь); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Если ВыборкаДетальныеЗаписи.Следующий() Тогда + Возврат Не ВыборкаДетальныеЗаписи.Оповещен; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +#КонецОбласти +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/RecordSetModule.bsl b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/RecordSetModule.bsl new file mode 100644 index 000000000..4db8de3b2 --- /dev/null +++ b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/RecordSetModule.bsl @@ -0,0 +1,66 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда +#Область ОбработчикиСобытий + +Процедура ПриЗаписи(Отказ, Замещение) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не ДополнительныеСвойства.Свойство("ИдентификаторНапоминания") Тогда + Возврат; + КонецЕсли; + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда + Возврат; + КонецЕсли; + + МодульНапоминанияПользователя = ОбщегоНазначения.ОбщийМодуль("НапоминанияПользователя"); + Если Не МодульНапоминанияПользователя.ИспользуютсяНапоминанияПользователя() Тогда + Возврат; + КонецЕсли; + + ИдентификаторНапоминания = ДополнительныеСвойства.ИдентификаторНапоминания; + + Для Каждого Запись Из ЭтотОбъект Цикл + + Напоминания = МодульНапоминанияПользователя.НайтиНапоминания(Запись.Сертификат, ИдентификаторНапоминания); + + Для Каждого Напоминание Из Напоминания Цикл + МодульНапоминанияПользователя.УдалитьНапоминание(Напоминание); + КонецЦикла; + + Если Не Запись.Оповещен Тогда + Если ИдентификаторНапоминания = "АвтоматическоеНапоминаниеОПродленииСертификата" Тогда + + ТекстНапоминания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Требуется перевыпуск сертификата ""%1""'", "ru"), Запись.Сертификат); + МодульНапоминанияПользователя.УстановитьНапоминание( + ТекстНапоминания, "ДействителенДо", 30 * 24 * 60 * 60, Запись.Сертификат, ИдентификаторНапоминания); + + Иначе + + ТекстНапоминания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='""%1"": сертификат получен'", "ru"), Запись.Сертификат); + МодульНапоминанияПользователя.УстановитьНапоминание( + ТекстНапоминания, "ДатаПолученияСертификата", 0, Запись.Сертификат, ИдентификаторНапоминания); + + КонецЕсли; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти +#Иначе + ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ОповещенияПользователейСертификатов.mdo b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ОповещенияПользователейСертификатов.mdo new file mode 100644 index 000000000..0a524ad2b --- /dev/null +++ b/SSL/src/InformationRegisters/ОповещенияПользователейСертификатов/ОповещенияПользователейСертификатов.mdo @@ -0,0 +1,117 @@ + + + + + + + + + + + + ОповещенияПользователейСертификатов + + ru + Оповещения пользователей сертификатов + + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + ru + Оповещение пользователя сертификата + + + ru + Заполняется при отправке заявлений и из формы сертификата, находящегося в личном хранилище при используемой подсистеме "Напоминания пользователя". Автоматически заполняется при использовании сертификата менее, чем за 30 дней до истечения срока действия + + + Оповещен + + ru + Оповещен + + + Boolean + + + ru + Ложь - пользователь будет получать напоминания, Истина - пользователь убрал пометку о напоминании + + + + Use + Use + + + + Сертификат + + ru + Сертификат + + + CatalogRef.СертификатыКлючейЭлектроннойПодписиИШифрования + + + + Use + Use + true + + true + true + + + Пользователь + + ru + Пользователь + + + CatalogRef.Пользователи + + + ru + Пользователь, получающий оповещения. + + + + Use + Use + + true + + diff --git a/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl b/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl index 556e01378..1456e4d89 100644 --- a/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl @@ -92,9 +92,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'УдалитьСтарыеПакеты'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, Метаданные.РегистрыСведений.ПакетыДляОтправки,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; КонецЕсли; @@ -127,9 +128,10 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'УдалитьПакеты'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.ОбщиеМодули.ЦентрМониторингаСлужебный,,Ошибка); - ВызватьИсключение Ошибка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, Метаданные.РегистрыСведений.ПакетыДляОтправки,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; КонецПопытки; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl b/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl index 2e4a0318f..eb5c59513 100644 --- a/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl @@ -329,14 +329,14 @@ КонецПроцедуры -// Для процедуры ЗагрузитьОбновитьПараметрыРаботыПрограммы и вызова из формы ИндикацияХодаОбновленияИБ. +// Для процедуры ЗагрузитьОбновитьПараметрыРаботыПрограммы и вызова из формы ОбновлениеВерсииПрограммы. Функция ТребуетсяЗагрузитьПараметрыРаботыПрограммы() Экспорт Возврат НеобходимоОбновление() И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ(); КонецФункции -// Для вызова из формы ИндикацияХодаОбновленияИБ. +// Для вызова из формы ОбновлениеВерсииПрограммы. Функция ЗагрузитьПараметрыРаботыПрограммыВФоне(ОжидатьЗавершение, ИдентификаторФормы, СообщитьПрогресс) Экспорт ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы); @@ -354,7 +354,7 @@ КонецФункции -// Для вызова из формы ИндикацияХодаОбновленияИБ. +// Для вызова из формы ОбновлениеВерсииПрограммы. Функция ОбновитьПараметрыРаботыПрограммыВФоне(ОжидатьЗавершение, ИдентификаторФормы, СообщитьПрогресс) Экспорт ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы); @@ -392,7 +392,7 @@ КонецФункции -// Для вызова из формы ИндикацияХодаОбновленияИБ. +// Для вызова из формы ОбновлениеВерсииПрограммы. Функция ОбновитьПараметрыРаботыВерсийРасширенийВФоне(ОжидатьЗавершение, ИдентификаторФормы, СообщитьПрогресс) Экспорт ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы); @@ -410,7 +410,7 @@ КонецФункции -// Для вызова из формы ИндикацияХодаОбновленияИБ. +// Для вызова из формы ОбновлениеВерсииПрограммы. Функция ОбработанныйРезультатДлительнойОперации(Результат, Операция) Экспорт КраткоеПредставлениеОшибки = Неопределено; diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form index 78c169e14..da5efe9e7 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form @@ -114,10 +114,6 @@ ОтборПоЯзыку - - OnChange - ОтборПоЯзыкуПриИзменении - ОтборПоЯзыкуРасширеннаяПодсказка 113 @@ -139,10 +135,6 @@ Left true - - Clearing - ОтборПоЯзыкуОчистка - true true true @@ -192,12 +184,8 @@ true - AutoComplete - СтрокаПоискаАвтоПодбор - - - Clearing - СтрокаПоискаОчистка + EditTextChange + СтрокаПоискаИзменениеТекстаРедактирования 31 true @@ -208,7 +196,7 @@ true true true - OnValueChange + DontUse Normal ru @@ -246,11 +234,11 @@ - МакетыПечатныхФорм - 54 + Макеты + 122 <key>ru</key> - <value>Макеты печатных форм</value> + <value>Макеты</value> true true @@ -258,35 +246,39 @@ true - МакетыПечатныхФорм + Макеты None Add Change Copy + CopyToClipboard Delete EndEdit + HierarchicalList + List MoveDown MoveUp + OutputList + SelectAll + ShowMultipleSelection + ShowRowRearrangement + SortListAsc + SortListDesc + Tree - МакетыПечатныхФормИспользование - 63 - true + МакетыКартинкаГруппы + 135 true true - МакетыПечатныхФорм.КартинкаИспользования + Макеты.КартинкаГруппы - None - - ru - Отредактирован - - МакетыПечатныхФормИспользованиеExtendedTooltip - 96 + МакетыКартинкаГруппыРасширеннаяПодсказка + 137 Label true true @@ -295,14 +287,215 @@ - МакетыПечатныхФормИспользованиеКонтекстноеМеню - 64 + МакетыКартинкаГруппыКонтекстноеМеню + 136 + true + + PictureField + Auto + Left + true + + true + true + true + true + + + 1 + + AsFileRef + + + + МакетыГруппа1 + 144 + + МакетыКартинка + 149 + true + true + + true + + + Макеты.Картинка + + + МакетыКартинкаРасширеннаяПодсказка + 151 + Label + true + true + + Left + + + + МакетыКартинкаКонтекстноеМеню + 150 + true + + PictureField + Auto + Left + true + + true + true + true + true + + CommonPicture.ТипыМакетов + + + + 1 + + AsFileRef + + + + МакетыПредставление + 138 + + <key>ru</key> + <value>Макет</value> + + true + true + + true + + + Макеты.Представление + + + МакетыПредставлениеРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + + МакетыПредставлениеКонтекстноеМеню + 139 + true + + InputField + Auto + true + Left + true + + 40 + true + true + false + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Макеты группа 1</value> + + + МакетыГруппа1РасширеннаяПодсказка + 145 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + МакетыИспользуется + 188 + true + true + + true + + + Макеты.Используется + + + МакетыИспользуетсяРасширеннаяПодсказка + 190 + Label + true + true + + Left + + + + МакетыИспользуетсяКонтекстноеМеню + 189 + true + + CheckBoxField + Auto + + CommonPicture.ВводимыеСимволыВидны + + Left + true + + + + МакетыКартинкаИспользования + 146 + true + true + + true + + + Макеты.КартинкаИспользования + + + ru + Используется измененный макет + + + МакетыКартинкаИспользованияРасширеннаяПодсказка + 148 + Label + true + true + + Left + + + + МакетыКартинкаИспользованияКонтекстноеМеню + 147 true PictureField true Auto - true CommonPicture.РедактироватьМакет @@ -311,7 +504,6 @@ true true - true true CommonPicture.ИспользованиеМакета @@ -320,23 +512,23 @@ 1 + AsFileRef - МакетыПечатныхФормПредставлениеМакета - 59 - VeryHigh + МакетыКнопкаНастройкиДоступности + 182 true true true - МакетыПечатныхФорм.ПредставлениеМакета + Макеты.ДоступнаНастройкаВидимости - МакетыПечатныхФормПредставлениеМакетаExtendedTooltip - 97 + МакетыКнопкаНастройкиДоступностиРасширеннаяПодсказка + 184 Label true true @@ -345,42 +537,47 @@ - МакетыПечатныхФормПредставлениеМакетаКонтекстноеМеню - 60 + МакетыКнопкаНастройкиДоступностиКонтекстноеМеню + 183 true - InputField - true + PictureField Auto - true + true + + StdPicture.DataCompositionOutputParameters + Left true - - 40 + Show + Always + true true - true - true - true - true - Normal + true + + StdPicture.DataCompositionOutputParameters + + + + 1 + + AsFileRef - МакетыПечатныхФормПредставлениеВладельца - 61 - VeryLow - true + МакетыДоступнаНастройкаВидимости + 185 true true - МакетыПечатныхФорм.ПредставлениеВладельца + Макеты.ДоступнаНастройкаВидимости - МакетыПечатныхФормПредставлениеВладельцаExtendedTooltip - 98 + МакетыДоступнаНастройкаВидимостиРасширеннаяПодсказка + 187 Label true true @@ -389,44 +586,36 @@ - МакетыПечатныхФормПредставлениеВладельцаКонтекстноеМеню - 62 + МакетыДоступнаНастройкаВидимостиКонтекстноеМеню + 186 true - InputField - true + CheckBoxField Auto true Left true - - true - true - true - true - true - true - Normal - + - МакетыПечатныхФормДоступныеЯзыки - 108 - + <name>МакетыДоступенПеревод</name> + <id>176</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Макеты.ДоступенПеревод</segments> + </dataPath> + <toolTip> <key>ru</key> - <value>Доп. языки</value> - - true - true - - true - - - МакетыПечатныхФорм.ДоступныеЯзыки - + Доступен перевод на другие языки + + Balloon - МакетыПечатныхФормДоступныеЯзыкиРасширеннаяПодсказка - 110 + МакетыДоступенПереводРасширеннаяПодсказка + 178 Label true true @@ -435,19 +624,109 @@ - МакетыПечатныхФормДоступныеЯзыкиКонтекстноеМеню - 109 + МакетыДоступенПереводКонтекстноеМеню + 177 + true + + PictureField + Auto + + CommonPicture.ПереводТекста + + Left + true + + true + true + true + + CommonPicture.ПереводТекста + + + + 1 + + AsFileRef + + + + МакетыДоступныеЯзыки + 141 + true + true + + true + + + Макеты.ДоступныеЯзыки + + + МакетыДоступныеЯзыкиРасширеннаяПодсказка + 143 + Label + true + true + + Left + + + + МакетыДоступныеЯзыкиКонтекстноеМеню + 142 true InputField - true Auto true Left true + 30 true true + false + true + true + true + true + Normal + + + + МакетыОтступ + 193 + true + true + + true + + + Макеты.Отступ + + None + + МакетыОтступРасширеннаяПодсказка + 195 + Label + true + true + + Left + + + + МакетыОтступКонтекстноеМеню + 194 + true + + InputField + Enter + true + Left + true + + true + true true true true @@ -456,79 +735,23 @@ - МакетыПечатныхФормКоманднаяПанель - 56 - - МакетыПечатныхФормГруппаОткрытиеМакета - 76 - - МакетыПечатныхФормОткрытьМакет - 73 - true - false - - true - - - МакетыПечатныхФормОткрытьМакетExtendedTooltip - 85 - Label - true - true - - Left - - - Form.Command.ОткрытьМакет - Normal - Auto - true - true - UserCmds - Auto - - - МакетыПечатныхФормИзменитьМакет - 72 - true - false - - true - - - МакетыПечатныхФормИзменитьМакетExtendedTooltip - 86 - Label - true - true - - Left - - - Form.Command.ИзменитьМакет - Normal - Auto - true - true - UserCmds - Auto - + МакетыКоманднаяПанель + 124 + + МакетыДобавитьМакет + 162 + + <key>ru</key> + <value>Создать</value> + true true true - - <key>ru</key> - <value>Макеты печатных форм группа открытие макета</value> - - - ru - Открытие макета для просмотра или изменения - - МакетыПечатныхФормГруппаОткрытиеМакетаExtendedTooltip - 84 + МакетыДобавитьМакетРасширеннаяПодсказка + 163 Label true true @@ -536,22 +759,80 @@ Left - + Form.Command.ДобавитьМакет + Normal + Auto + true + true + UserCmds + Auto + + + МакетыСкопировать + 170 + true + true + + true + + + МакетыСкопироватьРасширеннаяПодсказка + 171 + Label + true + true + + Left + + + Form.Command.Скопировать + Normal + Auto + true + true + UserCmds + Auto + + + МакетыИзменитьМакет + 152 + true + true + + true + + + МакетыИзменитьМакетРасширеннаяПодсказка + 153 + Label + true + true + + Left + + + Form.Command.ИзменитьМакет + Normal + Picture + true + true + UserCmds + Auto МакетыПечатныхФормГруппаПереключениеИспользуемогоМакета - 77 + 154 МакетыПечатныхФормИспользоватьИзмененныйМакет - 70 + 156 true true true - МакетыПечатныхФормИспользоватьИзмененныйМакетExtendedTooltip - 88 + МакетыПечатныхФормИспользоватьИзмененныйМакетРасширеннаяПодсказка + 157 Label true true @@ -561,7 +842,7 @@ Form.Command.ИспользоватьИзмененныйМакет Normal - Auto + PictureAndText true true UserCmds @@ -569,15 +850,15 @@ МакетыПечатныхФормИспользоватьСтандартныйМакет - 71 + 158 true true true - МакетыПечатныхФормИспользоватьСтандартныйМакетExtendedTooltip - 89 + МакетыПечатныхФормИспользоватьСтандартныйМакетРасширеннаяПодсказка + 159 Label true true @@ -587,7 +868,7 @@ Form.Command.ИспользоватьСтандартныйМакет Normal - Auto + PictureAndText true true UserCmds @@ -607,8 +888,8 @@ Переключение используемого макета - МакетыПечатныхФормГруппаПереключениеИспользуемогоМакетаExtendedTooltip - 87 + МакетыПечатныхФормГруппаПереключениеИспользуемогоМакетаРасширеннаяПодсказка + 155 Label true true @@ -616,19 +897,21 @@ Left - + + Compact + МакетыПечатныхФормУдалитьИзмененныйМакет - 74 + 160 true true true - МакетыПечатныхФормУдалитьИзмененныйМакетExtendedTooltip - 90 + МакетыПечатныхФормУдалитьИзмененныйМакетРасширеннаяПодсказка + 161 Label true true @@ -643,48 +926,22 @@ true UserCmds Auto + InAdditionalSubmenu МакетыПечатныхФормГруппаВсеДействия - 78 - - МакетыПечатныхФормЗадатьДействиеПриВыбореМакетаПечатнойФормы - 75 - true - true - - true - - - МакетыПечатныхФормЗадатьДействиеПриВыбореМакетаПечатнойФормыExtendedTooltip - 92 - Label - true - true - - Left - - - Form.Command.ЗадатьДействиеПриВыбореМакетаПечатнойФормы - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - + 164 МакетыПечатныхФормИзменитьФорму - 79 + 168 true true true - МакетыПечатныхФормИзменитьФормуExtendedTooltip - 93 + МакетыПечатныхФормИзменитьФормуРасширеннаяПодсказка + 169 Label true true @@ -714,8 +971,8 @@ Все действия - МакетыПечатныхФормГруппаВсеДействияExtendedTooltip - 91 + МакетыПечатныхФормГруппаВсеДействияРасширеннаяПодсказка + 165 Label true true @@ -726,16 +983,16 @@ - МакетыПечатныхФормСправка - 80 + МакетыУсловияДоступности + 191 true true true - МакетыПечатныхФормСправкаExtendedTooltip - 94 + МакетыУсловияДоступностиРасширеннаяПодсказка + 192 Label true true @@ -743,7 +1000,7 @@ Left - Form.StandardCommand.Help + Form.Command.УсловияДоступности Normal Auto true @@ -756,18 +1013,22 @@ Selection - МакетыПечатныхФормВыбор + МакетыВыбор OnActivateRow - МакетыПечатныхФормПриАктивизацииСтроки + МакетыПриАктивизацииСтроки + + + OnChange + МакетыПриИзменении - МакетыПечатныхФормСтрокаПоиска - 99 + МакетыСтрокаПоиска + 126 - МакетыПечатныхФормСтрокаПоискаРасширеннаяПодсказка - 101 + МакетыСтрокаПоискаРасширеннаяПодсказка + 128 Label true true @@ -776,21 +1037,21 @@ - МакетыПечатныхФормСтрокаПоискаКонтекстноеМеню - 100 + МакетыСтрокаПоискаКонтекстноеМеню + 127 true - МакетыПечатныхФорм + Макеты true - МакетыПечатныхФормСостояниеПросмотра - 102 + МакетыСостояниеПросмотра + 129 - МакетыПечатныхФормСостояниеПросмотраРасширеннаяПодсказка - 104 + МакетыСостояниеПросмотраРасширеннаяПодсказка + 131 Label true true @@ -799,22 +1060,22 @@ - МакетыПечатныхФормСостояниеПросмотраКонтекстноеМеню - 103 + МакетыСостояниеПросмотраКонтекстноеМеню + 130 true ViewStatusAddition - МакетыПечатныхФорм + Макеты true - МакетыПечатныхФормУправлениеПоиском - 105 + МакетыУправлениеПоиском + 132 - МакетыПечатныхФормУправлениеПоискомРасширеннаяПодсказка - 107 + МакетыУправлениеПоискомРасширеннаяПодсказка + 134 Label true true @@ -823,19 +1084,19 @@ - МакетыПечатныхФормУправлениеПоискомКонтекстноеМеню - 106 + МакетыУправлениеПоискомКонтекстноеМеню + 133 true SearchControlAddition - МакетыПечатныхФорм + Макеты true - МакетыПечатныхФормExtendedTooltip - 95 + МакетыРасширеннаяПодсказка + 125 Label true true @@ -844,11 +1105,63 @@ - МакетыПечатныхФормКонтекстноеМеню - 55 + МакетыКонтекстноеМеню + 123 + + МакетыКонтекстноеМенюУдалитьИзмененныйМакет + 196 + true + true + + true + + + МакетыКонтекстноеМенюУдалитьИзмененныйМакетРасширеннаяПодсказка + 197 + Label + true + true + + Left + + + Form.Command.УдалитьИзмененныйМакет + Normal + Auto + true + true + UserCmds + Auto + + + МакетыКонтекстноеМенюУдалитьМакет + 198 + true + true + + true + + + МакетыКонтекстноеМенюУдалитьМакетРасширеннаяПодсказка + 199 + Label + true + true + + Left + + + Form.Command.УдалитьМакет + Normal + Auto + true + true + UserCmds + Auto + true - true + Tree true true true @@ -860,21 +1173,17 @@ AutoUse true true + false true Auto Auto + ExpandTopLevel true true true true - - МакетыПечатныхФорм.Картинка - - - CommonPicture.ТипыМакетов - + AsFileRef true - ГруппаДополнительнаяИнформация @@ -910,7 +1219,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -993,10 +1302,6 @@ Left true - - ChoiceProcessing - ОбработкаВыбора - NotificationProcessing ОбработкаОповещения @@ -1023,11 +1328,6 @@ true auto true - - - МакетыПечатныхФормКоманднаяПанель - - СпрашиватьРежимОткрытияМакета 4 @@ -1090,182 +1390,6 @@ true - - МакетыПечатныхФорм - - <key>ru</key> - <value>Макеты печатных форм</value> - - 8 - - ValueTable - - - true - - - true - - - ИмяОбъектаМетаданныхМакета - 1 - - String - - - - true - - - true - - - - ПредставлениеМакета - - <key>ru</key> - <value>Макет печатной формы</value> - - 2 - - String - - - - true - - - true - - - - ПредставлениеВладельца - - <key>ru</key> - <value>Владелец макета</value> - - 3 - - String - - - - true - - - true - - - - Изменен - 4 - - Boolean - - - true - - - true - - - - ИспользуетсяИзмененный - 5 - - Boolean - - - true - - - true - - - - Картинка - 8 - - Number - - 10 - - - - true - - - true - - - - ТипМакета - 9 - - String - - - - true - - - true - - - - СтрокаПоиска - 10 - - String - - - - true - - - true - - - - КартинкаИспользования - - <key>ru</key> - <value>Картинка использования</value> - - 6 - - Number - - 1 - true - - - - true - - - true - - - - ДоступныеЯзыки - - <key>ru</key> - <value>Доступные языки</value> - - 7 - - String - - - - true - - - true - - - ОтборПоЯзыку @@ -1284,11 +1408,404 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>Макеты</name> + <title> + <key>ru</key> + <value>Макеты</value> + + 1 + + ValueTree + + + true + + + true + + + КартинкаГруппы + + <key>ru</key> + <value>Картинка группы</value> + + 1 + + Picture + + + true + + + true + + + + Представление + + <key>ru</key> + <value>Представление</value> + + 2 + + String + + + + true + + + true + + + + ДоступныеЯзыки + + <key>ru</key> + <value>Доп. языки</value> + + 3 + + String + + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 4 + + Number + + 10 + + + + true + + + true + + + + КартинкаИспользования + + <key>ru</key> + <value>Картинка использования</value> + + 5 + + Number + + 10 + + + + true + + + true + + + + ДоступенПеревод + + <key>ru</key> + <value>Доступен перевод</value> + + 6 + + Boolean + + + true + + + true + + + + УсловияДоступности + 7 + + String + + + + true + + + true + + + + ДоступнаНастройкаВидимости + + <key>ru</key> + <value>Доступна настройка видимости</value> + + 8 + + Boolean + + + true + + + true + + + + Используется + + <key>ru</key> + <value>Используется</value> + + 9 + + Boolean + + + true + + + true + + + + ЭтоГруппа + 10 + + Boolean + + + true + + + true + + + + ИмяОбъектаМетаданныхМакета + 11 + + String + + + + true + + + true + + + + ТипМакета + 12 + + String + + + + true + + + true + + + + Изменен + 13 + + Boolean + + + true + + + true + + + + ИспользуетсяИзмененный + 14 + + Boolean + + + true + + + true + + + + Отступ + + <key>ru</key> + <value>Отступ</value> + + 15 + + String + + + + true + + + true + + + + Владелец + 16 + + CatalogRef.ИдентификаторыОбъектовРасширений + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Ссылка + 17 + + CatalogRef.МакетыПечатныхФорм + + + true + + + true + + + + СтрокаПоиска + 18 + + String + + + + true + + + true + + + + Идентификатор + 19 + + String + + + + true + + + true + + + + Поставляемый + 20 + + Boolean + + + true + + + true + + + + ЭтоПечатнаяФорма + 22 + + Boolean + + + true + + + true + + + + + ПоказыватьИзмененные + 23 + + Boolean + + + true + + + true + + + + ПоказыватьНеизмененные + 24 + + Boolean + + + true + + + true + + + + ПоказыватьИспользуемые + 25 + + Boolean + + + true + + + true + + + + ПоказыватьНеиспользуемые + 26 + + Boolean + + + true + + + true + + ИспользоватьИзмененныйМакет <key>ru</key> - <value>Использовать измененный макет</value> + <value>Использовать измененный</value> 1 @@ -1313,7 +1830,7 @@ ИспользоватьСтандартныйМакет <key>ru</key> - <value>Использовать стандартный макет</value> + <value>Использовать стандартный</value> 2 @@ -1433,6 +1950,106 @@ DontUse Auto + + ДобавитьМакет + + <key>ru</key> + <value>Добавить</value> + + 7 + + ru + Добавить макет + + + true + + + + ДобавитьМакет + + + Text + Auto + Auto + + + Скопировать + + <key>ru</key> + <value>Скопировать</value> + + 8 + + ru + Скопировать + + + true + + + StdPicture.CloneListItem + + + + Скопировать + + + Auto + Auto + + + УсловияДоступности + + <key>ru</key> + <value>Видимость в подменю "Печать"...</value> + + 10 + + true + + + + УсловияДоступности + + + Auto + Auto + + + УдалитьМакет + + <key>ru</key> + <value>Удалить макет</value> + + 11 + + true + + + StdPicture.MarkToDelete + + + + УдалитьМакет + + + Auto + Auto + + + СоздатьМакетOfficeOpenXML + + <key>ru</key> + <value>Создать макет office open XML</value> + + 12 + + true + + Auto + Auto + diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl index 545c182f6..3044c9eb2 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl @@ -17,7 +17,9 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - + + УстановитьУсловноеОформление(); + ЗаполнитьТаблицуМакетовПечатныхФорм(); Если Параметры.Свойство("ПоказыватьТолькоПользовательскиеИзмененные") Тогда ОтборПоИспользованиюМакета = "ИспользуемыеИзмененные"; @@ -27,7 +29,6 @@ ЕстьПравоИзменения = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.ПользовательскиеМакетыПечати); ТолькоПросмотр = Не ЕстьПравоИзменения; - Элементы.МакетыПечатныхФормИзменитьМакет.Видимость = ЕстьПравоИзменения; Элементы.МакетыПечатныхФормГруппаПереключениеИспользуемогоМакета.Видимость = ЕстьПравоИзменения; Элементы.МакетыПечатныхФормУдалитьИзмененныйМакет.Видимость = ЕстьПравоИзменения; @@ -51,26 +52,15 @@ Элементы.ГруппаДополнительнаяИнформация.Видимость = ЕстьДополнительныеЯзыки; Элементы.ОтборПоЯзыку.Видимость = ЕстьДополнительныеЯзыки; - Элементы.МакетыПечатныхФормДоступныеЯзыки.Видимость = ЕстьДополнительныеЯзыки; + Элементы.МакетыДоступныеЯзыки.Видимость = ЕстьДополнительныеЯзыки; + Элементы.МакетыДоступенПеревод.Видимость = ЕстьДополнительныеЯзыки; + РежимОткрытияМакетаПросмотр = Не ЕстьПравоИзменения; + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда - СпрашиватьРежимОткрытияМакета = Ложь; РежимОткрытияМакетаПросмотр = Истина; Элементы.ГруппаОтборы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяЕслиВозможно; - - Иначе - - СпрашиватьРежимОткрытияМакета = ЕстьПравоИзменения; - РежимОткрытияМакетаПросмотр = Не ЕстьПравоИзменения; - - Если ЕстьПравоИзменения Тогда - СпрашиватьРежимОткрытияМакета = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( - "НастройкаОткрытияМакетов", "СпрашиватьРежимОткрытияМакета", Истина); - РежимОткрытияМакетаПросмотр = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( - "НастройкаОткрытияМакетов", "РежимОткрытияМакетаПросмотр", Ложь); - КонецЕсли; - КонецЕсли; АвтоНавигационнаяСсылка = Ложь; @@ -85,48 +75,45 @@ ОбновитьОтображениеМакетов(); ИначеЕсли ИмяСобытия = "Запись_ТабличныйДокумент" И Источник.ВладелецФормы = ЭтотОбъект Тогда Если Не ТолькоПросмотр Тогда - Макет = Параметр.ТабличныйДокумент; - АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет); - ЗаписатьМакет(Параметр.ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, Параметр.КодЯзыка); - Отбор = Новый Структура("ИмяОбъектаМетаданныхМакета", Параметр.ИмяОбъектаМетаданныхМакета); - Для Каждого Макет Из МакетыПечатныхФорм.НайтиСтроки(Отбор) Цикл - Макет.ДоступныеЯзыки = ДоступныеЯзыкиМакета(Параметр.ИмяОбъектаМетаданныхМакета); - КонецЦикла; + Элементы.Макеты.ТекущаяСтрока = ОбновитьОтображениеМакета(Параметр); КонецЕсли; ОбновитьОтображениеМакетов(); КонецЕсли; КонецПроцедуры -&НаКлиенте -Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) +&НаСервере +Функция ОбновитьОтображениеМакета(Знач Параметр) - Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета") Тогда - - Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; - - РежимОткрытияМакетаПросмотр = ВыбранноеЗначение.РежимОткрытияПросмотр; - СпрашиватьРежимОткрытияМакета = НЕ ВыбранноеЗначение.БольшеНеСпрашивать; - - Если КонтекстВыбора = "ОткрытьМакетПечатнойФормы" Тогда - - Если ВыбранноеЗначение.БольшеНеСпрашивать Тогда - СохранитьНастройкиРежимаОткрытияМакета(СпрашиватьРежимОткрытияМакета, РежимОткрытияМакетаПросмотр); + ИдентификаторМакета = Параметр.ИмяОбъектаМетаданныхМакета; + Макет = НайтиМакет(ИдентификаторМакета); + Если Макет = Неопределено Тогда + Для Каждого ГруппаМакетов Из Макеты.ПолучитьЭлементы() Цикл + Если ГруппаМакетов.Владелец = Параметр.Владелец Тогда + ДополнитьСписокМакетов(ГруппаМакетов.ПолучитьЭлементы(), ИдентификаторМакета); + Макет = НайтиМакет(ИдентификаторМакета); + ДополнитьОписаниеМакета(Макет); + Прервать; КонецЕсли; - - Если РежимОткрытияМакетаПросмотр Тогда - ОткрытьМакетПечатнойФормыДляПросмотра(); - Иначе - ОткрытьМакетПечатнойФормыДляРедактирования(); - КонецЕсли; - - КонецЕсли; + КонецЦикла; + Иначе + ИзмененныеМакеты = ИзмененныеМакеты(); + Макет.Изменен = ИзмененныеМакеты[ИдентификаторМакета] <> Неопределено Или Не Макет.Поставляемый; + Макет.ИспользуетсяИзмененный = Макет.Изменен И (ИзмененныеМакеты[ИдентификаторМакета] = Истина Или Не Макет.Поставляемый); + Макет.ДоступныеЯзыки = ДоступныеЯзыкиМакета(Параметр.ИмяОбъектаМетаданныхМакета); + Макет.КартинкаИспользования = -1; + Если Макет.Изменен Тогда + Макет.КартинкаИспользования = Число(Макет.Изменен) + Число(Макет.ИспользуетсяИзмененный); + КонецЕсли; + Если Параметр.Свойство("Представление") Тогда + Макет.Представление = Параметр.Представление; + КонецЕсли; КонецЕсли; -КонецПроцедуры + Возврат Макет.ПолучитьИдентификатор(); + +КонецФункции &НаКлиенте Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) @@ -165,18 +152,53 @@ #КонецОбласти -#Область ОбработчикиСобытийЭлементовТаблицыФормыМакетыПечатныхФорм +#Область ОбработчикиСобытийЭлементовТаблицыФормыМакеты &НаКлиенте -Процедура МакетыПечатныхФормВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) - Если Поле.Имя <> "МакетыПечатныхФормДоступныеЯзыки" Тогда +Процедура МакетыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТекущиеДанные.ЭтоГруппа Тогда + Возврат; + КонецЕсли; + + Если Поле.Имя = "МакетыКнопкаНастройкиДоступности" Тогда + УсловияДоступности(Неопределено); + Иначе ОткрытьМакетПечатнойФормы(); КонецЕсли; + КонецПроцедуры &НаКлиенте -Процедура МакетыПечатныхФормПриАктивизацииСтроки(Элемент) +Процедура МакетыПриАктивизацииСтроки(Элемент) + УстановитьДоступностьКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура МакетыПриИзменении(Элемент) + + ТекущиеДанные = Элемент.ТекущиеДанные; + Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда + УстановитьИспользованиеМакета(ТекущиеДанные.Ссылка, ТекущиеДанные.Используется); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьИспользованиеМакета(Макет, Используется) + + Справочники.МакетыПечатныхФорм.УстановитьИспользованиеМакета(Макет, Используется); + ОбновитьПовторноИспользуемыеЗначения(); + КонецПроцедуры #КонецОбласти @@ -211,6 +233,32 @@ КонецПроцедуры +&НаКлиенте +Процедура ДобавитьМакет(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореИмениМакета", ЭтотОбъект, Ложь); + ПоказатьВводСтроки(ОписаниеОповещения, НСтр("ru = 'Новая печатная форма'"), НСтр("ru = 'Введите наименование макета'"), 100, Ложь) + +КонецПроцедуры + +&НаКлиенте +Процедура УсловияДоступности(Команда) + + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Не ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда + Возврат; + КонецЕсли; + + ПараметрыОткрытия = Новый Структура("Ключ", ТекущиеДанные.Ссылка); + + ОткрытьФорму("Справочник.МакетыПечатныхФорм.Форма.УсловияВидимостиВПодменюПечать", ПараметрыОткрытия, ЭтотОбъект); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -220,42 +268,174 @@ &НаСервере Процедура ЗаполнитьТаблицуМакетовПечатныхФорм() + СписокМакетов = Новый ТаблицаЗначений(); + СписокМакетов.Колонки.Добавить("ОбъектМетаданных"); + СписокМакетов.Колонки.Добавить("Идентификатор"); + СписокМакетов.Колонки.Добавить("Представление"); + СписокМакетов.Колонки.Добавить("Владелец"); + СписокМакетов.Колонки.Добавить("ТипМакета"); + СписокМакетов.Колонки.Добавить("Картинка"); + СписокМакетов.Колонки.Добавить("СтрокаПоиска"); + СписокМакетов.Колонки.Добавить("ДоступныеЯзыки"); + СписокМакетов.Колонки.Добавить("Изменен"); + СписокМакетов.Колонки.Добавить("ИспользуетсяИзмененный"); + СписокМакетов.Колонки.Добавить("КартинкаИспользования"); + СписокМакетов.Колонки.Добавить("ДоступенПеревод"); + СписокМакетов.Колонки.Добавить("Ссылка"); + СписокМакетов.Колонки.Добавить("Используется"); + СписокМакетов.Колонки.Добавить("ДоступнаНастройкаВидимости"); + СписокМакетов.Колонки.Добавить("Поставляемый"); + СписокМакетов.Колонки.Добавить("ЭтоПечатнаяФорма"); + + ИзмененныеМакеты = ИзмененныеМакеты(); + ДоступныеДляПереводаМакеты = Новый Соответствие; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + ДоступныеДляПереводаМакеты = МодульУправлениеПечатьюМультиязычность.ДоступныеДляПереводаМакеты(); + КонецЕсли; + Для Каждого ОписаниеМакета Из УправлениеПечатью.МакетыПечатныхФорм() Цикл + Владелец = ОписаниеМакета.Значение; ИмяВладельца = ?(Метаданные.ОбщиеМакеты = Владелец, "ОбщийМакет", Владелец.ПолноеИмя()); - ПредставлениеВладельца = ?(Метаданные.ОбщиеМакеты = Владелец, НСтр("ru = 'Общий макет'"), Владелец.Представление()); - Макет = ОписаниеМакета.Ключ; - ИмяМакета = ИмяВладельца + "." + Макет.Имя; - ПредставлениеМакета = Макет.Представление(); + ОбъектМетаданных = ОписаниеМакета.Ключ; + ИмяОбъектаМетаданныхМакета = ИмяВладельца + "." + ОбъектМетаданных.Имя; + ПредставлениеМакета = ОбъектМетаданных.Представление(); - ТипМакета = ТипМакета(Макет.Имя, ИмяВладельца); + ТипМакета = ТипМакета(ОбъектМетаданных.Имя, ИмяВладельца); - ДобавитьОписаниеМакета(ИмяМакета, ПредставлениеМакета, ПредставлениеВладельца, ТипМакета); + Макет = СписокМакетов.Добавить(); + Макет.ОбъектМетаданных = ОбъектМетаданных; + Макет.Идентификатор = ИмяОбъектаМетаданныхМакета; + Макет.Представление = ПредставлениеМакета; + Макет.Владелец = ?(Владелец = Метаданные.ОбщиеМакеты, Неопределено, Владелец); + Макет.ТипМакета = ТипМакета; + Макет.Картинка = ИндексКартинки(ТипМакета); + Макет.Изменен = ИзмененныеМакеты[ИмяОбъектаМетаданныхМакета] <> Неопределено; + Макет.ИспользуетсяИзмененный = Макет.Изменен И ИзмененныеМакеты[ИмяОбъектаМетаданныхМакета]; + Макет.ДоступенПеревод = ДоступныеДляПереводаМакеты[ОбъектМетаданных] = Истина; + Макет.Используется = Истина; + Макет.Поставляемый = Истина; + КонецЦикла; + + ВладельцыМакетов = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(СписокМакетов.ВыгрузитьКолонку("Владелец"), Ложь); + + Для Каждого Макет Из СписокМакетов Цикл + Если Макет.Владелец <> Неопределено И ВладельцыМакетов[Макет.Владелец.ПолноеИмя()] <> Неопределено Тогда + Макет.Владелец = ВладельцыМакетов[Макет.Владелец.ПолноеИмя()]; + Макет.ЭтоПечатнаяФорма = УправлениеПечатью.ЭтоПечатнаяФорма(Макет.Идентификатор, Макет.Владелец); + Макет.ДоступенПеревод = Макет.ДоступенПеревод Или Макет.ЭтоПечатнаяФорма; + КонецЕсли; КонецЦикла; - МакетыПечатныхФорм.Сортировать("ПредставлениеМакета Возр"); - УстановитьФлагиИспользованияИзмененныхМакетов(); + ДополнитьСписокМакетов(СписокМакетов); + + ИсточникиКомандПечати = УправлениеПечатью.ИсточникиКомандПечати(); + ИсточникиДанныхПечати = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ИсточникиКомандПечати, Ложь); + ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(ИсточникиДанныхПечати, ВладельцыМакетов, Ложь); + + ВладельцыМакетов = Новый СписокЗначений(); + Для Каждого Источник Из ИсточникиДанныхПечати Цикл + Если Не ЗначениеЗаполнено(Источник.Значение) Тогда + Продолжить; + КонецЕсли; + ВладельцыМакетов.Добавить(Источник.Значение, Источник.Значение); + КонецЦикла; + + ВладельцыМакетов.СортироватьПоПредставлению(); + ВладельцыМакетов.Добавить(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(), НСтр("ru = 'Прочие'")); + + ГруппыМакетов = Новый Соответствие(); + Для Каждого Владелец Из ВладельцыМакетов Цикл + ГруппаМакетов = Макеты.ПолучитьЭлементы().Добавить(); + ГруппаМакетов.Представление = Владелец.Представление; + ГруппаМакетов.КартинкаГруппы = БиблиотекаКартинок.Папка; + ГруппаМакетов.Картинка = -1; + ГруппаМакетов.КартинкаИспользования = -1; + ГруппаМакетов.ЭтоГруппа = Истина; + ГруппаМакетов.Используется = Истина; + ГруппаМакетов.Владелец = Владелец.Значение; + + ГруппыМакетов.Вставить(Владелец.Значение, ГруппаМакетов); + КонецЦикла; + + СписокМакетов.Сортировать("Владелец, Представление"); + ГруппаМакетов = Неопределено; + Для Каждого ОписаниеМакета Из СписокМакетов Цикл + Если Не ЗначениеЗаполнено(ОписаниеМакета.Владелец) + Или ГруппыМакетов[ОписаниеМакета.Владелец] = Неопределено Тогда + ОписаниеМакета.Владелец = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + КонецЕсли; + + ГруппаМакетов = ГруппыМакетов[ОписаниеМакета.Владелец]; + Макет = ГруппаМакетов.ПолучитьЭлементы().Добавить(); + ЗаполнитьЗначенияСвойств(Макет, ОписаниеМакета); + ДополнитьОписаниеМакета(Макет); + КонецЦикла; КонецПроцедуры &НаСервере -Функция ДобавитьОписаниеМакета(ИмяОбъектаМетаданныхМакета, ПредставлениеМакета, ПредставлениеВладельца, ТипМакета) - ОписаниеМакета = МакетыПечатныхФорм.Добавить(); - ОписаниеМакета.ТипМакета = ТипМакета; - ОписаниеМакета.ИмяОбъектаМетаданныхМакета = ИмяОбъектаМетаданныхМакета; - ОписаниеМакета.ПредставлениеВладельца = ПредставлениеВладельца; - ОписаниеМакета.ПредставлениеМакета = ПредставлениеМакета; - ОписаниеМакета.Картинка = ИндексКартинки(ТипМакета); - ОписаниеМакета.СтрокаПоиска = ИмяОбъектаМетаданныхМакета + " " - + ПредставлениеВладельца + " " - + ПредставлениеМакета + " " - + ТипМакета; +Процедура ДополнитьОписаниеМакета(Макет) - ОписаниеМакета.ДоступныеЯзыки = ДоступныеЯзыкиМакета(ИмяОбъектаМетаданныхМакета); + Макет.ИмяОбъектаМетаданныхМакета = Макет.Идентификатор; + Макет.ДоступныеЯзыки = ДоступныеЯзыкиМакета(Макет.Идентификатор); + Макет.КартинкаИспользования = -1; + Если Макет.Изменен Тогда + Макет.КартинкаИспользования = Число(Макет.Изменен) + Число(Макет.ИспользуетсяИзмененный); + КонецЕсли; + Макет.СтрокаПоиска = Макет.Представление + " " + Макет.ТипМакета; - Возврат ОписаниеМакета; -КонецФункции +КонецПроцедуры + +&НаСервере +Процедура ДополнитьСписокМакетов(СписокМакетов, Знач Идентификатор = Неопределено) + + Если ЗначениеЗаполнено(Идентификатор) Тогда + Идентификатор = Новый УникальныйИдентификатор(Сред(Идентификатор, 4)); + Иначе + Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"); + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | МакетыПечатныхФорм.Ссылка, + | МакетыПечатныхФорм.ИсточникДанных КАК Владелец, + | МакетыПечатныхФорм.Представление, + | МакетыПечатныхФорм.Используется, + | МакетыПечатныхФорм.ТипМакета, + | МакетыПечатныхФорм.Идентификатор + |ИЗ + | Справочник.МакетыПечатныхФорм КАК МакетыПечатныхФорм + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных + | ПО МакетыПечатныхФорм.ИсточникДанных = ИдентификаторыОбъектовМетаданных.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИдентификаторыОбъектовРасширений КАК ИдентификаторыОбъектовРасширений + | ПО МакетыПечатныхФорм.ИсточникДанных = ИдентификаторыОбъектовРасширений.Ссылка + |ГДЕ + | (НЕ &ОтборУстановлен + | ИЛИ МакетыПечатныхФорм.Идентификатор = &Идентификатор) + | И НЕ МакетыПечатныхФорм.ПометкаУдаления"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ОтборУстановлен", ЗначениеЗаполнено(Идентификатор)); + Запрос.УстановитьПараметр("Идентификатор", Идентификатор); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Макет = СписокМакетов.Добавить(); + ЗаполнитьЗначенияСвойств(Макет, Выборка); + + Макет.Картинка = ИндексКартинки(Макет.ТипМакета); + Макет.Изменен = Истина; + Макет.ИспользуетсяИзмененный = Истина; + Макет.ДоступенПеревод = Истина; + Макет.Идентификатор = "ПФ_" + Строка(Макет.Идентификатор); + Макет.ДоступнаНастройкаВидимости = Истина; + Макет.ЭтоПечатнаяФорма = Истина; + КонецЦикла; + +КонецПроцедуры &НаСервере Функция ДоступныеЯзыкиМакета(Знач ИмяОбъектаМетаданныхМакета) @@ -269,46 +449,6 @@ КонецФункции -&НаСервере -Процедура УстановитьФлагиИспользованияИзмененныхМакетов() - - ТекстЗапроса = - "ВЫБРАТЬ - | ИзмененныеМакеты.ИмяМакета, - | ИзмененныеМакеты.Объект, - | ИзмененныеМакеты.Использование - |ИЗ - | РегистрСведений.ПользовательскиеМакетыПечати КАК ИзмененныеМакеты"; - - Запрос = Новый Запрос(ТекстЗапроса); - ИзмененныеМакеты = Запрос.Выполнить().Выгрузить(); - - ЯзыкиПечатныхФорм = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОбщегоНазначения.КодОсновногоЯзыка()); - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда - МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); - ЯзыкиПечатныхФорм = МодульУправлениеПечатьюМультиязычность.ДоступныеЯзыки(); - КонецЕсли; - - Для Каждого Макет Из ИзмененныеМакеты Цикл - ИмяМакета = Макет.ИмяМакета; - Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл - Если СтрЗаканчиваетсяНа(ИмяМакета, "_" + КодЯзыка) Тогда - ИмяМакета = Лев(ИмяМакета, СтрДлина(ИмяМакета) - СтрДлина(КодЯзыка) - 1); - Прервать; - КонецЕсли; - КонецЦикла; - - ИмяОбъектаМетаданныхМакета = Макет.Объект + "." + ИмяМакета; - НайденныеСтроки = МакетыПечатныхФорм.НайтиСтроки(Новый Структура("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета)); - Для Каждого ОписаниеМакета Из НайденныеСтроки Цикл - ОписаниеМакета.Изменен = Истина; - ОписаниеМакета.ИспользуетсяИзмененный = Макет.Использование; - ОписаниеМакета.КартинкаИспользования = Число(ОписаниеМакета.Изменен) + Число(ОписаниеМакета.ИспользуетсяИзмененный); - КонецЦикла; - КонецЦикла; - -КонецПроцедуры - &НаСервере Функция ТипМакета(ИмяОбъектаМетаданныхМакета, ИмяОбъекта = "ОбщийМакет") @@ -346,6 +486,7 @@ ТипыМакетов = Новый Соответствие; ТипыМакетов.Вставить("DOC", 0); + ТипыМакетов.Вставить("DOCX", 0); ТипыМакетов.Вставить("ODT", 1); ТипыМакетов.Вставить("MXL", 2); @@ -358,45 +499,35 @@ &НаКлиенте Процедура УстановитьОтборМакетов(Текст = Неопределено); - Если Текст = Неопределено Тогда - Текст = СтрокаПоиска; - КонецЕсли; + + ПоказыватьИзмененные = Истина; + ПоказыватьНеизмененные = Истина; + ПоказыватьИспользуемые = Истина; + ПоказыватьНеиспользуемые = Истина; - СтруктураОтбора = Новый Структура; - СтруктураОтбора.Вставить("СтрокаПоиска", СокрЛП(Текст)); Если ОтборПоИспользованиюМакета = "Измененные" Тогда - СтруктураОтбора.Вставить("Изменен", Истина); + ПоказыватьНеизмененные = Ложь; ИначеЕсли ОтборПоИспользованиюМакета = "НеИзмененные" Тогда - СтруктураОтбора.Вставить("Изменен", Ложь); + ПоказыватьИзмененные = Ложь; ИначеЕсли ОтборПоИспользованиюМакета = "ИспользуемыеИзмененные" Тогда - СтруктураОтбора.Вставить("ИспользуетсяИзмененный", Истина); + ПоказыватьНеиспользуемые = Ложь; + ПоказыватьНеИзмененные = Ложь; ИначеЕсли ОтборПоИспользованиюМакета = "НеИспользуемыеИзмененные" Тогда - СтруктураОтбора.Вставить("ИспользуетсяИзмененный", Ложь); - СтруктураОтбора.Вставить("Изменен", Истина); + ПоказыватьНеизмененные = Ложь; + ПоказыватьИспользуемые = Ложь; КонецЕсли; - - Если ЗначениеЗаполнено(ОтборПоЯзыку) Тогда - СтруктураОтбора.Вставить("ДоступныеЯзыки", ОтборПоЯзыку); - КонецЕсли; - - Элементы.МакетыПечатныхФорм.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураОтбора); - УстановитьДоступностьКнопокКоманднойПанели(); + КонецПроцедуры &НаКлиенте -Процедура СтрокаПоискаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) - УстановитьОтборМакетов(Текст); -КонецПроцедуры - -&НаКлиенте -Процедура СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка) - УстановитьОтборМакетов(); +Процедура СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + СтрокаПоиска = Текст; КонецПроцедуры &НаКлиенте Процедура СтрокаПоискаПриИзменении(Элемент) - УстановитьОтборМакетов(); - Если Элементы.СтрокаПоиска.СписокВыбора.НайтиПоЗначению(СтрокаПоиска) = Неопределено Тогда + Если ЗначениеЗаполнено(СтрокаПоиска) И Элементы.СтрокаПоиска.СписокВыбора.НайтиПоЗначению(СтрокаПоиска) = Неопределено Тогда Элементы.СтрокаПоиска.СписокВыбора.Добавить(СтрокаПоиска); КонецЕсли; КонецПроцедуры @@ -413,31 +544,11 @@ УстановитьОтборМакетов(); КонецПроцедуры -&НаКлиенте -Процедура ОтборПоЯзыкуПриИзменении(Элемент) - - УстановитьОтборМакетов(); - -КонецПроцедуры - -&НаКлиенте -Процедура ОтборПоЯзыкуОчистка(Элемент, СтандартнаяОбработка) - - УстановитьОтборМакетов(); - -КонецПроцедуры - // Открытие макета &НаКлиенте Процедура ОткрытьМакетПечатнойФормы() - Если СпрашиватьРежимОткрытияМакета Тогда - КонтекстВыбора = "ОткрытьМакетПечатнойФормы"; - ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета", , ЭтотОбъект); - Возврат; - КонецЕсли; - Если РежимОткрытияМакетаПросмотр Тогда ОткрытьМакетПечатнойФормыДляПросмотра(); Иначе @@ -449,7 +560,7 @@ &НаКлиенте Процедура ОткрытьМакетПечатнойФормыДляПросмотра() - ТекущиеДанные = Элементы.МакетыПечатныхФорм.ТекущиеДанные; + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ТекущиеДанные.ИмяОбъектаМетаданныхМакета); @@ -457,7 +568,7 @@ ПараметрыОткрытия.Вставить("ТолькоОткрытие", Истина); Если ТекущиеДанные.ТипМакета = "MXL" Тогда - ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.ПредставлениеМакета); + ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.Представление); ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтотОбъект); Возврат; КонецЕсли; @@ -469,14 +580,16 @@ &НаКлиенте Процедура ОткрытьМакетПечатнойФормыДляРедактирования() - ТекущиеДанные = Элементы.МакетыПечатныхФорм.ТекущиеДанные; + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ТекущиеДанные.ИмяОбъектаМетаданныхМакета); ПараметрыОткрытия.Вставить("ТипМакета", ТекущиеДанные.ТипМакета); + ПараметрыОткрытия.Вставить("Ссылка", ТекущиеДанные.Ссылка); + ПараметрыОткрытия.Вставить("Владелец", ТекущиеДанные.Владелец); Если ТекущиеДанные.ТипМакета = "MXL" Тогда - ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.ПредставлениеМакета); + ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.Представление); ПараметрыОткрытия.Вставить("Редактирование", Истина); ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтотОбъект); Возврат; @@ -486,28 +599,13 @@ КонецПроцедуры -&НаСервереБезКонтекста -Процедура СохранитьНастройкиРежимаОткрытияМакета(СпрашиватьРежимОткрытияМакета, РежимОткрытияМакетаПросмотр) - - Если НЕ ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда - - ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкаОткрытияМакетов", - "СпрашиватьРежимОткрытияМакета", СпрашиватьРежимОткрытияМакета); - - ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкаОткрытияМакетов", - "РежимОткрытияМакетаПросмотр", РежимОткрытияМакетаПросмотр); - - КонецЕсли; - -КонецПроцедуры - // Действия с макетами &НаКлиенте Процедура ПереключитьИспользованиеВыбранныхМакетов(ИспользуетсяИзмененный) ПереключаемыеМакеты = Новый Массив; - Для Каждого ВыделеннаяСтрока Из Элементы.МакетыПечатныхФорм.ВыделенныеСтроки Цикл - ТекущиеДанные = Элементы.МакетыПечатныхФорм.ДанныеСтроки(ВыделеннаяСтрока); + Для Каждого ВыделеннаяСтрока Из Элементы.Макеты.ВыделенныеСтроки Цикл + ТекущиеДанные = Элементы.Макеты.ДанныеСтроки(ВыделеннаяСтрока); Если ТекущиеДанные.Изменен Тогда ТекущиеДанные.ИспользуетсяИзмененный = ИспользуетсяИзмененный; УстановитьКартинкуИспользования(ТекущиеДанные); @@ -521,35 +619,15 @@ &НаСервереБезКонтекста Процедура УстановитьИспользованиеИзмененныхМакетов(Макеты, ИспользуетсяИзмененный) - Для Каждого ИмяОбъектаМетаданныхМакета Из Макеты Цикл - ЧастиИмени = СтрРазделить(ИмяОбъектаМетаданныхМакета, "."); - ИмяМакета = ЧастиИмени[ЧастиИмени.ВГраница()]; - - ИмяВладельца = ""; - Для НомерЧасти = 0 По ЧастиИмени.ВГраница()-1 Цикл - Если Не ПустаяСтрока(ИмяВладельца) Тогда - ИмяВладельца = ИмяВладельца + "."; - КонецЕсли; - ИмяВладельца = ИмяВладельца + ЧастиИмени[НомерЧасти]; - КонецЦикла; - - Запись = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьМенеджерЗаписи(); - Запись.Объект = ИмяВладельца; - Запись.ИмяМакета = ИмяМакета; - Запись.Прочитать(); - Если Запись.Выбран() Тогда - Запись.Использование = ИспользуетсяИзмененный; - Запись.Записать(); - КонецЕсли; - КонецЦикла; + РегистрыСведений.ПользовательскиеМакетыПечати.УстановитьИспользованиеИзмененныхМакетов(Макеты, ИспользуетсяИзмененный); КонецПроцедуры &НаКлиенте Процедура УдалитьВыбранныеИзмененныеМакеты(Команда) УдаляемыеМакеты = Новый Массив; - Для Каждого ВыделеннаяСтрока Из Элементы.МакетыПечатныхФорм.ВыделенныеСтроки Цикл - ТекущиеДанные = Элементы.МакетыПечатныхФорм.ДанныеСтроки(ВыделеннаяСтрока); + Для Каждого ВыделеннаяСтрока Из Элементы.Макеты.ВыделенныеСтроки Цикл + ТекущиеДанные = Элементы.Макеты.ДанныеСтроки(ВыделеннаяСтрока); ТекущиеДанные.ИспользуетсяИзмененный = Ложь; ТекущиеДанные.Изменен = Ложь; УстановитьКартинкуИспользования(ТекущиеДанные); @@ -568,15 +646,9 @@ КонецПроцедуры -&НаСервереБезКонтекста -Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, КодЯзыка = Неопределено) - УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище, КодЯзыка); -КонецПроцедуры - &НаКлиенте Процедура ОбновитьОтображениеМакетов(); - УстановитьФлагиИспользованияИзмененныхМакетов(); УстановитьДоступностьКнопокКоманднойПанели(); КонецПроцедуры @@ -585,34 +657,351 @@ &НаКлиенте Процедура УстановитьКартинкуИспользования(ОписаниеМакета) - ОписаниеМакета.КартинкаИспользования = Число(ОписаниеМакета.Изменен) + Число(ОписаниеМакета.ИспользуетсяИзмененный); + ОписаниеМакета.КартинкаИспользования = -1; + Если ОписаниеМакета.Изменен Тогда + ОписаниеМакета.КартинкаИспользования = Число(ОписаниеМакета.Изменен) + Число(ОписаниеМакета.ИспользуетсяИзмененный); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УстановитьДоступностьКнопокКоманднойПанели() - ТекущийМакет = Элементы.МакетыПечатныхФорм.ТекущиеДанные; + ТекущийМакет = Элементы.Макеты.ТекущиеДанные; ТекущийМакетВыбран = ТекущийМакет <> Неопределено; - ВыбраноНесколькоМакетов = Элементы.МакетыПечатныхФорм.ВыделенныеСтроки.Количество() > 1; - - Элементы.МакетыПечатныхФормОткрытьМакет.Доступность = ТекущийМакетВыбран И Не ВыбраноНесколькоМакетов; - Элементы.МакетыПечатныхФормИзменитьМакет.Доступность = ТекущийМакетВыбран И Не ВыбраноНесколькоМакетов; + ВыбраноНесколькоМакетов = Элементы.Макеты.ВыделенныеСтроки.Количество() > 1; ИспользоватьИзмененныйМакетДоступность = Ложь; ИспользоватьСтандартныйМакетДоступность = Ложь; УдалитьИзмененныйМакетДоступность = Ложь; + УдалитьМакетВидимость = Ложь; - Для Каждого ВыделеннаяСтрока Из Элементы.МакетыПечатныхФорм.ВыделенныеСтроки Цикл - ТекущийМакет = Элементы.МакетыПечатныхФорм.ДанныеСтроки(ВыделеннаяСтрока); - ИспользоватьИзмененныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И Не ТекущийМакет.ИспользуетсяИзмененный Или ВыбраноНесколькоМакетов И ИспользоватьИзмененныйМакетДоступность; - ИспользоватьСтандартныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И ТекущийМакет.ИспользуетсяИзмененный Или ВыбраноНесколькоМакетов И ИспользоватьСтандартныйМакетДоступность; - УдалитьИзмененныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен Или ВыбраноНесколькоМакетов И УдалитьИзмененныйМакетДоступность; + Для Каждого ВыделеннаяСтрока Из Элементы.Макеты.ВыделенныеСтроки Цикл + ТекущийМакет = Элементы.Макеты.ДанныеСтроки(ВыделеннаяСтрока); + ИспользоватьИзмененныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И Не ТекущийМакет.ИспользуетсяИзмененный И Не ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И ИспользоватьИзмененныйМакетДоступность; + ИспользоватьСтандартныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И ТекущийМакет.ИспользуетсяИзмененный И Не ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И ИспользоватьСтандартныйМакетДоступность; + УдалитьИзмененныйМакетДоступность = ТекущийМакетВыбран И ТекущийМакет.Изменен И Не ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И УдалитьИзмененныйМакетДоступность; + УдалитьМакетВидимость = ТекущийМакетВыбран И ЗначениеЗаполнено(ТекущийМакет.Ссылка) Или ВыбраноНесколькоМакетов И УдалитьМакетВидимость; КонецЦикла; Элементы.МакетыПечатныхФормИспользоватьИзмененныйМакет.Доступность = ИспользоватьИзмененныйМакетДоступность; Элементы.МакетыПечатныхФормИспользоватьСтандартныйМакет.Доступность = ИспользоватьСтандартныйМакетДоступность; Элементы.МакетыПечатныхФормУдалитьИзмененныйМакет.Доступность = УдалитьИзмененныйМакетДоступность; + Элементы.МакетыКонтекстноеМенюУдалитьИзмененныйМакет.Видимость = УдалитьИзмененныйМакетДоступность; + Элементы.МакетыКонтекстноеМенюУдалитьМакет.Видимость = УдалитьМакетВидимость; + Элементы.МакетыУсловияДоступности.Доступность = ТекущийМакетВыбран И ТекущийМакет.ДоступнаНастройкаВидимости; + Элементы.МакетыСкопировать.Доступность = ТекущийМакетВыбран И ТекущийМакет.ЭтоПечатнаяФорма И Не ВыбраноНесколькоМакетов; + Элементы.МакетыДобавитьМакет.Доступность = ТекущийМакетВыбран И ЗначениеЗаполнено(ТекущийМакет.Владелец); + +КонецПроцедуры + +&НаКлиенте +Процедура Скопировать(Команда) + + ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореИмениМакета", ЭтотОбъект, Истина); + ПоказатьВводСтроки(ОписаниеОповещения, НСтр("ru = 'Новая печатная форма'"), НСтр("ru = 'Введите наименование макета'"), 100, Ложь) + +КонецПроцедуры + +&НаКлиенте +Процедура ПриВыбореИмениМакета(ИмяМакета, Копирование) Экспорт + + Если Не ЗначениеЗаполнено(ИмяМакета) Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; + + ТипМакета = "MXL"; + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТипМакета", ТипМакета); + ПараметрыОткрытия.Вставить("Владелец", ТекущиеДанные.Владелец); + ПараметрыОткрытия.Вставить("ИмяДокумента", ИмяМакета); + + Если Копирование Тогда + ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ТекущиеДанные.ИмяОбъектаМетаданныхМакета); + ПараметрыОткрытия.Вставить("Копирование", Копирование); + КонецЕсли; + + Если ТипМакета = "MXL" Тогда + ПараметрыОткрытия.Вставить("Редактирование", Истина); + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтотОбъект); + Возврат; + КонецЕсли; + + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.РедактированиеМакета", ПараметрыОткрытия, ЭтотОбъект); + +КонецПроцедуры + +&НаСервере +Функция ИзмененныеМакеты() + + ТекстЗапроса = + "ВЫБРАТЬ + | ИзмененныеМакеты.ИмяМакета, + | ИзмененныеМакеты.Объект, + | ИзмененныеМакеты.Использование + |ИЗ + | РегистрСведений.ПользовательскиеМакетыПечати КАК ИзмененныеМакеты"; + + Запрос = Новый Запрос(ТекстЗапроса); + ИзмененныеМакеты = Запрос.Выполнить().Выгрузить(); + + ЯзыкиПечатныхФорм = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОбщегоНазначения.КодОсновногоЯзыка()); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность.Печать") Тогда + МодульУправлениеПечатьюМультиязычность = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатьюМультиязычность"); + ЯзыкиПечатныхФорм = МодульУправлениеПечатьюМультиязычность.ДоступныеЯзыки(); + КонецЕсли; + + Результат = Новый Соответствие; + + Для Каждого Макет Из ИзмененныеМакеты Цикл + ИмяМакета = Макет.ИмяМакета; + Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл + Если СтрНайти(ИмяМакета, "_MXL_") И СтрЗаканчиваетсяНа(ИмяМакета, "_" + КодЯзыка) Тогда + ИмяМакета = Лев(ИмяМакета, СтрДлина(ИмяМакета) - СтрДлина(КодЯзыка) - 1); + Прервать; + КонецЕсли; + КонецЦикла; + + ИмяОбъектаМетаданныхМакета = Макет.Объект + "." + ИмяМакета; + Результат.Вставить(ИмяОбъектаМетаданныхМакета, Макет.Использование); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаСервере +Функция НайтиМакет(Идентификатор) + + ГруппыМакетов = Макеты.ПолучитьЭлементы(); + Для Каждого ГруппаМакетов Из ГруппыМакетов Цикл + Для Каждого Макет Из ГруппаМакетов.ПолучитьЭлементы() Цикл + Если Макет.Идентификатор = Идентификатор Тогда + Возврат Макет; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +&НаКлиенте +Процедура УдалитьМакет(Команда) + + ТекущиеДанные = Элементы.Макеты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ИдентификаторМакета = ТекущиеДанные.Идентификатор; + УдалитьМакетНаСервере(ИдентификаторМакета); + Элементы.Макеты.ТекущиеДанные.ПолучитьРодителя().ПолучитьЭлементы().Удалить(Элементы.Макеты.ТекущиеДанные); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьМакетНаСервере(ИдентификаторМакета) + + УправлениеПечатью.УдалитьМакет(ИдентификаторМакета); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // Цвет отключенных + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Используется"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + + // Скрытие флажка использования для групп + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("МакетыИспользуется"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + + // Скрытие флажка использования для поставляемых макетов + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("МакетыИспользуется"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Поставляемый"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + + // Поиск по строке + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.СтрокаПоиска"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеСодержит; + ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СтрокаПоиска"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // Поиск по языку + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтборПоЯзыку"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ДоступныеЯзыки"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеСодержит; + ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтборПоЯзыку"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // ПоказыватьИзмененные + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПоказыватьИзмененные"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Изменен"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // ПоказыватьИспользуемые + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПоказыватьИспользуемые"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Используется"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Истина; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // ПоказыватьНеизмененные + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПоказыватьНеизмененные"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Изменен"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + + // ПоказыватьНеиспользуемые + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Макеты"); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПоказыватьНеиспользуемые"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.Используется"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Макеты.ЭтоГруппа"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); + КонецПроцедуры #КонецОбласти + diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ManagerModule.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ManagerModule.bsl index 9578dfa58..508108feb 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ManagerModule.bsl @@ -112,6 +112,48 @@ КонецФункции +Процедура УстановитьИспользованиеИзмененныхМакетов(Макеты, ИспользуетсяИзмененный) Экспорт + + Для Каждого ИмяОбъектаМетаданныхМакета Из Макеты Цикл + ЧастиИмени = СтрРазделить(ИмяОбъектаМетаданныхМакета, "."); + ИмяМакета = ЧастиИмени[ЧастиИмени.ВГраница()]; + + ИмяВладельца = ""; + Для НомерЧасти = 0 По ЧастиИмени.ВГраница()-1 Цикл + Если Не ПустаяСтрока(ИмяВладельца) Тогда + ИмяВладельца = ИмяВладельца + "."; + КонецЕсли; + ИмяВладельца = ИмяВладельца + ЧастиИмени[НомерЧасти]; + КонецЦикла; + + ТекстЗапроса = + "ВЫБРАТЬ + | ПользовательскиеМакетыПечати.ИмяМакета КАК ИмяМакета + |ИЗ + | РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати + |ГДЕ + | ПользовательскиеМакетыПечати.Объект = &Объект + | И ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО &ИмяМакета"; + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.Параметры.Вставить("Объект", ИмяВладельца); + Запрос.Параметры.Вставить("ИмяМакета", ИмяМакета + "%"); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Запись = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьМенеджерЗаписи(); + Запись.Объект = ИмяВладельца; + Запись.ИмяМакета = Выборка.ИмяМакета; + Запись.Прочитать(); + Если Запись.Выбран() Тогда + Запись.Использование = ИспользуетсяИзмененный; + Запись.Записать(); + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецЕсли diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo index e2ef4e9c0..a8f208f82 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo @@ -98,6 +98,23 @@ Use + + УсловиеВидимости + + ru + Условие видимости + + + String + + + true + + + Use + Use + + ИмяМакета diff --git a/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl b/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl index ec58fae8b..814c9a3cb 100644 --- a/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl @@ -163,10 +163,12 @@ // Массив - со значениями типа Строка, если ПолучитьМассивИмен = Истина. // Функция ВсеПоляОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, - ПолноеИмя, ОбъектИБ = Неопределено, ПолучитьМассивИмен = Ложь) + ПолноеИмя, ОбъектИБ = Неопределено, ПолучитьМассивИмен = Ложь) Экспорт + ИменаПолей = Новый Массив; ИменаКоллекций = Новый Массив; - ИмяТипа = Лев(ПолноеИмя, СтрНайти(ПолноеИмя, ".") - 1); + ЧастиИмени = СтрРазделить(ПолноеИмя, "."); + ИмяТипа = ЧастиИмени[0]; Если ИмяТипа = "Справочник" Тогда ИменаКоллекций.Добавить("Реквизиты"); @@ -219,10 +221,18 @@ ИменаКоллекций.Добавить("СтандартныеРеквизиты"); ИначеЕсли ИмяТипа = "РегистрРасчета" Тогда - ИменаКоллекций.Добавить("Измерения"); - ИменаКоллекций.Добавить("Ресурсы"); - ИменаКоллекций.Добавить("Реквизиты"); - ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + Если ЧастиИмени.Количество() > 2 И ЧастиИмени[2] = "Перерасчет" Тогда + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, + "ОбъектПерерасчета", ИменаПолей, ОбъектИБ); + ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, + "ВидРасчета", ИменаПолей, ОбъектИБ); + ИменаКоллекций.Добавить("Измерения"); + Иначе + ИменаКоллекций.Добавить("Измерения"); + ИменаКоллекций.Добавить("Ресурсы"); + ИменаКоллекций.Добавить("Реквизиты"); + ИменаКоллекций.Добавить("СтандартныеРеквизиты"); + КонецЕсли; ИначеЕсли ИмяТипа = "БизнесПроцесс" Тогда ИменаКоллекций.Добавить("Реквизиты"); @@ -236,7 +246,6 @@ ИменаКоллекций.Добавить("СтандартныеРеквизиты"); КонецЕсли; - ИменаПолей = Новый Массив; Если ОбъектИБ = Неопределено Тогда ТипХранилищеЗначения = Тип("ХранилищеЗначения"); Иначе @@ -245,7 +254,7 @@ Для каждого ИмяКоллекции Из ИменаКоллекций Цикл Если ИмяКоллекции = "ТабличныеЧасти" - ИЛИ ИмяКоллекции = "СтандартныеТабличныеЧасти" Тогда + Или ИмяКоллекции = "СтандартныеТабличныеЧасти" Тогда Для каждого ТабличнаяЧасть Из ОбъектМетаданных[ИмяКоллекции] Цикл ДобавитьПолеОграниченияДоступаОбъектаМетаданных(ОбъектМетаданных, ТабличнаяЧасть.Имя, ИменаПолей, ОбъектИБ); Реквизиты = ?(ИмяКоллекции = "ТабличныеЧасти", ТабличнаяЧасть.Реквизиты, ТабличнаяЧасть.СтандартныеРеквизиты); @@ -271,8 +280,13 @@ И СтрНайти(Поле.Имя, "Субконто") > 0 Тогда Продолжить; КонецЕсли; - Если ИмяКоллекции = "Графы" - Или Поле.Тип.СодержитТип(ТипХранилищеЗначения) Тогда + Если ИмяКоллекции = "Графы" Тогда + Продолжить; + КонецЕсли; + СвойствоТип = Новый Структура("Тип"); + ЗаполнитьЗначенияСвойств(СвойствоТип, Поле); + Если ТипЗнч(СвойствоТип.Тип) = Тип("ОписаниеТипов") + И СвойствоТип.Тип.СодержитТип(ТипХранилищеЗначения) Тогда Продолжить; КонецЕсли; Если (ИмяКоллекции = "Измерения" Или ИмяКоллекции = "Ресурсы") diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Form.form b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Form.form index f4cc45a64..a043ba184 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Form.form +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Form.form @@ -217,7 +217,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl index bfb871cb9..f2a1f3a19 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl @@ -65,7 +65,7 @@ ДополнительныеПараметры.Вставить("ПользовательскиеНастройкиШаблонов", КаталогAppData() + "1C\1CEStart\1CEStart.cfg"); ДополнительныеПараметры.Вставить("РасположениеФайла", ""); - ТекстПредложения = НСтр("ru = 'Для открытия каталога установите расширение для работы с 1С:Предприятием.'"); + ТекстПредложения = НСтр("ru = 'Для открытия каталога необходимо необходимо установить расширение для работы с 1С:Предприятием.'"); Оповещение = Новый ОписаниеОповещения("ПослеПроверкиРасширенияРаботыСФайлами", ЭтотОбъект, ДополнительныеПараметры); ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение, ТекстПредложения); Иначе diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form index a986bb7f1..69bd02ca5 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form @@ -1254,32 +1254,6 @@ UserCmds Auto - - ФормаЗаписать - 84 - true - true - - true - - - ФормаЗаписатьРасширеннаяПодсказка - 85 - Label - true - true - - Left - - - Form.StandardCommand.Write - Normal - Auto - true - true - UserCmds - Auto - ФормаПеречитать 50 @@ -1333,6 +1307,32 @@ UserCmds Auto + + ФормаЗаписатьПравила + 116 + true + true + + true + + + ФормаЗаписатьПравилаРасширеннаяПодсказка + 117 + Label + true + true + + Left + + + Form.Command.ЗаписатьПравила + Normal + Auto + true + true + UserCmds + Auto + СохранитьПравилаВФайл 20 @@ -1370,6 +1370,7 @@ Copy Delete Reread + Write WriteAndClose LockOwner true @@ -1522,6 +1523,28 @@ DontUse Auto + + ЗаписатьПравила + + <key>ru</key> + <value>Записать</value> + + 4 + + ru + Записать правила + + + true + + + + ЗаписатьПравила + + + Auto + Auto + @@ -1531,9 +1554,5 @@ AfterWrite ПослеЗаписи - - BeforeWrite - ПередЗаписью - diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl index 1bd83cf4c..d813bb836 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl @@ -6,13 +6,6 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// -#Область ОписаниеПеременных - -&НаКлиенте -Перем ВнешниеРесурсыРазрешены; - -#КонецОбласти - #Область ОбработчикиСобытийФормы &НаСервере @@ -36,38 +29,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) - - Если Не ПроверитьЗаполнениеНаКлиенте() Тогда - Отказ = Истина; - Возврат; - КонецЕсли; - - Если ВнешниеРесурсыРазрешены <> Истина Тогда - - ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ПараметрыЗаписи); - Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда - Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов(Запись); - МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); - МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии); - Иначе - ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); - КонецЕсли; - - Отказ = Истина; - Возврат; - - КонецЕсли; - ВнешниеРесурсыРазрешены = Ложь; - - Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда - // Из конфигурации - ВыполнитьЗагрузкуПравил(Неопределено, "", Ложь); - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Функция ПроверитьЗаполнениеНаКлиенте() @@ -292,10 +253,26 @@ &НаКлиенте Процедура ЗаписатьИЗакрыть(Команда) + + Если Не ПроверитьЗаполнениеНаКлиенте() Тогда + Отказ = Истина; + КонецЕсли; ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("ЗаписатьИЗакрыть"); - Записать(ПараметрыЗаписи); + РазрешитьВнешнийРесурс(ПараметрыЗаписи) + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьПравила(Команда) + + Если Не ПроверитьЗаполнениеНаКлиенте() Тогда + Отказ = Истина; + КонецЕсли; + + ПараметрыЗаписи = Новый Структура; + РазрешитьВнешнийРесурс(ПараметрыЗаписи); КонецПроцедуры @@ -503,12 +480,32 @@ КонецПроцедуры +&НаКлиенте +Процедура РазрешитьВнешнийРесурс(ПараметрыЗаписи); + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ПараметрыЗаписи); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов(Запись); + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии); + Иначе + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура РазрешитьВнешнийРесурсЗавершение(Результат, ПараметрыЗаписи) Экспорт Если Результат = КодВозвратаДиалога.ОК Тогда - ВнешниеРесурсыРазрешены = Истина; + + Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда + // Из конфигурации + ВыполнитьЗагрузкуПравил(Неопределено, "", Ложь); + КонецЕсли; + Записать(ПараметрыЗаписи); + КонецЕсли; КонецПроцедуры @@ -523,4 +520,5 @@ КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Form.form b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Form.form index 7821b6c11..2c1d30192 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Form.form +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Form.form @@ -134,8 +134,8 @@ ru Использовать типовые правила - - ТиповыеИзКонфигурации + + Enum.ИсточникиПравилДляОбменаДанными.EnumValue.МакетКонфигурации Vertical @@ -325,6 +325,215 @@ Auto + + ГруппаПравилаМенеджерТиповой + 74 + + ИсточникПравилМенеджерТиповой + 76 + true + true + + true + + + ИсточникПравил + + None + Button + + OnChange + ИсточникПравилПриИзменении + + + ИсточникПравилМенеджерТиповойРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + + ИсточникПравилМенеджерТиповойКонтекстноеМеню + 77 + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Использовать типовые правила + + + Enum.ИсточникиПравилДляОбменаДанными.EnumValue.МенеджерТиповой + + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Правила типовые</value> + + + ГруппаПравилаМенеджерТиповойРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + Auto + Auto + + + + ГруппаПравилаМенеджер + 91 + + ИсточникПравилМенеджер + 93 + true + true + + true + + + ИсточникПравил + + None + + OnChange + ИсточникПравилПриИзменении + + + ИсточникПравилМенеджерРасширеннаяПодсказка + 95 + Label + true + true + + Left + + + + ИсточникПравилМенеджерКонтекстноеМеню + 94 + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Использовать пользовательский модуль: + + + Enum.ИсточникиПравилДляОбменаДанными.EnumValue.МенеджерПользовательский + + + Vertical + + + + ИмяМенеджераРегистрации + 111 + true + true + + true + + + Запись.ИмяМенеджераРегистрации + + None + + OnChange + ИмяМенеджераРегистрацииПриИзменении + + + ИмяМенеджераРегистрацииРасширеннаяПодсказка + 113 + Label + true + true + + Left + + + + ИмяМенеджераРегистрацииКонтекстноеМеню + 112 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Правила типовые</value> + + + ГруппаПравилаМенеджерРасширеннаяПодсказка + 92 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + Auto + Auto + + ГруппаПравилаИзФайла 69 @@ -371,8 +580,8 @@ ru Загрузить из файла на компьютере: - - ЗагруженныеИзФайла + + Enum.ИсточникиПравилДляОбменаДанными.EnumValue.Файл Vertical @@ -643,32 +852,6 @@ UserCmds Auto - - ФормаЗаписать - 52 - true - true - - true - - - ФормаЗаписатьРасширеннаяПодсказка - 53 - Label - true - true - - Left - - - Form.StandardCommand.Write - Normal - Auto - true - true - UserCmds - Auto - ФормаПеречитать 54 @@ -696,6 +879,32 @@ Auto InAdditionalSubmenu + + ФормаЗаписатьПравила + 114 + true + true + + true + + + ФормаЗаписатьПравилаРасширеннаяПодсказка + 115 + Label + true + true + + Left + + + Form.Command.ЗаписатьПравила + Normal + Auto + true + true + UserCmds + Auto + ФормаСохранитьПравилаРегистрацииВФайл 58 @@ -731,6 +940,7 @@ Copy Delete + Write WriteAndClose LockOwner true @@ -782,8 +992,7 @@ 3 - String - + EnumRef.ИсточникиПравилДляОбменаДанными true @@ -883,6 +1092,28 @@ DontUse Auto + + ЗаписатьПравила + + <key>ru</key> + <value>Записать</value> + + 4 + + ru + Записать правила + + + true + + + + ЗаписатьПравила + + + Auto + Auto + @@ -892,9 +1123,5 @@ AfterWrite ПослеЗаписи - - BeforeWrite - ПередЗаписью - diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl index b9bd1c66b..f2703825b 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl @@ -6,18 +6,11 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// -#Область ОписаниеПеременных - -&НаКлиенте -Перем ВнешниеРесурсыРазрешены; - -#КонецОбласти - #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - + ОбновитьСписокВыбораПлановОбмена(); ОбновитьСписокВыбораМакетаПравил(); @@ -28,34 +21,7 @@ СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); - Элементы.ГруппаПланаОбмена.Видимость = ПустаяСтрока(Запись.ИмяПланаОбмена); - -КонецПроцедуры - -&НаКлиенте -Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) - - Если ВнешниеРесурсыРазрешены <> Истина Тогда - - ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ПараметрыЗаписи); - Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда - Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов(Запись); - МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); - МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии); - Иначе - ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); - КонецЕсли; - - Отказ = Истина; - Возврат; - - КонецЕсли; - ВнешниеРесурсыРазрешены = Ложь; - - Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда - // Из конфигурации - ВыполнитьЗагрузкуПравил(Неопределено, "", Ложь); - КонецЕсли; + НастройкаЭлементовФормы(); КонецПроцедуры @@ -85,14 +51,25 @@ &НаКлиенте Процедура ИсточникПравилПриИзменении(Элемент) - Элементы.ИсточникФайл.Доступность = (ИсточникПравил = "ЗагруженныеИзФайла"); + Элементы.ИсточникФайл.Доступность = ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.Файл"); + + Если ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МакетКонфигурации") Тогда - Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда - Запись.РежимОтладки = Ложь; - + КонецЕсли; + Элементы.ИмяМенеджераРегистрации.Доступность = ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский"); + + ОбновитьИнформациюОНезаписанныхПравилах(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИмяМенеджераРегистрацииПриИзменении(Элемент) + + ОбновитьИнформациюОНезаписанныхПравилах(); + КонецПроцедуры #КонецОбласти @@ -156,7 +133,15 @@ ПараметрыЗаписи = Новый Структура; ПараметрыЗаписи.Вставить("ЗаписатьИЗакрыть"); - Записать(ПараметрыЗаписи); + РазрешитьВнешнийРесурс(ПараметрыЗаписи); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьПравила(Команда) + + ПараметрыЗаписи = Новый Структура; + РазрешитьВнешнийРесурс(ПараметрыЗаписи) КонецПроцедуры @@ -226,12 +211,28 @@ &НаСервере Процедура ЗагрузитьПравилаНаСервере(Отказ, АдресВременногоХранилища, ИмяФайлаПравил, ЭтоАрхив) - Запись.ИсточникПравил = ?(ИсточникПравил = "ТиповыеИзКонфигурации", - Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации, Перечисления.ИсточникиПравилДляОбменаДанными.Файл); + Запись.ИсточникПравил = ИсточникПравил; Объект = РеквизитФормыВЗначение("Запись"); - РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(Отказ, Объект, АдресВременногоХранилища, ИмяФайлаПравил, ЭтоАрхив); + Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации + Или ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда + + РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(Отказ, Объект, АдресВременногоХранилища, ИмяФайлаПравил, ЭтоАрхив); + + Иначе + + Объект.ИмяФайлаПравил = ""; + Объект.ПравилаЗачитанные = Неопределено; + + Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой Тогда + Объект.ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Объект.ИмяПланаОбмена); + КонецЕсли; + + Менеджер = ОбщегоНазначения.ОбщийМодуль(Объект.ИмяМенеджераРегистрации); + Объект.ИнформацияОПравилах = Менеджер.ИнформацияОПравилах(); + + КонецЕсли; Если Не Отказ Тогда @@ -269,29 +270,100 @@ Если Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда - ИнформацияОПравилах = НСтр("ru = 'Использование правил, загруженных из файла, - |может привести к ошибкам при переходе на новую версию программы. - | - |[ИнформацияОПравилах]'"); - - ИнформацияОПравилах = СтрЗаменить(ИнформацияОПравилах, "[ИнформацияОПравилах]", Запись.ИнформацияОПравилах); + ШаблонСтроки = НСтр("ru = 'Использование правил, загруженных из файла, + |может привести к ошибкам при переходе на новую версию программы. + | + |%1'"); + + ИначеЕсли Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский Тогда + ШаблонСтроки = НСтр("ru = 'Использование правил, из пользовательского модуля, + |может привести к ошибкам при переходе на новую версию программы. + | + |%1'"); Иначе - ИнформацияОПравилах = Запись.ИнформацияОПравилах; + ШаблонСтроки = "%1"; КонецЕсли; + ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, Запись.ИнформацияОПравилах); + КонецПроцедуры +&НаСервере +Процедура ОбновитьИнформациюОНезаписанныхПравилах() + + Если ИсточникПравил = Запись.ИсточникПравил + И (ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации + ИЛИ ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл)Тогда + + ОбновитьИнформациюОПравилах(); + + ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации Тогда + + ИнформацияОПравилах = НСтр("ru = 'Информация о правилах будет доступна после записи'"); + + ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда + + ИнформацияОПравилах = НСтр("ru = 'Информация о правилах будет доступна после загрузки из файла'"); + + Иначе + + Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой Тогда + + ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Запись.ИмяПланаОбмена); + ШаблонСтроки = "%1"; + + ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский Тогда + + ИмяМенеджераРегистрации = Запись.ИмяМенеджераРегистрации; + ШаблонСтроки = НСтр("ru = 'Использование правил, из пользовательского модуля, + |может привести к ошибкам при переходе на новую версию программы. + | + |%1'"); + + КонецЕсли; + + Попытка + + Менеджер = ОбщегоНазначения.ОбщийМодуль(ИмяМенеджераРегистрации); + ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, Менеджер.ИнформацияОПравилах()); + + Исключение + + ТекстСообщения = НСтр("ru = 'При получении информации о правилах регистрации произошла ошибка: + |%1'"); + ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ТекстСообщения, ИнформацияОбОшибке().Описание); + + КонецПопытки; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ОбновитьИсточникПравил() - ИсточникПравил = ?(Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации, - "ТиповыеИзКонфигурации", "ЗагруженныеИзФайла"); + ИсточникПравил = Запись.ИсточникПравил; КонецПроцедуры +&НаСервере +Процедура НастройкаЭлементовФормы() + + Элементы.ГруппаПланаОбмена.Видимость = ПустаяСтрока(Запись.ИмяПланаОбмена); + + Если ОбменДаннымиПовтИсп.ПравилаРегистрацииВМенеджере(Запись.ИмяПланаОбмена) Тогда + Элементы.ГруппаПравилаТиповые.Видимость = Ложь; + Элементы.ИмяМенеджераРегистрации.Доступность = ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский; + Иначе + Элементы.ГруппаПравилаМенеджерТиповой.Видимость = Ложь; + Элементы.ГруппаПравилаМенеджер.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ВыполнитьЗагрузкуПравил(Знач АдресПомещенногоФайла, Знач ИмяФайла, Знач ЭтоАрхив) Отказ = Ложь; @@ -324,8 +396,8 @@ ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки); Возврат; КонецЕсли; - - ИсточникПравил = "ЗагруженныеИзФайла"; + + ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.Файл"); // Успешно передали файл, загружаем на сервере. ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(РезультатПомещенияФайлов.Имя); @@ -333,12 +405,32 @@ ВыполнитьЗагрузкуПравил(АдресПомещенногоФайла, ЧастиИмени.Имя, НРег(ЧастиИмени.Расширение) = ".zip"); КонецПроцедуры +&НаКлиенте +Процедура РазрешитьВнешнийРесурс(ПараметрыЗаписи); + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ПараметрыЗаписи); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов(Запись); + МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); + МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии); + Иначе + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура РазрешитьВнешнийРесурсЗавершение(Результат, ПараметрыЗаписи) Экспорт Если Результат = КодВозвратаДиалога.ОК Тогда - ВнешниеРесурсыРазрешены = Истина; + + Если ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МакетКонфигурации") Тогда + // Из конфигурации + ВыполнитьЗагрузкуПравил(Неопределено, "", Ложь); + КонецЕсли; + Записать(ПараметрыЗаписи); + КонецЕсли; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ФормаСписка/Form.form index e50891497..7ad0f5322 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ФормаСписка/Form.form +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ФормаСписка/Form.form @@ -36,6 +36,318 @@ Auto + + КоманднаяПанель + 42 + + ФормаГруппа3 + 24 + + ФормаИспользоватьТиповыеПравила + 40 + true + true + + true + + + ФормаИспользоватьТиповыеПравилаРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + Form.Command.ИспользоватьТиповыеПравила + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОбновитьВсеТиповыеПравила + 14 + true + true + + true + + + ФормаОбновитьВсеТиповыеПравилаExtendedTooltip + 27 + Label + true + true + + Left + + + Form.Command.ОбновитьВсеТиповыеПравила + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа 3</value> + + + ФормаГруппа3ExtendedTooltip + 26 + Label + true + true + + Left + + + + + + ФормаГруппа1 + 15 + + ФормаНайти + 17 + true + true + + true + + + ФормаНайтиExtendedTooltip + 29 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ФормаОтменитьПоиск + 18 + true + true + + true + + + ФормаОтменитьПоискExtendedTooltip + 30 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа 1</value> + + + ФормаГруппа1ExtendedTooltip + 28 + Label + true + true + + Left + + + + + + ФормаГруппа2 + 16 + + ФормаОбновить + 21 + true + true + + true + + + ФормаОбновитьExtendedTooltip + 32 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Refresh + Normal + Auto + true + true + UserCmds + Auto + + + ФормаНастройкаСписка + 19 + true + true + + true + + + ФормаНастройкаСпискаExtendedTooltip + 33 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.ListSettings + Normal + Auto + true + true + UserCmds + Auto + + + ФормаВывестиСписок + 20 + true + true + + true + + + ФормаВывестиСписокExtendedTooltip + 34 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + ФормаКопироватьВБуферОбмена + 22 + true + true + + true + + + ФормаКопироватьВБуферОбменаExtendedTooltip + 35 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Форма группа 2</value> + + + ФормаГруппа2ExtendedTooltip + 31 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + КоманднаяПанельРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + CommandBar + + Left + + Список 1 @@ -56,11 +368,6 @@ Copy Create Delete - DynamicListStandardSettings - FindByCurrentValue - ListSettings - LoadDynamicListSettings - SaveDynamicListSettings ИмяПланаОбмена 4 @@ -176,20 +483,21 @@ true + None СписокКоманднаяПанель 3 - ФормаИзменить - 23 + СписокИзменить + 57 true true true - ФормаИзменитьExtendedTooltip - 25 + СписокИзменитьРасширеннаяПодсказка + 58 Label true true @@ -204,294 +512,9 @@ true UserCmds Auto - InAdditionalSubmenu - - - ФормаГруппа3 - 24 - - ФормаИспользоватьТиповыеПравила - 40 - true - true - - true - - - ФормаИспользоватьТиповыеПравилаРасширеннаяПодсказка - 41 - Label - true - true - - Left - - - Form.Command.ИспользоватьТиповыеПравила - Normal - Auto - true - true - UserCmds - Auto - - - ФормаОбновитьВсеТиповыеПравила - 14 - true - true - - true - - - ФормаОбновитьВсеТиповыеПравилаExtendedTooltip - 27 - Label - true - true - - Left - - - Form.Command.ОбновитьВсеТиповыеПравила - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - true - true - - true - - - <key>ru</key> - <value>Форма группа 3</value> - - - ФормаГруппа3ExtendedTooltip - 26 - Label - true - true - - Left - - - - - - ФормаГруппа1 - 15 - - ФормаНайти - 17 - true - true - - true - - - ФормаНайтиExtendedTooltip - 29 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.Find - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - ФормаОтменитьПоиск - 18 - true - true - - true - - - ФормаОтменитьПоискExtendedTooltip - 30 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.CancelSearch - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - true - true - - true - - - <key>ru</key> - <value>Форма группа 1</value> - - - ФормаГруппа1ExtendedTooltip - 28 - Label - true - true - - Left - - - - - - ФормаГруппа2 - 16 - - ФормаОбновить - 21 - true - true - - true - - - ФормаОбновитьExtendedTooltip - 32 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.Refresh - Normal - Auto - true - true - UserCmds - Auto - - - ФормаНастройкаСписка - 19 - true - true - - true - - - ФормаНастройкаСпискаExtendedTooltip - 33 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.ChangeHistory - Normal - Auto - true - true - UserCmds - Auto - - - ФормаВывестиСписок - 20 - true - true - - true - - - ФормаВывестиСписокExtendedTooltip - 34 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.OutputList - Normal - Auto - true - true - UserCmds - Auto - - - ФормаКопироватьВБуферОбмена - 22 - true - true - - true - - - ФормаКопироватьВБуферОбменаExtendedTooltip - 35 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.CopyToClipboard - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - true - true - - true - - - <key>ru</key> - <value>Форма группа 2</value> - - - ФормаГруппа2ExtendedTooltip - 31 - Label - true - true - - Left - - - + InCommandBar Left - true BeforeDeleteRow diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo index ce9f2180c..bcb682a3e 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo @@ -423,6 +423,24 @@ Use + + ИмяМенеджераРегистрации + + ru + Имя менеджера регистрации + + + String + + 150 + + + + + Use + Use + + ИспользоватьФильтрВыборочнойРегистрацииОбъектов diff --git a/SSL/src/InformationRegisters/ПрогрессОбновления/RecordSetModule.bsl b/SSL/src/InformationRegisters/ПрогрессОбновления/RecordSetModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/InformationRegisters/ПрогрессОбновления/ПрогрессОбновления.mdo b/SSL/src/InformationRegisters/ПрогрессОбновления/ПрогрессОбновления.mdo new file mode 100644 index 000000000..5b73f2208 --- /dev/null +++ b/SSL/src/InformationRegisters/ПрогрессОбновления/ПрогрессОбновления.mdo @@ -0,0 +1,124 @@ + + + + + + + + + + + + ПрогрессОбновления + + ru + Прогресс обновления + + true + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + ОбъектовОбработано + + ru + Объектов обработано + + + Number + + 10 + + + + + Use + Use + + + + ИмяОбработчика + + ru + Имя обработчика + + + String + + 255 + + + + + Index + Use + Use + + true + + + ИнтервалЧас + + ru + Интервал час + + + Date + + + + + Index + Use + Use + + true + + + КлючЗаписи + + ru + Ключ записи + + + UUID + + + + Use + + true + + diff --git a/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Form.form b/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Form.form index 6ab8cc029..d9a9092d8 100644 --- a/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Form.form +++ b/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Form.form @@ -363,7 +363,7 @@ true - CommonPicture.Информация + StdPicture.Information @@ -561,7 +561,7 @@ true - CommonPicture.Информация + StdPicture.Information diff --git a/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl index 392f0b237..6bd06f5c5 100644 --- a/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl @@ -163,12 +163,8 @@ Если Менеджер.Выбран() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Дублирование разрешений по ключевым полям: - |- ТипПрограммногоМодуля: %1 - |- ИдентификаторПрограммногоМодуля: %2 - |- ТипВладельца: %3 - |- ИдентификаторВладельца: %4 - |- КлючРазрешения: %5.'"), + НСтр("ru = 'Добавляемое разрешение уже существует: + |%1, %2, %3, %4, %5.'"), Строка(ТипПрограммногоМодуля), Строка(ИдентификаторПрограммногоМодуля), Строка(ТипВладельца), @@ -221,11 +217,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Позиция разрешений по ключам: - |- ТипПрограммногоМодуля: %1 - |- ИдентификаторПрограммногоМодуля: %2 - |- ТипВладельца: %3 - |- ИдентификаторВладельца: %4 - |- КлючРазрешения: %5.'"), + |%1, %2, %3, %4, %5.'"), Строка(ТипПрограммногоМодуля), Строка(ИдентификаторПрограммногоМодуля), Строка(ТипВладельца), @@ -240,11 +232,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Попытка удаления несуществующего разрешения: - |- ТипПрограммногоМодуля: %1 - |- ИдентификаторПрограммногоМодуля: %2 - |- ТипВладельца: %3 - |- ИдентификаторВладельца: %4 - |- КлючРазрешения: %5.'"), + |%1, %2, %3, %4, %5.'"), Строка(ТипПрограммногоМодуля), Строка(ИдентификаторПрограммногоМодуля), Строка(ТипВладельца), diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Form.form index 6e7cc2074..b06720a98 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Form.form +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Form.form @@ -10,6 +10,40 @@ Отправка 24 + + АдминистративнаяОшибкаПриложения + 45 + true + true + + true + + + АдминистративнаяОшибкаПриложения + + Right + + АдминистративнаяОшибкаПриложенияРасширеннаяПодсказка + 47 + Label + true + true + + Left + + + + АдминистративнаяОшибкаПриложенияКонтекстноеМеню + 46 + true + + CheckBoxField + Enter + true + Left + true + + ОшибкаПроверкиПередОтправкойXTDO 19 @@ -593,7 +627,7 @@ НепринятыйПоДатеЗапретаОбъектНеСуществуетВБазе <key>ru</key> - <value>Непринятые по дате запрета (объект не существует)</value> + <value>Непринятый по дате запрета (объект не существует)</value> 4 @@ -702,6 +736,23 @@ true + + АдминистративнаяОшибкаПриложения + + <key>ru</key> + <value>Административная ошибка приложения</value> + + 11 + + Boolean + + + true + + + true + + ОК diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Module.bsl index 1dd94aefa..2f16a1560 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Module.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ОтборПредупрежденийПоТипам/Module.bsl @@ -50,6 +50,7 @@ Процедура ОК(Команда) СоответствиеРеквизитов = Новый Соответствие; + СоответствиеРеквизитов.Вставить("АдминистративнаяОшибкаПриложения", ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения")); СоответствиеРеквизитов.Вставить("НезаполненныеРеквизиты", ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты")); СоответствиеРеквизитов.Вставить("НепроведенныйДокумент", ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.НепроведенныйДокумент")); СоответствиеРеквизитов.Вставить("ОшибкаПроверкиПередОтправкойXTDO", ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта")); @@ -83,6 +84,7 @@ &НаКлиенте Процедура Сбросить(Команда) + АдминистративнаяОшибкаПриложения = Ложь; НезаполненныеРеквизиты = Ложь; НепроведенныйДокумент = Ложь; ОшибкаПроверкиПередОтправкойXTDO = Ложь; @@ -109,6 +111,7 @@ КонецЕсли; СоответствиеРеквизитов = Новый Соответствие; + СоответствиеРеквизитов.Вставить(Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения, "АдминистративнаяОшибкаПриложения"); СоответствиеРеквизитов.Вставить(Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты, "НезаполненныеРеквизиты"); СоответствиеРеквизитов.Вставить(Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент, "НепроведенныйДокумент"); СоответствиеРеквизитов.Вставить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта, "ОшибкаПроверкиПередОтправкойXTDO"); diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Form.form new file mode 100644 index 000000000..2c270de52 --- /dev/null +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Form.form @@ -0,0 +1,536 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:Decoration"> + <name>ДекорацияКартинка</name> + <id>1</id> + <title> + <key>ru</key> + <value>Декорация картинка</value> + + true + true + + true + + ShowRight + + ДекорацияКартинкаРасширеннаяПодсказка + 3 + + <key>ru</key> + <value>Выполнение синхронизации не возможно. Ошибки такого характера носят технический характер, поэтому для решения проблемы просьба обратиться к администратору информационной базы или в службу поддержки.</value> + + Label + true + + Left + + + + ДекорацияКартинкаКонтекстноеМеню + 2 + true + + true + true + + + CommonPicture.Ошибка32 + + AsFileRef + + + + ДатаВозникновения + 23 + true + true + + true + + + ДатаВозникновения + + + ДатаВозникновенияРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + + ДатаВозникновенияКонтекстноеМеню + 24 + true + + LabelField + Enter + true + Left + true + + 40 + true + true + + ru + ДЛФ=DDT + + + + + УзелИнформационнойБазы + 13 + true + true + + true + + + УзелИнформационнойБазы + + + УзелИнформационнойБазыРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + УзелИнформационнойБазыКонтекстноеМеню + 14 + true + + LabelField + Enter + true + Left + true + + true + true + true + + + + Описание + 4 + true + true + + true + + + Описание + + + ОписаниеРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 5 + true + + InputField + true + Enter + true + Left + true + + 9 + true + true + true + true + true + true + Normal + + + + КомментарийПредупреждения + 20 + true + true + + true + + + КомментарийПредупреждения + + + OnChange + КомментарийПредупрежденияПриИзменении + + + КомментарийПредупрежденияРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + КомментарийПредупрежденияКонтекстноеМеню + 21 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + + ГруппаСкрытьПредупреждение + 26 + + СкрытьПредупреждение + 28 + true + true + + true + + + СкрытьПредупреждение + + Right + Button + + OnChange + СкрытьПредупреждениеПриИзменении + + + СкрытьПредупреждениеРасширеннаяПодсказка + 30 + + <key>ru</key> + <value>Пользователь может самостоятельно определить, является ли текущее предупреждение проблемой. Если предупреждение более неактуально, можно выполнить команду "Скрыть из списка". После нажатия и сохранения предупреждение будет скрыто из общего списка.</value> + + Label + true + true + + Left + + + + СкрытьПредупреждениеКонтекстноеМеню + 29 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Скрыть предупреждение</value> + + true + + ГруппаСкрытьПредупреждениеРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + Auto + WeakSeparation + true + true + Auto + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаОК + 16 + true + true + + true + + + ФормаОКРасширеннаяПодсказка + 17 + Label + true + true + + Left + + + Form.Command.ОК + Auto + true + true + true + UserCmds + Auto + + + ФормаОтмена + 18 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 19 + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Normal + Auto + true + true + UserCmds + Auto + + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Описание + + <key>ru</key> + <value>Описание</value> + + 1 + + String + + + + true + + + true + + + + СкрытьПредупреждение + + <key>ru</key> + <value>Скрыть предупреждение</value> + + 2 + + Boolean + + + true + + + true + + + + УзелИнформационнойБазы + + <key>ru</key> + <value>Синхронизация</value> + + 4 + + ExchangePlanRef + + + true + + + true + + + + ТипПредупреждения + 5 + + EnumRef.ТипыПроблемОбменаДанными + + + true + + + true + + + + ТребуетсяОбновлениеПризнакаСкрытьИзСписка + 6 + + Boolean + + + true + + + true + + + + КомментарийПредупреждения + + <key>ru</key> + <value>Комментарий администратора к предупреждению синхронизации</value> + + 7 + + String + + 1000 + + + + true + + + true + + + + ДатаВозникновения + + <key>ru</key> + <value>Дата возникновения</value> + + 8 + + Date + + + + true + + + true + + + + КлючУникальностиЗаписиРегистраСведений + 9 + + String + + 32 + + + + true + + + true + + + + ТребуетсяОбновлениеКомментария + 11 + + Boolean + + + true + + + true + + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + Auto + Auto + + + + + + diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Module.bsl new file mode 100644 index 000000000..cbb38aa50 --- /dev/null +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупреждениеАдминистрированияПриложения/Module.bsl @@ -0,0 +1,134 @@ + +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2021, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Параметры.Свойство("Описание", Описание); + Параметры.Свойство("ТипПредупреждения", ТипПредупреждения); + Параметры.Свойство("УзелИнформационнойБазы", УзелИнформационнойБазы); + Параметры.Свойство("СкрытьПредупреждение", СкрытьПредупреждение); + Параметры.Свойство("ДатаВозникновения", ДатаВозникновения); + Параметры.Свойство("КлючУникальности", КлючУникальностиЗаписиРегистраСведений); + Параметры.Свойство("КомментарийПредупреждения", КомментарийПредупреждения); + + ТребуетсяОбновлениеПризнакаСкрытьИзСписка = Ложь; + ТребуетсяОбновлениеКомментария = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ИзменитьКартинкуДекорации() + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СкрытьПредупреждениеПриИзменении(Элемент) + + ТребуетсяОбновлениеПризнакаСкрытьИзСписка = Истина; + + Если СкрытьПредупреждение Тогда + + Элементы.ДекорацияКартинка.Картинка = БиблиотекаКартинок.Информация32; + + Иначе + + Элементы.ДекорацияКартинка.Картинка = БиблиотекаКартинок.Ошибка32; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарийПредупрежденияПриИзменении(Элемент) + + ТребуетсяОбновлениеКомментария = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ПередЗакрытиемНаСервере(); + + Если ТребуетсяОбновлениеПризнакаСкрытьИзСписка + ИЛИ ТребуетсяОбновлениеКомментария Тогда + + Закрыть(Новый Структура("ТребуетсяОбновлениеСписка", Истина)); + + Иначе + + Закрыть(); + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ИзменитьКартинкуДекорации() + + Если СкрытьПредупреждение Тогда + + Элементы.ДекорацияКартинка.Картинка = БиблиотекаКартинок.Информация32; + + Иначе + + Элементы.ДекорацияКартинка.Картинка = БиблиотекаКартинок.Ошибка32; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПередЗакрытиемНаСервере() + + Если НЕ ТребуетсяОбновлениеПризнакаСкрытьИзСписка + И НЕ ТребуетсяОбновлениеКомментария Тогда + + Возврат; + + КонецЕсли; + + МенеджерЗаписи = РегистрыСведений.РезультатыОбменаДанными.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.ТипПроблемы = ТипПредупреждения; + МенеджерЗаписи.УзелИнформационнойБазы = УзелИнформационнойБазы; + МенеджерЗаписи.КлючУникальности = КлючУникальностиЗаписиРегистраСведений; + + МенеджерЗаписи.Прочитать(); // читаем для сохранения реквизитов, которые не передаем на форму + Если НЕ МенеджерЗаписи.Выбран() Тогда + + // Сценарий: открыли карточку предупреждения, а параллельно поправили проблему + Возврат; + + КонецЕсли; + + МенеджерЗаписи.ДатаВозникновения = ДатаВозникновения; + МенеджерЗаписи.Комментарий = КомментарийПредупреждения; + МенеджерЗаписи.Пропущена = СкрытьПредупреждение; + МенеджерЗаписи.Записать(Истина); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Form.form index 81ffab029..4845aa81f 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Form.form +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Form.form @@ -1893,7 +1893,8 @@ РегистрСведенийРезультатыОбменаДаннымиПереопределяемый.ТипПроблемы = ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта) ТОГДА &ПроверкаПередОтправкой КОГДА - РегистрСведенийРезультатыОбменаДаннымиПереопределяемый.ТипПроблемы = ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных) + РегистрСведенийРезультатыОбменаДаннымиПереопределяемый.ТипПроблемы = ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения) + ИЛИ РегистрСведенийРезультатыОбменаДаннымиПереопределяемый.ТипПроблемы = ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных) ТОГДА &ТехническаяОшибкаОтправка КОГДА РегистрСведенийРезультатыОбменаДаннымиПереопределяемый.ТипПроблемы = ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных) diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Module.bsl index 6ee44c72d..cad8416f0 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Module.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/ПредупрежденияСинхронизаций/Module.bsl @@ -491,7 +491,11 @@ ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияКарточкиСПредупреждением", ЭтотОбъект); - Если ТипПредупреждения = ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты") Тогда + Если ТипПредупреждения = ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения") Тогда + + ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.ПредупреждениеАдминистрированияПриложения", ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения); + + ИначеЕсли ТипПредупреждения = ПредопределенноеЗначение("Перечисление.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты") Тогда ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.ПредупреждениеНезаполненногоРеквизита", ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения); @@ -648,6 +652,7 @@ // Блокирующие предупреждения красным ТипыКритичныхПредупреждений = Новый СписокЗначений; + ТипыКритичныхПредупреждений.Добавить(Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения); ТипыКритичныхПредупреждений.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных); ТипыКритичныхПредупреждений.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриПолученииДанных); diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Form.form index ebb6369f1..310f4eca1 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Form.form +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Form.form @@ -29,6 +29,8 @@ Label true true + true + true Left @@ -47,36 +49,6 @@ AsFileRef - - ДекорацияОтступ - 36 - true - true - - true - - - ДекорацияОтступРасширеннаяПодсказка - 38 - Label - true - true - - Left - - - - ДекорацияОтступКонтекстноеМеню - 37 - true - - Label - true - true - - Left - - Группа1 3 diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Module.bsl index a0041f27e..171165102 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Module.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/УдалениеУстаревшихПредупреждений/Module.bsl @@ -308,6 +308,7 @@ ОтборТипыПредупрежденийВерсий = Новый Массив; ЗначенияОбменов = Новый Массив; + ЗначенияОбменов.Добавить(Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения); ЗначенияОбменов.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта); ЗначенияОбменов.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных); ЗначенияОбменов.Добавить(Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент); diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl index b2e1a3944..e5e72014d 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl @@ -173,6 +173,28 @@ КонецПроцедуры +Процедура ЗарегистрироватьАдминистративнуюОшибку(УзелИнформационнойБазы, ОписаниеПредупреждения) Экспорт + + // У административных ошибок отсутствуют объекты данных, так как ошибки, как правило связаны, с информационной базой + // или областью данных. Например, область данных отмечена как Удаленная. + + ТипПроблемы = Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения; + + НаборЗаписейПредупреждения = СоздатьНаборЗаписей(); + НаборЗаписейПредупреждения.Отбор.ТипПроблемы.Установить(ТипПроблемы); + НаборЗаписейПредупреждения.Отбор.УзелИнформационнойБазы.Установить(УзелИнформационнойБазы); + + ЗаписьНабора = НаборЗаписейПредупреждения.Добавить(); + ЗаписьНабора.ТипПроблемы = ТипПроблемы; + ЗаписьНабора.УзелИнформационнойБазы = УзелИнформационнойБазы; + ЗаписьНабора.ДатаВозникновения = ТекущаяДатаСеанса(); + ЗаписьНабора.Причина = СокрЛП(ОписаниеПредупреждения); + ЗаписьНабора.Пропущена = Ложь; + + НаборЗаписейПредупреждения.Записать(Истина); + +КонецПроцедуры + Процедура ДобавитьЗаписьОРезультатахОбмена(ПараметрыЗаписи) Экспорт Перем ПроблемныйОбъект, УзелИнформационнойБазы, Причина, ТипПроблемы, МетаданныеОбъекта, ИдентификаторОбъектаМетаданных, Ссылка, ЗначенияОтборовНезависимогоРегистра; @@ -290,6 +312,7 @@ Процедура ОчиститьПроблемыПриОтправке(УзлыИнформационнойБазы = Неопределено) Экспорт ТипыПроблем = Новый Массив; + ТипыПроблем.Добавить(Перечисления.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения); ТипыПроблем.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта); ТипыПроблем.Добавить(Перечисления.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных); @@ -512,7 +535,8 @@ |ГДЕ | НЕ РезультатыОбменаДанными.Пропущена | И РезультатыОбменаДанными.УзелИнформационнойБазы В (&УзлыСинхронизации) - | И РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), + | И РезультатыОбменаДанными.ТипПроблемы В (ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.АдминистративнаяОшибкаПриложения), + | ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаВыполненияКодаОбработчиковПриОтправкеДанных), | ЗНАЧЕНИЕ(Перечисление.ТипыПроблемОбменаДанными.ОшибкаПроверкиСконвертированногоОбъекта)); | |////////////////////////////////////////////////////////////// @@ -718,15 +742,23 @@ КонецПроцедуры -Процедура ПрогрессУдалениеПредупрежденийСинхронизации(Знач ТекущийШаг, Максимум) +Процедура ПрогрессУдалениеПредупрежденийСинхронизации(Знач ТекущийШаг, Максимум, ИтераторВыборки = 0) ТекущийШаг = ?(ТекущийШаг = 0, 1, ТекущийШаг); - Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2'", ОбщегоНазначения.КодОсновногоЯзыка()); - ТекстПрогресса = СтрШаблон(Шаблон, ТекущийШаг, Максимум); + Если ИтераторВыборки = 0 Тогда + + Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2'", ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстПрогресса = СтрШаблон(Шаблон, ТекущийШаг, Максимум); + + Иначе + + Шаблон = НСтр("ru = 'Выполнено итераций %1 из %2 (%3)'", ОбщегоНазначения.КодОсновногоЯзыка()); + ТекстПрогресса = СтрШаблон(Шаблон, ТекущийШаг, Максимум, ИтераторВыборки); + + КонецЕсли; ПроцентВыполнения = ОКР(ТекущийШаг * 100 / Максимум, 0); - ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, ТекстПрогресса); КонецПроцедуры @@ -831,7 +863,7 @@ КонецЕсли; - ПрогрессУдалениеПредупрежденийСинхронизации(ПараметрыУдаления.КоличествоОперацийТекущийШаг, ПараметрыУдаления.КоличествоОперацийМаксимум); + ПрогрессУдалениеПредупрежденийСинхронизации(ПараметрыУдаления.КоличествоОперацийТекущийШаг, ПараметрыУдаления.КоличествоОперацийМаксимум, ИтераторВыборки); ЗафиксироватьТранзакцию(); diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo b/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo index e9261c218..4a675d228 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo @@ -339,17 +339,12 @@ true - - Форма + + ОбработкаПредупрежденийКоллизии ru - Форма + Обработка предупреждений коллизии - - - ru - - PersonalComputer MobileDevice @@ -362,15 +357,6 @@ PersonalComputer MobileDevice - - ОбработкаПредупрежденийКоллизии - - ru - Обработка предупреждений коллизии - - PersonalComputer - MobileDevice - ОбработкаПредупрежденийПроведения @@ -398,6 +384,24 @@ PersonalComputer MobileDevice + + ПредупреждениеАдминистрированияПриложения + + ru + Предупреждение администрирования приложения + + PersonalComputer + MobileDevice + + + ПредупреждениеКонвертацииОбъектаПриОтправке + + ru + Предупреждение конвертации объекта при отправке + + PersonalComputer + MobileDevice + ПредупреждениеНезаполненногоРеквизита @@ -416,15 +420,6 @@ PersonalComputer MobileDevice - - ПредупрежденияОбработчиковОтправкиПолучения - - ru - Предупреждения обработчиков отправки/получения - - PersonalComputer - MobileDevice - ПредупреждениеОКоллизии @@ -443,11 +438,11 @@ PersonalComputer MobileDevice - - ПредупреждениеКонвертацииОбъектаПриОтправке + + ПредупрежденияОбработчиковОтправкиПолучения ru - Предупреждение конвертации объекта при отправке + Предупреждения обработчиков отправки/получения PersonalComputer MobileDevice @@ -470,4 +465,18 @@ PersonalComputer MobileDevice + + Форма + + ru + Форма + + + + ru + + + PersonalComputer + MobileDevice + diff --git a/SSL/src/InformationRegisters/РезультатыПроверкиУчета/ManagerModule.bsl b/SSL/src/InformationRegisters/РезультатыПроверкиУчета/ManagerModule.bsl index e6c178399..fd0f2d659 100644 --- a/SSL/src/InformationRegisters/РезультатыПроверкиУчета/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/РезультатыПроверкиУчета/ManagerModule.bsl @@ -82,7 +82,6 @@ МетаданныеРегистра = Метаданные.РегистрыСведений.РезультатыПроверкиУчета; ПолноеИмяРегистра = МетаданныеРегистра.ПолноеИмя(); - ПредставлениеРегистра = МетаданныеРегистра.Представление(); ПредставлениеОтбора = НСтр("ru = 'Проблемный объект = ""%1"" |Правило проверки = ""%2"" |Вид проверки = ""%3"" @@ -138,9 +137,7 @@ КонецЦикла; ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); - ОбъектовОбработано = ОбъектовОбработано + 1; - ЗафиксироватьТранзакцию(); Исключение @@ -148,11 +145,9 @@ ОтменитьТранзакцию(); ПроблемныхОбъектов = ПроблемныхОбъектов + 1; - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать набор записей регистра ""%1"" с отбором %2 по причине: - |%3'"), ПредставлениеРегистра, ПредставлениеОтбора, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - + НСтр("ru = 'Не удалось обработать результаты проверки ведения учета с отбором %2 по причине: + |%3'"), ПредставлениеОтбора, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, МетаданныеРегистра, , ТекстСообщения); @@ -166,15 +161,15 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре РегистрыСведений.РезультатыПроверкиУчета.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые записи проблемных объектов (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые результаты проверки ведения учета (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе - ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - , , + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, Метаданные.РегистрыСведений.РезультатыПроверкиУчета, , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура РегистрыСведений.НаличиеФайлов.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию проблемных объектов: %1'"), - ОбъектовОбработано)); + НСтр("ru = 'Обработана очередная порция результатов проверки ведения учета: %1'"), + ОбъектовОбработано)); КонецЕсли; Параметры.ОбработкаЗавершена = ОбработкаЗавершена; diff --git a/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl b/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl index 9d6b753f4..d238ded44 100644 --- a/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl @@ -97,7 +97,7 @@ ОтменитьТранзакцию(); ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать тип хранения файла: %1 по причине: + НСтр("ru = 'Не удалось обработать сведения о файле %1 по причине: |%2'"), Строка.Файл, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, @@ -110,14 +110,14 @@ Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедуре РегистрыСведений.СведенияОФайлах.ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые файлы (пропущены): %1'"), + НСтр("ru = 'Не удалось обработать некоторые сведения о файлах (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, - Справочники.Файлы,, + Метаданные.Справочники.Файлы,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Процедура РегистрыСведений.СведенияОФайлах.ОбработатьДанныеДляПереходаНаНовуюВерсию обработала очередную порцию файлов: %1'"), + НСтр("ru = 'Обработана очередная порция сведений о файлах: %1'"), ОбъектовОбработано)); КонецЕсли; diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form index 650e57ca0..77dab5057 100644 --- a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form @@ -981,6 +981,7 @@ true InputField + true Enter true Left @@ -1022,6 +1023,7 @@ true InputField + true Enter true Left diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl index 4463ec706..edba6e53d 100644 --- a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl @@ -16,8 +16,8 @@ ЗаполнитьСписокПечатныхФормПоСсылке(); - Если Параметры.Свойство("Ссылка") Тогда - Запись.Владелец = Параметры.Ссылка; + Если Параметры.Свойство("ДокументСсылка") Тогда + Запись.Владелец = Параметры.ДокументСсылка; ФильтрПечатныхФорм = "Все"; Элементы.НадписьПредупреждение.Заголовок = НСтр("ru='Состояние оригинала документа будет установлено по печатным формам'"); ИначеЕсли КомплектПечатныхФорм.Количество()= 0 Тогда @@ -341,13 +341,14 @@ МодульФизическиеЛицаКлиентСервер = Неопределено; // Инициализация переменной для международной версии Для Каждого Сотрудник Из Запись.Владелец[ТабличнаяЧасть] Цикл - ФИО = Сотрудник.Сотрудник.Наименование; + СотрудникИзТЧ = Сотрудник.Сотрудник; // СправочникСсылка - + ФИО = СотрудникИзТЧ.Наименование; // Локализация МодульФизическиеЛицаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ФизическиеЛицаКлиентСервер"); Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда - ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование); + ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(СотрудникИзТЧ.Наименование); Иначе - ФИО = Сотрудник.Сотрудник.Наименование; + ФИО = СотрудникИзТЧ.Наименование; КонецЕсли; // Конец Локализация Для Каждого ТекСтрока Из СписокПечатныхФорм Цикл @@ -357,15 +358,15 @@ НоваяСтрока.Представление = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(НСтр("ru='[Представление] [ФИО]'"), Значения); НоваяСтрока.Картинка = 1; НоваяСтрока.ОригиналПолученКартинка = 0; - НоваяСтрока.Сотрудник = Сотрудник.Сотрудник; + НоваяСтрока.Сотрудник = СотрудникИзТЧ; КонецЦикла; КонецЦикла; Если ТаблицаКоманд.Количество() > 0 Тогда Для Каждого Сотрудник Из Запись.Владелец[ТабличнаяЧасть] Цикл Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда - ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование); + ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(СотрудникИзТЧ.Наименование); Иначе - ФИО = Сотрудник.Сотрудник.Наименование; + ФИО = СотрудникИзТЧ.Наименование; КонецЕсли; Для Каждого ТекСтрока Из ТаблицаКоманд Цикл Значения = Новый Структура("Представление, ФИО", ТекСтрока.Представление,ФИО); @@ -375,7 +376,7 @@ НоваяСтрока.Представление = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(НСтр("ru='[Представление] [ФИО]'"), Значения); НоваяСтрока.Картинка = 1; НоваяСтрока.ОригиналПолученКартинка = 0; - НоваяСтрока.Сотрудник = Сотрудник.Сотрудник; + НоваяСтрока.Сотрудник = СотрудникИзТЧ; КонецЕсли; КонецЦикла; КонецЦикла; diff --git a/SSL/src/InformationRegisters/СтатистикаКонфигурации/ManagerModule.bsl b/SSL/src/InformationRegisters/СтатистикаКонфигурации/ManagerModule.bsl index c77d60b9c..8595974d5 100644 --- a/SSL/src/InformationRegisters/СтатистикаКонфигурации/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СтатистикаКонфигурации/ManagerModule.bsl @@ -389,20 +389,19 @@ Попытка Если БазоваяФункциональностьВМоделиСервисаСуществует Тогда - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Истина, Выборка.ОбластьДанных); + МодульРаботаВМоделиСервиса.ВойтиВОбластьДанных(Выборка.ОбластьДанных); КонецЕсли; Исключение Инфо = ИнформацияОбОшибке(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'СтатистикаКонфигурации'", ОбщегоНазначения.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, - ,, + ЗаписьЖурналаРегистрации(НСтр("ru = 'Центр мониторинга'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,,, НСтр("ru = 'Не удалось установить разделение сеанса. Область данных'") + " = " + Формат(Выборка.ОбластьДанных, "ЧГ=0") - +Символы.ПС + ПодробноеПредставлениеОшибки(Инфо)); + + Символы.ПС + ПодробноеПредставлениеОшибки(Инфо)); Если БазоваяФункциональностьВМоделиСервисаСуществует Тогда - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); КонецЕсли; Продолжить; @@ -412,7 +411,7 @@ Записать(СтатистикаКонфигурации, ОбластьДанныхСсылка); Если БазоваяФункциональностьВМоделиСервисаСуществует Тогда - МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Ложь); + МодульРаботаВМоделиСервиса.ВыйтиИзОбластиДанных(); КонецЕсли; КонецЕсли; diff --git a/SSL/src/InformationRegisters/ЭлектронныеПодписи/ManagerModule.bsl b/SSL/src/InformationRegisters/ЭлектронныеПодписи/ManagerModule.bsl index 08027c375..af80e8cba 100644 --- a/SSL/src/InformationRegisters/ЭлектронныеПодписи/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ЭлектронныеПодписи/ManagerModule.bsl @@ -79,10 +79,8 @@ Выборка.ПодписанныйОбъект, Выборка.ПорядковыйНомер); КлючЗаписи = РегистрыСведений.ЭлектронныеПодписи.СоздатьКлючЗаписи(СвойстваКлюча); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось обработать запись регистра - |%1 - |по причине: - |%2'"), + НСтр("ru = 'Не удалось обработать запись регистра %1 по причине: + |%2'"), ПолучитьНавигационнуюСсылку(КлючЗаписи), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); ЗаписьЖурналаРегистрации( @@ -97,7 +95,7 @@ ОбработкаЗавершена = Ложь; КонецЕсли; - ИмяПроцедуры = ПолноеИмяРегистра + ".ОбработатьДанныеДляПереходаНаНовуюВерсию"; + ИмяПроцедуры = ПолноеИмяРегистра + "." + "ОбработатьДанныеДляПереходаНаНовуюВерсию"; Если Обработано = 0 И Проблемных <> 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -109,7 +107,7 @@ ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Информация, , , + УровеньЖурналаРегистрации.Информация, МетаданныеРегистра, , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Процедура %1 обработала очередную порцию записей: %2'"), ИмяПроцедуры, diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx index bf728979e..92421e6c1 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx +++ b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx @@ -2921,6 +2921,18 @@ #000000 + + + + auto + auto + + WithoutBorder + + auto + + Show + UseCoordinates UseCoordinates UseCoordinates diff --git a/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl b/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl index 9aeb0f9c5..2a448ea4c 100644 --- a/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl +++ b/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl @@ -19,18 +19,20 @@ Возврат; КонецЕсли; - Если Не ПравоДоступа("Просмотр", Метаданные.Отчеты["АнализПравДоступа"]) Тогда + Если Не ПравоДоступа("Просмотр", Метаданные.Отчеты.АнализПравДоступа) + Или СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда Возврат; КонецЕсли; Команда = КомандыОтчетов.Добавить(); Команда.Представление = НСтр("ru = 'Права пользователей'"); Команда.МножественныйВыбор = Истина; - Команда.Менеджер= "Отчет.АнализПравДоступа"; - + Команда.Менеджер = "Отчет.АнализПравДоступа"; + Если Параметры.ИмяФормы = "Справочник.Пользователи.Форма.ФормаСписка" Тогда Команда.Представление = НСтр("ru = 'Права пользователя'"); Команда.КлючВарианта = "ПраваПользователейНаТаблицы"; + ИначеЕсли Параметры.ИмяФормы = "Справочник.Пользователи.Форма.ФормаЭлемента" Тогда Команда.Представление = НСтр("ru = 'Права пользователя'"); Команда.КлючВарианта = "ПраваПользователяНаТаблицы"; @@ -143,8 +145,389 @@ КонецПроцедуры +// Возвращает таблицу, содержащую вид ограничений доступа +// по каждому праву объектов метаданных. +// Если записи по праву нет, значит ограничений по праву нет. +// +// Параметры: +// ДляВнешнихПользователей - Булево - когда Истина вернуть ограничения для внешних пользователей. +// Учитывается только для универсального ограничения. +// +// ВидДоступаДляТаблицСОтключеннымИспользованием - Булево - если Истина, тогда для таблиц +// с отключенным использованием (только универсальное ограничение) добавить +// вид доступа "Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен". +// Учитывается только для универсального ограничения. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * ДляВнешнихПользователей - Булево - если Ложь, тогда ограничение для пользователей, +// если Истина, тогда для внешних пользователей. +// Колонка присутствует только для универсального ограничения. +// * Таблица - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - идентификатор таблицы. +// * ВидДоступа - ЛюбаяСсылка - пустая ссылка основного типа значений вида доступа. +// * Представление - Строка - представление вида доступа. +// * Право - Строка - "Чтение", "Изменение". +// +Функция ВидыОграниченийПрав(ДляВнешнихПользователей = Неопределено, + ВидДоступаДляТаблицСОтключеннымИспользованием = Ложь) Экспорт + + УниверсальноеОграничение = + УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина, Истина); + + Если Не УниверсальноеОграничение Тогда + Кэш = УправлениеДоступомСлужебныйПовтИсп.ВидыОграниченийПравОбъектовМетаданных(); + + Если ТекущаяДатаСеанса() < Кэш.ДатаОбновления + 60*30 Тогда + Возврат Кэш.Таблица; + КонецЕсли; + КонецЕсли; + + ТипыЗначенийВидовДоступа = + УправлениеДоступомСлужебныйПовтИсп.ТипыЗначенийВидовДоступаИВладельцевНастроекПрав().Получить(); // ТаблицаЗначений + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПостоянныеВидыОграничений", + УправлениеДоступомСлужебныйПовтИсп.ПостоянныеВидыОграниченийПравОбъектовМетаданных()); + + Если УниверсальноеОграничение Тогда + Запрос.Текст = + "ВЫБРАТЬ + | ПостоянныеВидыОграничений.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ПостоянныеВидыОграничений.ПолноеИмя КАК ПолноеИмя, + | ПостоянныеВидыОграничений.Таблица КАК Таблица, + | ПостоянныеВидыОграничений.Право КАК Право, + | ПостоянныеВидыОграничений.ВидДоступа КАК ВидДоступа + |ПОМЕСТИТЬ ПостоянныеВидыОграничений + |ИЗ + | &ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + |ГДЕ + | &ОтборДляВнешнихПользователей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВидыДоступаСПредставлением.ВидДоступа КАК ВидДоступа, + | ВидыДоступаСПредставлением.Представление КАК Представление + |ПОМЕСТИТЬ ВидыДоступаСПредставлением + |ИЗ + | &ВидыДоступаСПредставлением КАК ВидыДоступаСПредставлением + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ТаблицыСОтключеннымОграничением.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ТаблицыСОтключеннымОграничением.ПолноеИмя КАК ПолноеИмя, + | ТаблицыСОтключеннымОграничением.Таблица КАК Таблица, + | ТаблицыСОтключеннымОграничением.ВидДоступа КАК ВидДоступа, + | ТаблицыСОтключеннымОграничением.Представление КАК Представление + |ПОМЕСТИТЬ ТаблицыСОтключеннымОграничением + |ИЗ + | &ТаблицыСОтключеннымОграничением КАК ТаблицыСОтключеннымОграничением + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ВидыОграниченийПрав.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.Право КАК Право, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.Представление КАК Представление + |ИЗ + | (ВЫБРАТЬ + | ПостоянныеВидыОграничений.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ПостоянныеВидыОграничений.Таблица КАК Таблица, + | ВЫБОР + | КОГДА НЕ ТаблицыСОтключеннымОграничением.ПолноеИмя ЕСТЬ NULL + | ТОГДА """" + | ИНАЧЕ ПостоянныеВидыОграничений.Право + | КОНЕЦ КАК Право, + | ВЫБОР + | КОГДА НЕ ТаблицыСОтключеннымОграничением.ПолноеИмя ЕСТЬ NULL + | ТОГДА ТаблицыСОтключеннымОграничением.ВидДоступа + | ИНАЧЕ ПостоянныеВидыОграничений.ВидДоступа + | КОНЕЦ КАК ВидДоступа, + | ВЫБОР + | КОГДА НЕ ТаблицыСОтключеннымОграничением.ПолноеИмя ЕСТЬ NULL + | ТОГДА ТаблицыСОтключеннымОграничением.Представление + | ИНАЧЕ ЕСТЬNULL(ВидыДоступаСПредставлением.Представление, &ПредставлениеНеизвестногоВидаДоступа) + | КОНЕЦ КАК Представление + | ИЗ + | ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицыСОтключеннымОграничением КАК ТаблицыСОтключеннымОграничением + | ПО (ТаблицыСОтключеннымОграничением.ДляВнешнихПользователей = ПостоянныеВидыОграничений.ДляВнешнихПользователей) + | И (ТаблицыСОтключеннымОграничением.ПолноеИмя = ПостоянныеВидыОграничений.ПолноеИмя) + | ЛЕВОЕ СОЕДИНЕНИЕ ВидыДоступаСПредставлением КАК ВидыДоступаСПредставлением + | ПО (ВидыДоступаСПредставлением.ВидДоступа = ПостоянныеВидыОграничений.ВидДоступа) + | ГДЕ + | ПостоянныеВидыОграничений.ВидДоступа <> НЕОПРЕДЕЛЕНО + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ + | ТаблицыСОтключеннымОграничением.ДляВнешнихПользователей, + | ТаблицыСОтключеннымОграничением.Таблица, + | """", + | ТаблицыСОтключеннымОграничением.ВидДоступа, + | ТаблицыСОтключеннымОграничением.Представление + | ИЗ + | ТаблицыСОтключеннымОграничением КАК ТаблицыСОтключеннымОграничением + | ЛЕВОЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + | ПО (ПостоянныеВидыОграничений.ДляВнешнихПользователей = ТаблицыСОтключеннымОграничением.ДляВнешнихПользователей) + | И (ПостоянныеВидыОграничений.ПолноеИмя = ТаблицыСОтключеннымОграничением.ПолноеИмя) + | ГДЕ + | ПостоянныеВидыОграничений.ПолноеИмя ЕСТЬ NULL + | И ТаблицыСОтключеннымОграничением.Таблица <> НЕОПРЕДЕЛЕНО) КАК ВидыОграниченийПрав"; + + Если ТипЗнч(ДляВнешнихПользователей) = Тип("Булево") Тогда + Запрос.УстановитьПараметр("ДляВнешнихПользователей", ДляВнешнихПользователей); + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборДляВнешнихПользователей", + "ПостоянныеВидыОграничений.ДляВнешнихПользователей = &ДляВнешнихПользователей"); + Иначе + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборДляВнешнихПользователей", "ИСТИНА"); + КонецЕсли; + Запрос.УстановитьПараметр("ВидыДоступаСПредставлением", + ВидыДоступаСПредставлением(ТипыЗначенийВидовДоступа, Ложь)); + Запрос.УстановитьПараметр("ПредставлениеНеизвестногоВидаДоступа", + ПредставлениеНеизвестногоВидаДоступа()); + Запрос.УстановитьПараметр("ТаблицыСОтключеннымОграничением", + ТаблицыСОтключеннымОграничением(ДляВнешнихПользователей, + ВидДоступаДляТаблицСОтключеннымИспользованием)); + Иначе + Запрос.УстановитьПараметр("ТипыЗначенийВидовДоступа", ТипыЗначенийВидовДоступа); + Запрос.УстановитьПараметр("ИспользуемыеВидыДоступа", + ВидыДоступаСПредставлением(ТипыЗначенийВидовДоступа, Истина)); + // АПК:96-выкл - №434 Использование ОБЪЕДИНИТЬ допустимо, так как + // строки не должны повторятся и результат кэшируется. + Запрос.Текст = + "ВЫБРАТЬ + | ПостоянныеВидыОграничений.Таблица КАК Таблица, + | ПостоянныеВидыОграничений.Право КАК Право, + | ПостоянныеВидыОграничений.ВидДоступа КАК ВидДоступа, + | ПостоянныеВидыОграничений.ТаблицаОбъекта КАК ТаблицаОбъекта + |ПОМЕСТИТЬ ПостоянныеВидыОграничений + |ИЗ + | &ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ТипыЗначенийВидовДоступа.ВидДоступа КАК ВидДоступа, + | ТипыЗначенийВидовДоступа.ТипЗначений КАК ТипЗначений + |ПОМЕСТИТЬ ТипыЗначенийВидовДоступа + |ИЗ + | &ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ИспользуемыеВидыДоступа.ВидДоступа КАК ВидДоступа, + | ИспользуемыеВидыДоступа.Представление КАК Представление + |ПОМЕСТИТЬ ИспользуемыеВидыДоступа + |ИЗ + | &ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПостоянныеВидыОграничений.Таблица КАК Таблица, + | ""Чтение"" КАК Право, + | ТИПЗНАЧЕНИЯ(СтрокиНаборов.ЗначениеДоступа) КАК ТипЗначений + |ПОМЕСТИТЬ ПеременныеВидыОграничений + |ИЗ + | РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + | ПО (ПостоянныеВидыОграничений.Право = ""Чтение"") + | И (ПостоянныеВидыОграничений.ВидДоступа = НЕОПРЕДЕЛЕНО) + | И (ТИПЗНАЧЕНИЯ(НомераНаборов.Объект) = ТИПЗНАЧЕНИЯ(ПостоянныеВидыОграничений.ТаблицаОбъекта)) + | И (НомераНаборов.Чтение) + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаборыЗначенийДоступа КАК СтрокиНаборов + | ПО (СтрокиНаборов.Объект = НомераНаборов.Объект) + | И (СтрокиНаборов.НомерНабора = НомераНаборов.НомерНабора) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПостоянныеВидыОграничений.Таблица, + | ""Изменение"", + | ТИПЗНАЧЕНИЯ(СтрокиНаборов.ЗначениеДоступа) + |ИЗ + | РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + | ПО (ПостоянныеВидыОграничений.Право = ""Изменение"") + | И (ПостоянныеВидыОграничений.ВидДоступа = НЕОПРЕДЕЛЕНО) + | И (ТИПЗНАЧЕНИЯ(НомераНаборов.Объект) = ТИПЗНАЧЕНИЯ(ПостоянныеВидыОграничений.ТаблицаОбъекта)) + | И (НомераНаборов.Изменение) + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаборыЗначенийДоступа КАК СтрокиНаборов + | ПО (СтрокиНаборов.Объект = НомераНаборов.Объект) + | И (СтрокиНаборов.НомерНабора = НомераНаборов.НомерНабора) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПостоянныеВидыОграничений.Таблица КАК Таблица, + | ПостоянныеВидыОграничений.Право КАК Право, + | ТипыЗначенийВидовДоступа.ВидДоступа КАК ВидДоступа + |ПОМЕСТИТЬ ВсеВидыОграниченийПрав + |ИЗ + | ПостоянныеВидыОграничений КАК ПостоянныеВидыОграничений + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа + | ПО ПостоянныеВидыОграничений.ВидДоступа = ТипыЗначенийВидовДоступа.ВидДоступа + | И (ПостоянныеВидыОграничений.ВидДоступа <> НЕОПРЕДЕЛЕНО) + | + |ОБЪЕДИНИТЬ + | + |ВЫБРАТЬ + | ПеременныеВидыОграничений.Таблица, + | ПеременныеВидыОграничений.Право, + | ТипыЗначенийВидовДоступа.ВидДоступа + |ИЗ + | ПеременныеВидыОграничений КАК ПеременныеВидыОграничений + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТипыЗначенийВидовДоступа КАК ТипыЗначенийВидовДоступа + | ПО (ПеременныеВидыОграничений.ТипЗначений = ТИПЗНАЧЕНИЯ(ТипыЗначенийВидовДоступа.ТипЗначений)) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВсеВидыОграниченийПрав.Таблица КАК Таблица, + | ВсеВидыОграниченийПрав.Право КАК Право, + | ВсеВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ИспользуемыеВидыДоступа.Представление КАК Представление + |ИЗ + | ВсеВидыОграниченийПрав КАК ВсеВидыОграниченийПрав + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИспользуемыеВидыДоступа КАК ИспользуемыеВидыДоступа + | ПО ВсеВидыОграниченийПрав.ВидДоступа = ИспользуемыеВидыДоступа.ВидДоступа"; + // АПК:96-вкл. + КонецЕсли; + + Выгрузка = Запрос.Выполнить().Выгрузить(); + + Если Не УниверсальноеОграничение Тогда + Кэш.Таблица = Выгрузка; + Кэш.ДатаОбновления = ТекущаяДатаСеанса(); + КонецЕсли; + + Возврат Выгрузка; + +КонецФункции + +// Для функции ВидыОграниченийПрав. +Функция ВидыДоступаСПредставлением(ТипыЗначенийВидовДоступа, ТолькоИспользуемые) + + ВидыДоступа = ТипыЗначенийВидовДоступа.Скопировать(, "ВидДоступа"); + + ВидыДоступа.Свернуть("ВидДоступа"); + ВидыДоступа.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150))); + + Индекс = ВидыДоступа.Количество()-1; + Пока Индекс >= 0 Цикл + Строка = ВидыДоступа[Индекс]; + СвойстваВидаДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(Строка.ВидДоступа); + + Если СвойстваВидаДоступа = Неопределено Тогда + МетаданныеВладельцаНастроекПрав = Метаданные.НайтиПоТипу(ТипЗнч(Строка.ВидДоступа)); + Если МетаданныеВладельцаНастроекПрав = Неопределено Тогда + Строка.Представление = ПредставлениеНеизвестногоВидаДоступа(); + Иначе + Строка.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Настройки прав на %1'"), + МетаданныеВладельцаНастроекПрав.Представление()); + КонецЕсли; + + ИначеЕсли Не ТолькоИспользуемые + Или УправлениеДоступомСлужебный.ВидДоступаИспользуется(Строка.ВидДоступа) Тогда + + Строка.Представление = УправлениеДоступомСлужебный.ПредставлениеВидаДоступа(СвойстваВидаДоступа); + Иначе + ВидыДоступа.Удалить(Строка); + КонецЕсли; + + Индекс = Индекс - 1; + КонецЦикла; + + Возврат ВидыДоступа; + +КонецФункции + +// Для функций ВидыОграниченийПрав, ВидыДоступаСПредставлением. +Функция ПредставлениеНеизвестногоВидаДоступа() + + Возврат НСтр("ru = 'Неизвестный вид доступа'"); + +КонецФункции + +// Для функции ВидыОграниченийПрав. +Функция ТаблицыСОтключеннымОграничением(ДляВнешнихПользователей, Заполнять) + + ТипыИдентификаторов = Новый Массив; + ТипыИдентификаторов.Добавить(Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных")); + ТипыИдентификаторов.Добавить(Тип("СправочникСсылка.ИдентификаторыОбъектовРасширений")); + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("ДляВнешнихПользователей", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("ПолноеИмя", + Метаданные.Справочники.ИдентификаторыОбъектовМетаданных.Реквизиты.ПолноеИмя.Тип); + Результат.Колонки.Добавить("Таблица", Новый ОписаниеТипов(ТипыИдентификаторов)); + Результат.Колонки.Добавить("ВидДоступа", УправлениеДоступомСлужебныйПовтИсп.ОписаниеТиповЗначенийДоступаИВладельцевНастроекПрав()); + Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150))); + + Если Не Заполнять Тогда + Возврат Результат; + КонецЕсли; + + ДействующиеПараметры = УправлениеДоступомСлужебный.ДействующиеПараметрыОграниченияДоступа( + Неопределено, Неопределено, Ложь); + + Если ДляВнешнихПользователей <> Истина Тогда + ДобавитьТаблицыСОтключеннымОграничением(Результат, ДействующиеПараметры, Ложь); + КонецЕсли; + Если ДляВнешнихПользователей <> Ложь Тогда + ДобавитьТаблицыСОтключеннымОграничением(Результат, ДействующиеПараметры, Истина); + КонецЕсли; + ПолныеИмена = Результат.ВыгрузитьКолонку("ПолноеИмя"); + ИдентификаторыИмен = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИмена, Ложь); + Для Каждого Строка Из Результат Цикл + Строка.Таблица = ИдентификаторыИмен.Получить(Строка.ПолноеИмя); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Для функции ТаблицыСОтключеннымОграничением. +Процедура ДобавитьТаблицыСОтключеннымОграничением(ТаблицыСОтключеннымОграничением, + ДействующиеПараметры, ДляВнешнихПользователей) + + Если ДляВнешнихПользователей Тогда + ДополнительныйКонтекст = ДействующиеПараметры.ДополнительныйКонтекст.ДляВнешнихПользователей; + Иначе + ДополнительныйКонтекст = ДействующиеПараметры.ДополнительныйКонтекст.ДляПользователей; + КонецЕсли; + + СпискиСОтключеннымОграничением = ДополнительныйКонтекст.СпискиСОтключеннымОграничением; + СвойстваОграниченияСписков = ДополнительныйКонтекст.СвойстваОграниченияСписков; + + Для Каждого КлючИЗначение Из СвойстваОграниченияСписков Цикл + ПолноеИмя = КлючИЗначение.Ключ; + Если Не КлючИЗначение.Значение.ДоступЗапрещен + И СпискиСОтключеннымОграничением.Получить(ПолноеИмя) = Неопределено Тогда + Продолжить; + КонецЕсли; + НоваяСтрока = ТаблицыСОтключеннымОграничением.Добавить(); + НоваяСтрока.ДляВнешнихПользователей = ДляВнешнихПользователей; + НоваяСтрока.ПолноеИмя = ПолноеИмя; + Если КлючИЗначение.Значение.ДоступЗапрещен Тогда + НоваяСтрока.ВидДоступа = Перечисления.ДополнительныеЗначенияДоступа.ДоступЗапрещен; + НоваяСтрока.Представление = "<" + НСтр("ru = 'Доступ запрещен'") + ">"; + Иначе + НоваяСтрока.ВидДоступа = Перечисления.ДополнительныеЗначенияДоступа.ДоступРазрешен; + НоваяСтрока.Представление = "<" + НСтр("ru = 'Ограничение отключено'") + ">"; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецЕсли - diff --git a/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl b/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl index ffa0c3e13..a35a06c08 100644 --- a/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl +++ b/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl @@ -115,33 +115,37 @@ // Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт - Если КлючСхемы = "1" Тогда - Возврат; - КонецЕсли; - - КлючСхемы = "1"; - - Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") И НовыеНастройкиКД <> Неопределено Тогда - - РеквизитыФормы = Новый Структура("КонтекстВарианта"); - ЗаполнитьЗначенияСвойств(РеквизитыФормы, Контекст); - - Если ЗначениеЗаполнено(РеквизитыФормы.КонтекстВарианта) Тогда - Если КлючВарианта = "ПраваПользователейНаТаблицу" Тогда - ОбъектМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Контекст.КонтекстВарианта, Ложь); - Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "ОбъектМетаданных", ОбъектМетаданных, - ВидСравненияКомпоновкиДанных.Равно, , Истина); - КонецЕсли; - ИначеЕсли КлючВарианта = "ПраваПользователейНаТаблицы" Или КлючВарианта = "ПраваПользователяНаТаблицы" Тогда - Если Контекст.Параметры.Свойство("ПараметрКоманды") Тогда - СписокПользователей = Новый СписокЗначений; - СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды); - УстановитьОтборПоПользователям(НовыеНастройкиКД, СписокПользователей); + Если КлючСхемы <> "1" Тогда + КлючСхемы = "1"; + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") И НовыеНастройкиКД <> Неопределено Тогда + РеквизитыФормы = Новый Структура("КонтекстВарианта"); + ЗаполнитьЗначенияСвойств(РеквизитыФормы, Контекст); + Вариант = НовыеНастройкиКД.ДополнительныеСвойства.КлючПредопределенногоВарианта; + + Если ЗначениеЗаполнено(РеквизитыФормы.КонтекстВарианта) Тогда + Если Вариант = "ПраваПользователейНаТаблицу" Тогда + ОбъектМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Контекст.КонтекстВарианта, Ложь); + Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "ОбъектМетаданных", ОбъектМетаданных, + ВидСравненияКомпоновкиДанных.Равно, , Истина); + КонецЕсли; + ИначеЕсли Вариант = "ПраваПользователейНаТаблицы" Или Вариант = "ПраваПользователяНаТаблицы" Тогда + Если Контекст.Параметры.Свойство("ПараметрКоманды") Тогда + СписокПользователей = Новый СписокЗначений; + СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды); + УстановитьОтбор("Пользователь", СписокПользователей, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД); + КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; - + КонецЕсли; + + Если Не Константы.ИспользоватьВнешнихПользователей.Получить() Тогда + СхемаКомпоновкиДанных.Параметры.ВидПользователей.ОграничениеИспользования = Истина; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульОтчетыСервер = ОбщегоНазначения.ОбщийМодуль("ОтчетыСервер"); + МодульОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -187,70 +191,167 @@ НастройкиКомпоновщика = КомпоновщикНастроек.ПолучитьНастройки(); + ПараметрВидПользователей = НастройкиКомпоновщика.ПараметрыДанных.Элементы.Найти("ВидПользователей"); + ПараметрПользователь = НастройкиКомпоновщика.ПараметрыДанных.Элементы.Найти("Пользователь"); + + Если ПараметрПользователь.Использование + И Не ЗначениеЗаполнено(ПараметрПользователь.Значение) Тогда + + ПараметрПользователь.Использование = Ложь; + КонецЕсли; + + Если ПараметрПользователь.Использование Тогда + ПараметрВидПользователей.Использование = Ложь; + КонецЕсли; + + НастройкиПрав = НастройкиПравПоОбъектам(); + + Если Не ЗначениеЗаполнено(НастройкиПрав.НастройкиПравЛегенда) Тогда + ОтключитьГруппировки(НастройкиКомпоновщика, + "НастройкиПрав,ЛегендаНастроекПрав,ДополнительныйЗаголовокТаблицы"); + КонецЕсли; + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки); ВнешниеНаборыДанных = Новый Структура; - ВнешниеНаборыДанных.Вставить("ПраваПользователей", ПраваПользователей()); + ВнешниеНаборыДанных.Вставить("ПраваПользователей", ПраваПользователей()); + ВнешниеНаборыДанных.Вставить("НастройкиПравПоОбъектам", НастройкиПрав.НастройкиПравПоОбъектам); + ВнешниеНаборыДанных.Вставить("НастройкиПравИерархия", НастройкиПрав.НастройкиПравИерархия); + ВнешниеНаборыДанных.Вставить("НастройкиПравЛегенда", НастройкиПрав.НастройкиПравЛегенда); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; - ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных , ДанныеРасшифровки); + ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); + ЗавершитьВывод(ДокументРезультат, ДанныеРасшифровки, НастройкиПрав); + +КонецПроцедуры + +Процедура ЗавершитьВывод(ДокументРезультат, ДанныеРасшифровки, НастройкиПрав) + ГруппаДоступаЗаголовок = НСтр("ru = 'Группа доступа'"); Если УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда ГруппаДоступаЗаголовок = НСтр("ru = 'Профиль пользователя'"); КонецЕсли; - КартинкаПросмотр = БиблиотекаКартинок.Просмотр; - КартинкаРедактирование = БиблиотекаКартинок.Редактирование; - КартинкаСоздание = БиблиотекаКартинок.Создание; + // АПК:163-выкл - №598.1 Использование допустимо, так как влияет на смысл. + ТекстЕстьОграничение = НСтр("ru = 'Доступно не всё'"); + // АПК:163-вкл. + ТекстПравоНеНазначено = НСтр("ru = '●'"); + ТекстПравоРазрешено = НСтр("ru = '✔'"); + ТекстПравоЗапрещено = НСтр("ru = '✘'"); + ШрифтПравоНеНазначено = Неопределено; + ШрифтПравоРазрешено = Неопределено; + ШрифтПравоЗапрещено = Неопределено; + ЦветПравоНеНазначено = Метаданные.ЭлементыСтиля.НеназначенноеПравоДоступаЦвет.Значение; + ЦветПравоРазрешено = Метаданные.ЭлементыСтиля.РазрешенноеПравоДоступаЦвет.Значение; + ЦветПравоЗапрещено = Метаданные.ЭлементыСтиля.ЗапрещенноеПравоДоступаЦвет.Значение; + ЦветПравоВычисленное = Метаданные.ЭлементыСтиля.ВычисленноеПравоДоступаЦвет.Значение; + РасшифровкиСтрок = Новый Соответствие; + РасшифровкиКолонок = Новый Соответствие; + НастроенноеПравоДляПодпапок = ОписаниеКолонкиДляПодпапок().Заголовок; + НетЛинии = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии); + ТипИдентификаторРасшифровкиКомпоновкиДанных = Тип("ИдентификаторРасшифровкиКомпоновкиДанных"); + ВысотаТаблицы = ДокументРезультат.ВысотаТаблицы; + ШиринаТаблицы = ДокументРезультат.ШиринаТаблицы; - Для НомерСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл - Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл + Для НомерСтроки = 1 По ВысотаТаблицы Цикл + Для НомерКолонки = 1 По ШиринаТаблицы Цикл Область = ДокументРезультат.Область(НомерСтроки, НомерКолонки); - Если Область.Текст = "&ГруппаДоступаЗаголовок" Тогда - Область.Текст = ГруппаДоступаЗаголовок; - КонецЕсли; - - Если ТипЗнч(Область.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда + Расшифровка = Область.Расшифровка; + Если ТипЗнч(Расшифровка) <> ТипИдентификаторРасшифровкиКомпоновкиДанных Тогда + ТекстОбласти = Область.Текст; + + Если ТекстОбласти = "*" Тогда + Область.Текст = ""; + Область.Примечание.Текст = ТекстЕстьОграничение; + + ИначеЕсли ТекстОбласти = "&ГруппаДоступаЗаголовок" Тогда + Область.Текст = ГруппаДоступаЗаголовок; + + ИначеЕсли ТекстОбласти = "&ВладелецНастроекЗаголовок" Тогда + Область.Текст = НастройкиПрав.ВладелецНастроекЗаголовок; + КонецЕсли; + Продолжить; КонецЕсли; - ЗначенияПолей = ДанныеРасшифровки.Элементы[Область.Расшифровка].ПолучитьПоля(); + ЗначенияПолей = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля(); - ЗначениеПоляПраво = ЗначенияПолей.Найти("Право"); - Если ЗначениеПоляПраво <> Неопределено Тогда + Если ЗначенияПолей.Найти("Право") <> Неопределено + И ЗначенияПолей.Найти("Право").Значение > 0 + И ЗначенияПолей.Найти("ПравоБезОграничения") <> Неопределено + И ЗначенияПолей.Найти("Право").Значение + > ЗначенияПолей.Найти("ПравоБезОграничения").Значение + Или ЗначенияПолей.Найти("ПравоПросмотр") <> Неопределено + И ЗначенияПолей.Найти("ПравоПросмотр").Значение = Истина + И ЗначенияПолей.Найти("ПравоЧтениеБезОграничения").Значение = Ложь + Или ЗначенияПолей.Найти("ПравоРедактирование") <> Неопределено + И ЗначенияПолей.Найти("ПравоРедактирование").Значение = Истина + И ЗначенияПолей.Найти("ПравоИзменениеБезОграничения").Значение = Ложь + Или ЗначенияПолей.Найти("ПравоИнтерактивноеДобавление") <> Неопределено + И ЗначенияПолей.Найти("ПравоИнтерактивноеДобавление").Значение = Истина + И ЗначенияПолей.Найти("ПравоДобавлениеБезОграничения").Значение = Ложь Тогда - Если ЗначениеПоляПраво.Значение = 1 Тогда - Область.Картинка = КартинкаПросмотр; + Область.Примечание.Текст = ТекстЕстьОграничение; + + ИначеЕсли ЗначенияПолей.Найти("ЗначениеПрава") <> Неопределено Тогда + ЗначениеПрава = ЗначенияПолей.Найти("ЗначениеПрава").Значение; + Если ЗначениеПрава = Null Тогда + ЗначениеПрава = 0; + ЭтоВладелецНастроек = РасшифровкиСтрок.Получить(НомерСтроки).Найти("ЭтоВладелецНастроек").Значение; + НастроенноеПраво = РасшифровкиКолонок.Получить(НомерКолонки).Найти("НастроенноеПраво").Значение; + Иначе + ЭтоВладелецНастроек = ЗначенияПолей.Найти("ЭтоВладелецНастроек").Значение; + Если ЗначениеПрава = 0 Тогда + НастроенноеПраво = ЗначенияПолей.Найти("НастроенноеПраво").Значение; + КонецЕсли; + КонецЕсли; + Если ЗначениеПрава = 0 Тогда + Если ЭтоВладелецНастроек И НастроенноеПраво <> НастроенноеПравоДляПодпапок Тогда + ЗначениеПрава = 2; + ИначеЕсли НастроенноеПраво <> НастроенноеПравоДляПодпапок Тогда + Область.Текст = ТекстПравоНеНазначено; + Область.Шрифт = ШрифтПравоНеНазначено; + Область.ЦветТекста = ЦветПравоНеНазначено; + КонецЕсли; + КонецЕсли; + Если ЗначениеПрава = 1 Тогда + Область.Текст = ТекстПравоРазрешено; + Область.Шрифт = ШрифтПравоРазрешено; + Область.ЦветТекста = ?(ЭтоВладелецНастроек, ЦветПравоВычисленное, ЦветПравоРазрешено); - ИначеЕсли ЗначениеПоляПраво.Значение = 2 Тогда - Область.Картинка = КартинкаРедактирование; - - ИначеЕсли ЗначениеПоляПраво.Значение = 3 Тогда - Область.Картинка = КартинкаСоздание; + ИначеЕсли ЗначениеПрава = 2 Тогда + Область.Текст = ТекстПравоЗапрещено; + Область.Шрифт = ШрифтПравоЗапрещено; + Область.ЦветТекста = ?(ЭтоВладелецНастроек, ЦветПравоВычисленное, ЦветПравоЗапрещено); КонецЕсли; - ИначеЕсли ЗначенияПолей.Найти("ПравоПросмотр") <> Неопределено - И ЗначенияПолей.Найти("ПравоПросмотр").Значение = Истина Тогда + ИначеЕсли ЗначенияПолей.Найти("ВладелецИлиПользовательНастроек") <> Неопределено Тогда + РасшифровкиСтрок.Вставить(НомерСтроки, ЗначенияПолей); + Если ШрифтПравоНеНазначено = Неопределено Тогда + ШрифтПравоНеНазначено = Область.Шрифт; + ШрифтПравоРазрешено = Новый Шрифт(ШрифтПравоНеНазначено,,, Истина,,,, 120); + ШрифтПравоЗапрещено = ШрифтПравоРазрешено; + КонецЕсли; + Отступ = (ЗначенияПолей.Найти("Уровень").Значение - 1) * 2; + ОбластьСтроки = ДокументРезультат.Область(НомерСтроки, , НомерСтроки); + ОбластьСтроки.СоздатьФорматСтрок(); + ОбластьСправа = ДокументРезультат.Область(НомерСтроки, НомерКолонки); + ОбластьСлева = ДокументРезультат.Область(НомерСтроки, НомерКолонки - 1); + ОбластьСправа.ГраницаСлева = НетЛинии; + ОбластьСлева.ГраницаСправа = НетЛинии; + ОбластьСправа.ШиринаКолонки = Область.ШиринаКолонки + ОбластьСлева.ШиринаКолонки - Отступ; + ОбластьСлева.ШиринаКолонки = Отступ; - Область.Картинка = КартинкаПросмотр; - - ИначеЕсли ЗначенияПолей.Найти("ПравоРедактирование") <> Неопределено - И ЗначенияПолей.Найти("ПравоРедактирование").Значение = Истина Тогда - - Область.Картинка = КартинкаРедактирование; - - ИначеЕсли ЗначенияПолей.Найти("ПравоИнтерактивноеДобавление") <> Неопределено - И ЗначенияПолей.Найти("ПравоИнтерактивноеДобавление").Значение = Истина Тогда - - Область.Картинка = КартинкаСоздание; + ИначеЕсли ЗначенияПолей.Найти("НастроенноеПраво") <> Неопределено Тогда + РасшифровкиКолонок.Вставить(НомерКолонки, ЗначенияПолей); КонецЕсли; КонецЦикла; КонецЦикла; @@ -463,6 +564,9 @@ "ВЫБРАТЬ | ПраваРолейРасширений.ОбъектМетаданных КАК ОбъектМетаданных, | ПраваРолейРасширений.Роль КАК Роль, + | ПраваРолейРасширений.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваРолейРасширений.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваРолейРасширений.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, | ПраваРолейРасширений.ПравоПросмотр КАК ПравоПросмотр, | ПраваРолейРасширений.ПравоРедактирование КАК ПравоРедактирование, | ПраваРолейРасширений.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление, @@ -476,6 +580,9 @@ |ВЫБРАТЬ | ПраваРолейРасширений.ОбъектМетаданных КАК ОбъектМетаданных, | ПраваРолейРасширений.Роль КАК Роль, + | ПраваРолейРасширений.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваРолейРасширений.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваРолейРасширений.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, | ПраваРолейРасширений.ПравоПросмотр КАК ПравоПросмотр, | ПраваРолейРасширений.ПравоРедактирование КАК ПравоРедактирование, | ПраваРолейРасширений.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление @@ -491,6 +598,9 @@ |ВЫБРАТЬ | ПраваРолей.ОбъектМетаданных, | ПраваРолей.Роль, + | ПраваРолей.ПравоЧтениеБезОграничения, + | ПраваРолей.ПравоИзменениеБезОграничения, + | ПраваРолей.ПравоДобавлениеБезОграничения, | ПраваРолей.ПравоПросмотр, | ПраваРолей.ПравоРедактирование, | ПраваРолей.ПравоИнтерактивноеДобавление @@ -511,6 +621,9 @@ |ВЫБРАТЬ | ПрофилиГруппДоступаРоли.Ссылка КАК Профиль, | ПраваРолей.ОбъектМетаданных КАК Таблица, + | МАКСИМУМ(ПраваРолей.ПравоЧтениеБезОграничения) КАК ПравоЧтениеБезОграничения, + | МАКСИМУМ(ПраваРолей.ПравоИзменениеБезОграничения) КАК ПравоИзменениеБезОграничения, + | МАКСИМУМ(ПраваРолей.ПравоДобавлениеБезОграничения) КАК ПравоДобавлениеБезОграничения, | МАКСИМУМ(ПраваРолей.ПравоПросмотр) КАК ПравоПросмотр, | МАКСИМУМ(ПраваРолей.ПравоРедактирование) КАК ПравоРедактирование, | МАКСИМУМ(ПраваРолей.ПравоИнтерактивноеДобавление) КАК ПравоИнтерактивноеДобавление @@ -538,6 +651,30 @@ | ТОГДА ГруппыДоступа.Профиль | ИНАЧЕ ГруппыДоступа.Ссылка | КОНЕЦ КАК ГруппаДоступа, + | ПраваПрофилей.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваПрофилей.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваПрофилей.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, + | ВЫБОР + | КОГДА ПраваПрофилей.ПравоИнтерактивноеДобавление + | ТОГДА ВЫБОР + | КОГДА ПраваПрофилей.ПравоДобавлениеБезОграничения + | ТОГДА 3 + | ИНАЧЕ 0 + | КОНЕЦ + | КОГДА ПраваПрофилей.ПравоРедактирование + | ТОГДА ВЫБОР + | КОГДА ПраваПрофилей.ПравоИзменениеБезОграничения + | ТОГДА 2 + | ИНАЧЕ 0 + | КОНЕЦ + | КОГДА ПраваПрофилей.ПравоПросмотр + | ТОГДА ВЫБОР + | КОГДА ПраваПрофилей.ПравоЧтениеБезОграничения + | ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ + | ИНАЧЕ 0 + | КОНЕЦ КАК ПравоБезОграничения, | ПраваПрофилей.ПравоПросмотр КАК ПравоПросмотр, | ПраваПрофилей.ПравоРедактирование КАК ПравоРедактирование, | ПраваПрофилей.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление, @@ -551,9 +688,7 @@ | ИНАЧЕ 0 | КОНЕЦ КАК Право, | СоставыГруппПользователей.Пользователь КАК Пользователь, - | СоставыГруппПользователей.Используется КАК ВходВПрограммуРазрешен, - | НЕОПРЕДЕЛЕНО КАК Отчет, - | 0 КАК ПравоОтчета + | СоставыГруппПользователей.Используется КАК ВходВПрограммуРазрешен |ИЗ | ПраваПрофилейНаТаблицы КАК ПраваПрофилей | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа @@ -563,7 +698,339 @@ | ПО (УчастникиГруппДоступа.Ссылка = ГруппыДоступа.Ссылка) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей | ПО (СоставыГруппПользователей.ГруппаПользователей = УчастникиГруппДоступа.Пользователь) - | И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи)) + | И (СоставыГруппПользователей.Пользователь <> &ПользовательНеУказан)"; + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаНачало = + "ВЫБРАТЬ + | ГруппыДоступа.Профиль КАК Профиль, + | ГруппыДоступа.Ссылка КАК ГруппаДоступа + |ПОМЕСТИТЬ ГруппыДоступаПользователей + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК УчастникиГруппДоступа + | ПО (УчастникиГруппДоступа.Ссылка = ГруппыДоступа.Ссылка) + | И (НЕ ГруппыДоступа.ПометкаУдаления) + | И (ГруппыДоступа.Профиль В + | (ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПраваПрофилей.Профиль + | ИЗ + | ПраваПрофилейНаТаблицы КАК ПраваПрофилей)) + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО (СоставыГруппПользователей.ГруппаПользователей = УчастникиГруппДоступа.Пользователь) + | И (СоставыГруппПользователей.Пользователь <> &ПользовательНеУказан)"; + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграниченийПоСтарому = + "ВЫБРАТЬ + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.Представление КАК ВидДоступаПредставление, + | ВидыОграниченийПрав.Право КАК Право + |ПОМЕСТИТЬ ВидыОграниченийПравИсходные + |ИЗ + | &ВидыОграниченийПрав КАК ВидыОграниченийПрав + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление КАК ВидДоступаПредставление, + | МАКСИМУМ(ВидыОграниченийПрав.Право = ""Чтение"") КАК ПравоЧтение, + | МАКСИМУМ(ВидыОграниченийПрав.Право = ""Изменение"") КАК ПравоИзменение + |ПОМЕСТИТЬ ВидыОграниченийПравПреобразованные + |ИЗ + | ВидыОграниченийПравИсходные КАК ВидыОграниченийПрав + | + |СГРУППИРОВАТЬ ПО + | ВидыОграниченийПрав.Таблица, + | ВидыОграниченийПрав.ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЛОЖЬ КАК ДляВнешнихПользователей, + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление КАК ВидДоступаПредставление, + | ВидыОграниченийПрав.ПравоЧтение КАК ПравоЧтение, + | ВидыОграниченийПрав.ПравоИзменение КАК ПравоИзменение + |ПОМЕСТИТЬ ВидыОграниченийПрав + |ИЗ + | ВидыОграниченийПравПреобразованные КАК ВидыОграниченийПрав + |ГДЕ + | ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) <> ТИП(Справочник.ВнешниеПользователи) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ИСТИНА, + | ВидыОграниченийПрав.Таблица, + | ВидыОграниченийПрав.ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление, + | ВидыОграниченийПрав.ПравоЧтение, + | ВидыОграниченийПрав.ПравоИзменение + |ИЗ + | ВидыОграниченийПравПреобразованные КАК ВидыОграниченийПрав + |ГДЕ + | ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) <> ТИП(Справочник.Пользователи)"; + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграниченийПоНовому = + "ВЫБРАТЬ + | ВидыОграниченийПрав.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.Представление КАК ВидДоступаПредставление, + | ВидыОграниченийПрав.Право КАК Право + |ПОМЕСТИТЬ ВидыОграниченийПравИсходные + |ИЗ + | &ВидыОграниченийПрав КАК ВидыОграниченийПрав + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВидыОграниченийПрав.ДляВнешнихПользователей КАК ДляВнешнихПользователей, + | ВидыОграниченийПрав.Таблица КАК Таблица, + | ВидыОграниченийПрав.ВидДоступа КАК ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление КАК ВидДоступаПредставление, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен) + | ТОГДА ЛОЖЬ + | КОГДА ВидыОграниченийПрав.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен) + | ТОГДА ИСТИНА + | ИНАЧЕ МАКСИМУМ(ВидыОграниченийПрав.Право = ""Чтение"") + | КОНЕЦ КАК ПравоЧтение, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен) + | ТОГДА ЛОЖЬ + | КОГДА ВидыОграниченийПрав.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен) + | ТОГДА ИСТИНА + | ИНАЧЕ МАКСИМУМ(ВидыОграниченийПрав.Право = ""Изменение"") + | КОНЕЦ КАК ПравоИзменение + |ПОМЕСТИТЬ ВидыОграниченийПрав + |ИЗ + | ВидыОграниченийПравИсходные КАК ВидыОграниченийПрав + | + |СГРУППИРОВАТЬ ПО + | ВидыОграниченийПрав.ДляВнешнихПользователей, + | ВидыОграниченийПрав.Таблица, + | ВидыОграниченийПрав.ВидДоступа, + | ВидыОграниченийПрав.ВидДоступаПредставление"; + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаКонец = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ВидыИЗначенияДоступа.ГруппаДоступа КАК ГруппаДоступа, + | ВидыИЗначенияДоступа.ВидДоступа КАК ВидДоступа, + | ВидыИЗначенияДоступа.ВсеРазрешены КАК ВсеРазрешены, + | ВидыИЗначенияДоступа.ЗначениеДоступа КАК ЗначениеДоступа + |ПОМЕСТИТЬ ВидыИЗначенияДоступа + |ИЗ + | (ВЫБРАТЬ + | ГруппыДоступаПользователей.ГруппаДоступа КАК ГруппаДоступа, + | ГруппыДоступаВидыДоступа.ВидДоступа КАК ВидДоступа, + | ГруппыДоступаВидыДоступа.ВсеРазрешены КАК ВсеРазрешены, + | ЕСТЬNULL(ГруппыДоступаЗначенияДоступа.ЗначениеДоступа, НЕОПРЕДЕЛЕНО) КАК ЗначениеДоступа + | ИЗ + | ГруппыДоступаПользователей КАК ГруппыДоступаПользователей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ВидыДоступа КАК ГруппыДоступаВидыДоступа + | ПО (ГруппыДоступаВидыДоступа.Ссылка = ГруппыДоступаПользователей.ГруппаДоступа) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.ЗначенияДоступа КАК ГруппыДоступаЗначенияДоступа + | ПО (ГруппыДоступаЗначенияДоступа.Ссылка = ГруппыДоступаВидыДоступа.Ссылка) + | И (ГруппыДоступаЗначенияДоступа.ВидДоступа = ГруппыДоступаВидыДоступа.ВидДоступа) + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ + | ГруппыДоступаПользователей.ГруппаДоступа, + | ПрофилиГруппДоступаВидыДоступа.ВидДоступа, + | ПрофилиГруппДоступаВидыДоступа.ВсеРазрешены, + | ЕСТЬNULL(ПрофилиГруппДоступаЗначенияДоступа.ЗначениеДоступа, НЕОПРЕДЕЛЕНО) + | ИЗ + | ГруппыДоступаПользователей КАК ГруппыДоступаПользователей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.ВидыДоступа КАК ПрофилиГруппДоступаВидыДоступа + | ПО (ПрофилиГруппДоступаВидыДоступа.Ссылка = ГруппыДоступаПользователей.Профиль) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.ЗначенияДоступа КАК ПрофилиГруппДоступаЗначенияДоступа + | ПО (ПрофилиГруппДоступаЗначенияДоступа.Ссылка = ПрофилиГруппДоступаВидыДоступа.Ссылка) + | И (ПрофилиГруппДоступаЗначенияДоступа.ВидДоступа = ПрофилиГруппДоступаВидыДоступа.ВидДоступа) + | ГДЕ + | ПрофилиГруппДоступаВидыДоступа.Предустановленный) КАК ВидыИЗначенияДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПустыеСсылкиЗначенийДоступа.ПустаяСсылка КАК ПустаяСсылка, + | ПустыеСсылкиЗначенийДоступа.Представление КАК Представление + |ПОМЕСТИТЬ ПустыеСсылкиЗначенийДоступа + |ИЗ + | &ПустыеСсылкиЗначенийДоступа КАК ПустыеСсылкиЗначенийДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | ПраваПрофилей.Таблица КАК ОбъектМетаданных, + | ВЫБОР + | КОГДА &УпрощенныйИнтерфейсНастройкиПравДоступа + | ТОГДА ГруппыДоступа.Профиль + | ИНАЧЕ ГруппыДоступа.Ссылка + | КОНЕЦ КАК ГруппаДоступа, + | ПраваПрофилей.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваПрофилей.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваПрофилей.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, + | ПраваПрофилей.ПравоПросмотр КАК ПравоПросмотр, + | ПраваПрофилей.ПравоРедактирование КАК ПравоРедактирование, + | ПраваПрофилей.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление, + | ВЫБОР + | КОГДА ПраваПрофилей.ПравоЧтениеБезОграничения + | ТОГДА ИСТИНА + | КОГДА НЕ ПраваПрофилей.ПравоПросмотр + | ТОГДА ЛОЖЬ + | КОГДА НЕ ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПрав.ПравоЧтение + | КОГДА НЕ ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПравБезусловные.ПравоЧтение + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ВидДоступаПравоЧтениеБезОграничения, + | ВЫБОР + | КОГДА ПраваПрофилей.ПравоИзменениеБезОграничения + | ТОГДА ИСТИНА + | КОГДА НЕ ПраваПрофилей.ПравоРедактирование + | ТОГДА ЛОЖЬ + | КОГДА НЕ ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПрав.ПравоИзменение + | КОГДА НЕ ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПравБезусловные.ПравоИзменение + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ВидДоступаПравоИзменениеБезОграничения, + | ВЫБОР + | КОГДА ПраваПрофилей.ПравоДобавлениеБезОграничения + | ТОГДА ИСТИНА + | КОГДА НЕ ПраваПрофилей.ПравоИнтерактивноеДобавление + | ТОГДА ЛОЖЬ + | КОГДА НЕ ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПрав.ПравоИзменение + | КОГДА НЕ ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА НЕ ВидыОграниченийПравБезусловные.ПравоИзменение + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ВидДоступаПравоДобавлениеБезОграничения, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | И ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА ЛОЖЬ + | ИНАЧЕ ПраваПрофилей.ПравоПросмотр + | КОНЕЦ КАК ВидДоступаПравоПросмотр, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | И ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА ЛОЖЬ + | ИНАЧЕ ПраваПрофилей.ПравоРедактирование + | КОНЕЦ КАК ВидДоступаПравоРедактирование, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | И ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА ЛОЖЬ + | ИНАЧЕ ПраваПрофилей.ПравоИнтерактивноеДобавление + | КОНЕЦ КАК ВидДоступаПравоИнтерактивноеДобавление, + | ВЫБОР + | КОГДА НЕ ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА ВидыОграниченийПрав.ВидДоступа + | КОГДА НЕ ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА ВидыОграниченийПравБезусловные.ВидДоступа + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК ВидДоступа, + | ВЫБОР + | КОГДА НЕ ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА ВидыОграниченийПрав.ВидДоступаПредставление + ВЫБОР + | КОГДА ВидыИЗначенияДоступа.ВсеРазрешены ЕСТЬ NULL + | ТОГДА """" + | КОГДА ВидыИЗначенияДоступа.ВсеРазрешены = ЛОЖЬ + | ТОГДА ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) = ТИП(Справочник.ВнешниеПользователи) + | ТОГДА &ТекстРазрешенныеПользователи + | ИНАЧЕ &ТекстРазрешенные + | КОНЕЦ + | ИНАЧЕ ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(ВидыОграниченийПрав.ВидДоступа) = ТИП(Справочник.ВнешниеПользователи) + | ТОГДА &ТекстЗапрещенныеПользователи + | ИНАЧЕ &ТекстЗапрещенные + | КОНЕЦ + | КОНЕЦ + | ИНАЧЕ ВЫБОР + | КОГДА ПраваПрофилей.ПравоПросмотр + | И НЕ ПраваПрофилей.ПравоЧтениеБезОграничения + | ИЛИ ПраваПрофилей.ПравоРедактирование + | И НЕ ПраваПрофилей.ПравоИзменениеБезОграничения + | ИЛИ ПраваПрофилей.ПравоИнтерактивноеДобавление + | И НЕ ПраваПрофилей.ПравоДобавлениеБезОграничения + | ТОГДА ВЫБОР + | КОГДА НЕ ВидыОграниченийПравБезусловные.ВидДоступа ЕСТЬ NULL + | ТОГДА ВидыОграниченийПравБезусловные.ВидДоступаПредставление + | ИНАЧЕ &ТекстОграничениеБезВидовДоступа + | КОНЕЦ + | ИНАЧЕ &ТекстБезОграничения + | КОНЕЦ + | КОНЕЦ КАК ВидДоступаПредставление, + | ЕСТЬNULL(ВидыИЗначенияДоступа.ВсеРазрешены, ЛОЖЬ) КАК ВсеРазрешены, + | ВЫБОР + | КОГДА ВидыОграниченийПрав.ВидДоступа ЕСТЬ NULL + | ТОГДА """" + | КОГДА НЕ ПустыеСсылкиЗначенийДоступа.Представление ЕСТЬ NULL + | ТОГДА ПустыеСсылкиЗначенийДоступа.Представление + | КОГДА ВидыИЗначенияДоступа.ЗначениеДоступа ЕСТЬ NULL + | ИЛИ ВидыИЗначенияДоступа.ЗначениеДоступа = НЕОПРЕДЕЛЕНО + | ТОГДА ВЫБОР + | КОГДА ВидыИЗначенияДоступа.ВсеРазрешены + | ТОГДА &ТекстВсеРазрешены + | ИНАЧЕ &ТекстВсеЗапрещены + | КОНЕЦ + | ИНАЧЕ ВидыИЗначенияДоступа.ЗначениеДоступа + | КОНЕЦ КАК ЗначениеДоступа, + | СоставыГруппПользователей.Пользователь КАК Пользователь, + | СоставыГруппПользователей.Используется КАК ВходВПрограммуРазрешен + |ИЗ + | ПраваПрофилейНаТаблицы КАК ПраваПрофилей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа + | ПО (ГруппыДоступа.Профиль = ПраваПрофилей.Профиль) + | И (НЕ ГруппыДоступа.ПометкаУдаления) + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа.Пользователи КАК УчастникиГруппДоступа + | ПО (УчастникиГруппДоступа.Ссылка = ГруппыДоступа.Ссылка) + | ЛЕВОЕ СОЕДИНЕНИЕ ВидыОграниченийПрав КАК ВидыОграниченийПрав + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВидыИЗначенияДоступа КАК ВидыИЗначенияДоступа + | ПО (ВидыИЗначенияДоступа.ВидДоступа = ВидыОграниченийПрав.ВидДоступа) + | И (ВидыОграниченийПрав.ВидДоступа <> ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)) + | И (ВидыОграниченийПрав.ВидДоступа <> ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)) + | ПО (ВидыОграниченийПрав.Таблица = ПраваПрофилей.Таблица) + | И (ВидыИЗначенияДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка) + | И (НЕ ВидыОграниченийПрав.ДляВнешнихПользователей + | И (ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ГруппыПользователей)) + | ИЛИ ВидыОграниченийПрав.ДляВнешнихПользователей + | И (ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ВнешниеПользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ГруппыВнешнихПользователей))) + | И (ПраваПрофилей.ПравоПросмотр + | И НЕ ПраваПрофилей.ПравоЧтениеБезОграничения + | И ВидыОграниченийПрав.ПравоЧтение + | ИЛИ ПраваПрофилей.ПравоРедактирование + | И НЕ ПраваПрофилей.ПравоИзменениеБезОграничения + | И ВидыОграниченийПрав.ПравоИзменение + | ИЛИ ПраваПрофилей.ПравоИнтерактивноеДобавление + | И НЕ ПраваПрофилей.ПравоДобавлениеБезОграничения + | И ВидыОграниченийПрав.ПравоИзменение) + | ЛЕВОЕ СОЕДИНЕНИЕ ВидыОграниченийПрав КАК ВидыОграниченийПравБезусловные + | ПО (ВидыОграниченийПравБезусловные.Таблица = ПраваПрофилей.Таблица) + | И (ВидыОграниченийПравБезусловные.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен) + | ИЛИ ВидыОграниченийПравБезусловные.ВидДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)) + | И (НЕ ВидыОграниченийПравБезусловные.ДляВнешнихПользователей + | И (ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ГруппыПользователей)) + | ИЛИ ВидыОграниченийПравБезусловные.ДляВнешнихПользователей + | И (ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ВнешниеПользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(УчастникиГруппДоступа.Пользователь) = ТИП(Справочник.ГруппыВнешнихПользователей))) + | ЛЕВОЕ СОЕДИНЕНИЕ ПустыеСсылкиЗначенийДоступа КАК ПустыеСсылкиЗначенийДоступа + | ПО (ПустыеСсылкиЗначенийДоступа.ПустаяСсылка = ВидыИЗначенияДоступа.ЗначениеДоступа) + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО (СоставыГруппПользователей.ГруппаПользователей = УчастникиГруппДоступа.Пользователь) | И (СоставыГруппПользователей.Пользователь <> &ПользовательНеУказан)"; ТекстЗапросаСГруппировкойПоОтчетамДополнение = @@ -610,6 +1077,9 @@ | ТаблицыОтчетовСПравами.Таблица КАК Таблица, | ТаблицыОтчетовСПравами.Профиль КАК Профиль, | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоОтчета) КАК ПравоОтчета, + | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоЧтениеБезОграничения) КАК ПравоЧтениеБезОграничения, + | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоИзменениеБезОграничения) КАК ПравоИзменениеБезОграничения, + | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоДобавлениеБезОграничения) КАК ПравоДобавлениеБезОграничения, | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоПросмотр) КАК ПравоПросмотр, | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоРедактирование) КАК ПравоРедактирование, | МАКСИМУМ(ТаблицыОтчетовСПравами.ПравоИнтерактивноеДобавление) КАК ПравоИнтерактивноеДобавление @@ -620,6 +1090,9 @@ | ТаблицыОтчетов.Таблица КАК Таблица, | ПраваПрофилейНаОтчеты.Профиль КАК Профиль, | ИСТИНА КАК ПравоОтчета, + | ЛОЖЬ КАК ПравоЧтениеБезОграничения, + | ЛОЖЬ КАК ПравоИзменениеБезОграничения, + | ЛОЖЬ КАК ПравоДобавлениеБезОграничения, | ЛОЖЬ КАК ПравоПросмотр, | ЛОЖЬ КАК ПравоРедактирование, | ЛОЖЬ КАК ПравоИнтерактивноеДобавление @@ -635,6 +1108,9 @@ | ТаблицыОтчетов.Таблица, | ПраваПрофилейНаТаблицы.Профиль, | ЛОЖЬ, + | ПраваПрофилейНаТаблицы.ПравоЧтениеБезОграничения, + | ПраваПрофилейНаТаблицы.ПравоИзменениеБезОграничения, + | ПраваПрофилейНаТаблицы.ПравоДобавлениеБезОграничения, | ПраваПрофилейНаТаблицы.ПравоПросмотр, | ПраваПрофилейНаТаблицы.ПравоРедактирование, | ПраваПрофилейНаТаблицы.ПравоИнтерактивноеДобавление @@ -652,6 +1128,9 @@ | ЛОЖЬ, | ЛОЖЬ, | ЛОЖЬ, + | ЛОЖЬ, + | ЛОЖЬ, + | ЛОЖЬ, | ЛОЖЬ | ИЗ | ТаблицыОтчетов КАК ТаблицыОтчетов @@ -690,6 +1169,18 @@ | ТОГДА ГруппыДоступа.Профиль | ИНАЧЕ ГруппыДоступа.Ссылка | КОНЕЦ КАК ГруппаДоступа, + | ПраваПрофилей.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваПрофилей.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваПрофилей.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, + | ВЫБОР + | КОГДА ПраваПрофилей.ПравоИнтерактивноеДобавление + | ТОГДА ПраваПрофилей.ПравоДобавлениеБезОграничения + | КОГДА ПраваПрофилей.ПравоРедактирование + | ТОГДА ПраваПрофилей.ПравоИзменениеБезОграничения + | КОГДА ПраваПрофилей.ПравоПросмотр + | ТОГДА ПраваПрофилей.ПравоЧтениеБезОграничения + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ПравоБезОграничения, | ПраваПрофилей.ПравоПросмотр КАК ПравоПросмотр, | ПраваПрофилей.ПравоРедактирование КАК ПравоРедактирование, | ПраваПрофилей.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление, @@ -714,7 +1205,6 @@ | ПО (УчастникиГруппДоступа.Ссылка = ГруппыДоступа.Ссылка) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей | ПО (СоставыГруппПользователей.ГруппаПользователей = УчастникиГруппДоступа.Пользователь) - | И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи)) | И (СоставыГруппПользователей.Пользователь <> &ПользовательНеУказан)"; ТекстЗапросаСГруппировкойПоОтчетамКонечный = @@ -732,6 +1222,10 @@ | ПраваПользователей.ПравоОтчета КАК ПравоОтчета, | ПраваПользователей.ОбъектМетаданных КАК ОбъектМетаданных, | ПраваПользователей.ГруппаДоступа КАК ГруппаДоступа, + | ПраваПользователей.ПравоЧтениеБезОграничения КАК ПравоЧтениеБезОграничения, + | ПраваПользователей.ПравоИзменениеБезОграничения КАК ПравоИзменениеБезОграничения, + | ПраваПользователей.ПравоДобавлениеБезОграничения КАК ПравоДобавлениеБезОграничения, + | ПраваПользователей.ПравоБезОграничения КАК ПравоБезОграничения, | ПраваПользователей.ПравоПросмотр КАК ПравоПросмотр, | ПраваПользователей.ПравоРедактирование КАК ПравоРедактирование, | ПраваПользователей.ПравоИнтерактивноеДобавление КАК ПравоИнтерактивноеДобавление, @@ -755,6 +1249,10 @@ | ЛОЖЬ, | ЛОЖЬ, | ЛОЖЬ, + | ЛОЖЬ, + | ЛОЖЬ, + | ЛОЖЬ, + | ЛОЖЬ, | 0, | ПользователиСПравами.Пользователь, | ПользователиСПравами.ВходВПрограммуРазрешен @@ -772,7 +1270,38 @@ | И ПраваПользователей.Пользователь = ПользователиСПравами.Пользователь))"; Запрос = Новый Запрос; + + УсловиеОтбораПоПользователям = ""; + Если ОтборПоВходВПрограммуРазрешен() Тогда + УсловиеОтбораПоПользователям = " + | И СоставыГруппПользователей.Используется"; + КонецЕсли; + + ОтборПоВидуПользователей = ОтборПоВидуПользователей(); + ОтборПоПользователям = ОтборПоПользователям(); + Если ЗначениеЗаполнено(ОтборПоПользователям.Значение) И ОтборПоПользователям.БезГрупп Тогда + Запрос.УстановитьПараметр("ВыбранныеПользователиБезГрупп", ОтборПоПользователям.Значение); + УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " + | И СоставыГруппПользователей.Пользователь В (&ВыбранныеПользователиБезГрупп)"; + + ИначеЕсли ЗначениеЗаполнено(ОтборПоПользователям.Значение) Тогда + Запрос.УстановитьПараметр("ВыбранныеПользователиИГруппы", ОтборПоПользователям.Значение); + УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК ОтборПользователей + | ПО (ОтборПользователей.Пользователь = СоставыГруппПользователей.Пользователь) + | И (ОтборПользователей.ГруппаПользователей В (&ВыбранныеПользователиИГруппы))"; + + ИначеЕсли ОтборПоВидуПользователей = "Пользователи" Тогда + УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " + | И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.Пользователи))"; + + ИначеЕсли ОтборПоВидуПользователей = "ВнешниеПользователи" Тогда + УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " + | И (ТИПЗНАЧЕНИЯ(СоставыГруппПользователей.Пользователь) = ТИП(Справочник.ВнешниеПользователи))"; + КонецЕсли; + ВключенаГруппировкаПоОтчетам = ВключенаГруппировкаПоОтчетам(); + ВариантСОграничениямиДоступа = ВариантСОграничениямиДоступа(); Если ВключенаГруппировкаПоОтчетам Тогда ТекстЗапросаОсновной = ТекстЗапросаСГруппировкойПоОтчетам; @@ -780,6 +1309,40 @@ + ТекстЗапросаСГруппировкойПоОтчетамДополнение; Запрос.УстановитьПараметр("ПраваРолейНаОтчеты", ПраваРолейНаОтчеты()); Запрос.УстановитьПараметр("ТаблицыОтчетов", ТаблицыОтчетов()); + + ИначеЕсли ВариантСОграничениямиДоступа Тогда + УниверсальноеОграничение = + УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина, Истина); + Если УниверсальноеОграничение Тогда + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграничений + = ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграниченийПоНовому; + Запрос.УстановитьПараметр("ВидыОграниченийПрав", + Отчеты.АнализПравДоступа.ВидыОграниченийПрав(, Истина)); + Иначе + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграничений + = ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграниченийПоСтарому; + Запрос.УстановитьПараметр("ВидыОграниченийПрав", + Отчеты.АнализПравДоступа.ВидыОграниченийПрав()); + КонецЕсли; + ТекстЗапросаОсновной = ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаНачало + + УсловиеОтбораПоПользователям + + ОбщегоНазначения.РазделительПакетаЗапросов() + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаВидыОграничений + + ОбщегоНазначения.РазделительПакетаЗапросов() + + ТекстЗапросаБезГруппировкиПоОтчетамСОграничениямиДоступаКонец; + Запрос.Текст = ТекстЗапросаОбщий; + Запрос.УстановитьПараметр("ТекстРазрешенные", " (" + НСтр("ru = 'Разрешенные'")+ ")"); + Запрос.УстановитьПараметр("ТекстЗапрещенные", " (" + НСтр("ru = 'Запрещенные'") + ")"); + Запрос.УстановитьПараметр("ТекстРазрешенныеПользователи", " (" + НСтр("ru = 'Разрешенные'") + ") - " + + НСтр("ru = 'авторизованный пользователь всегда разрешен'")); + Запрос.УстановитьПараметр("ТекстЗапрещенныеПользователи", " (" + НСтр("ru = 'Запрещенные'") + ") - " + + НСтр("ru = 'авторизованный пользователь всегда разрешен'")); + Запрос.УстановитьПараметр("ТекстОграничениеБезВидовДоступа", "<" + НСтр("ru = 'Ограничение без видов доступа'")+ ">"); + Запрос.УстановитьПараметр("ТекстБезОграничения", "<" + НСтр("ru = 'Без ограничения'") + ">"); + Запрос.УстановитьПараметр("ТекстВсеРазрешены", "<" + НСтр("ru = 'Все разрешены'") + ">"); + Запрос.УстановитьПараметр("ТекстВсеЗапрещены", "<" + НСтр("ru = 'Все запрещены'") + ">"); + Запрос.УстановитьПараметр("ПустыеСсылкиЗначенийДоступа", + УправлениеДоступомСлужебный.ПустыеСсылкиЗначенийДоступа()); Иначе ТекстЗапросаОсновной = ТекстЗапросаБезГруппировкиПоОтчетам; Запрос.Текст = ТекстЗапросаОбщий; @@ -809,25 +1372,6 @@ Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборОтчетовПоТаблицам", "ИСТИНА"); КонецЕсли; - УсловиеОтбораПоПользователям = ""; - Если ОтборПоВходВПрограммуРазрешен() Тогда - УсловиеОтбораПоПользователям = " - | И СоставыГруппПользователей.Используется"; - КонецЕсли; - - ОтборПоПользователям = ОтборПоПользователям(); - Если ЗначениеЗаполнено(ОтборПоПользователям.Значение) И ОтборПоПользователям.БезГрупп Тогда - Запрос.УстановитьПараметр("ВыбранныеПользователиБезГрупп", ОтборПоПользователям.Значение); - УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " - | И СоставыГруппПользователей.Пользователь В (&ВыбранныеПользователиБезГрупп)"; - - ИначеЕсли ЗначениеЗаполнено(ОтборПоПользователям.Значение) Тогда - Запрос.УстановитьПараметр("ВыбранныеПользователиИГруппы", ОтборПоПользователям.Значение); - УсловиеОтбораПоПользователям = УсловиеОтбораПоПользователям + " - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК ОтборПользователей - | ПО (ОтборПользователей.Пользователь = СоставыГруппПользователей.Пользователь) - | И (ОтборПользователей.ГруппаПользователей В (&ВыбранныеПользователиИГруппы))"; - КонецЕсли; Запрос.Текст = Запрос.Текст + УсловиеОтбораПоПользователям; Если ВключенаГруппировкаПоОтчетам Тогда @@ -856,6 +1400,52 @@ КонецФункции +Функция ВариантСОграничениямиДоступа() + + Вариант = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.КлючПредопределенногоВарианта; + + Возврат Вариант = "ПраваПользователяНаТаблицу"; + +КонецФункции + +Функция НастройкиПравПоТаблицеВОтборе() + + Таблица = ОтборПоТаблицам(); + Если Не ЗначениеЗаполнено(Таблица) + Или Не ОписаниеТиповИдентификатора().СодержитТип(ТипЗнч(Таблица)) Тогда + Возврат Неопределено; + КонецЕсли; + + МетаданныеТаблицы = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Таблица, Ложь); + Если МетаданныеТаблицы = Неопределено + Или Не ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеТаблицы) Тогда + Возврат Неопределено; + КонецЕсли; + + МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеТаблицы.ПолноеИмя()); + ПустаяСсылка = МенеджерОбъекта.ПустаяСсылка(); + ТипСсылки = ТипЗнч(ПустаяСсылка); + ВозможныеПрава = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов(); + + ОписаниеПрав = ВозможныеПрава.ПоТипамСсылок.Получить(ТипСсылки); + Если ОписаниеПрав = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Свойства = Новый Структура("Иерархический", Ложь); + ЗаполнитьЗначенияСвойств(Свойства, МетаданныеТаблицы); + + Результат = Новый Структура; + Результат.Вставить("ЕстьИерархия", Свойства.Иерархический); + Результат.Вставить("ОписаниеПрав", ОписаниеПрав); + Результат.Вставить("ТипСсылки", ТипСсылки); + Результат.Вставить("ПустаяСсылка", ПустаяСсылка); + + + Возврат Результат; + +КонецФункции + // Параметры: // КоллекцияЭлементов - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных // СписокПолей - Массив @@ -904,6 +1494,29 @@ КонецФункции +Функция ОтборПоВидуПользователей() + + Если Не Константы.ИспользоватьВнешнихПользователей.Получить() Тогда + Возврат "Пользователи"; + КонецЕсли; + + ПолеОтбора = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("ВидПользователей"); + Если Не ПолеОтбора.Использование Тогда + Возврат ""; + КонецЕсли; + + Если ПолеОтбора.Значение = 0 Тогда + Возврат "Пользователи"; + КонецЕсли; + + Если ПолеОтбора.Значение = 1 Тогда + Возврат "ВнешниеПользователи"; + КонецЕсли; + + Возврат ""; + +КонецФункции + Функция ОтборПоПользователям() Результат = Новый Структура; @@ -969,17 +1582,416 @@ КонецФункции -Процедура УстановитьОтборПоПользователям(НовыеНастройкиКД, СписокПользователей) +Функция НастройкиПравПоОбъектам() - ИмяПараметра = "Пользователь"; + Результат = Новый Структура; + Результат.Вставить("НастройкиПравПоОбъектам", Новый ТаблицаЗначений); + Результат.Вставить("НастройкиПравИерархия", Новый ТаблицаЗначений); + Результат.Вставить("НастройкиПравЛегенда", Новый ТаблицаЗначений); + Результат.Вставить("ВладелецНастроекЗаголовок", ""); - Параметр = НовыеНастройкиКД.ПараметрыДанных.Элементы.Найти(ИмяПараметра); + Если Не ВариантСОграничениямиДоступа() Тогда + Возврат Результат; + КонецЕсли; + + НастройкиПрав = НастройкиПравПоТаблицеВОтборе(); + Если НастройкиПрав = Неопределено Тогда + Возврат Результат; + КонецЕсли; + Результат.ВладелецНастроекЗаголовок = Строка(НастройкиПрав.ТипСсылки); + + ОписаниеПользователя = ОтборПоПользователям().Значение; + Если ТипЗнч(ОписаниеПользователя) = Тип("СписокЗначений") Тогда + Если ОписаниеПользователя.Количество() <> 1 Тогда + Возврат Результат; + КонецЕсли; + Пользователь = ОписаниеПользователя[0].Значение; + Иначе + Пользователь = ОписаниеПользователя; + КонецЕсли; + Если ТипЗнч(Пользователь) <> Тип("СправочникСсылка.Пользователи") + И ТипЗнч(Пользователь) <> Тип("СправочникСсылка.ВнешниеПользователи") Тогда + Возврат Результат; + КонецЕсли; + + Если Пользователи.ЭтоПолноправныйПользователь(Пользователь) Тогда + Возврат Результат; + КонецЕсли; + + ИмяДляПодпапок = ОписаниеКолонкиДляПодпапок().Имя; + ЗаголовкиПрав = ЗаголовкиПрав(НастройкиПрав, ИмяДляПодпапок); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ТипОбъектов", НастройкиПрав.ТипСсылки); + Запрос.УстановитьПараметр("Пользователь", Пользователь); + Запрос.УстановитьПараметр("ИмяДляПодпапок", ИмяДляПодпапок); + Запрос.УстановитьПараметр("ЕстьИерархия", НастройкиПрав.ЕстьИерархия); + Запрос.УстановитьПараметр("ПустойРодитель", НастройкиПрав.ПустаяСсылка); + Запрос.УстановитьПараметр("ЗаголовкиПрав", ЗаголовкиПрав); + Запрос.УстановитьПараметр("ПредставлениеПерсонально", НСтр("ru = 'Персонально'")); + Запрос.УстановитьПараметр("ПредставлениеНеопределено", НСтр("ru = 'Неопределено'")); + Запрос.УстановитьПараметр("ПредставлениеГруппыПользователей", + " (" + НСтр("ru = 'Группа пользователей'") + ")"); + Запрос.УстановитьПараметр("ПредставлениеГруппыВнешнихПользователей", + " (" + НСтр("ru = 'Группа внешних пользователей'") + ")"); + + Запрос.Текст = + "ВЫБРАТЬ + | НастройкиПрав.Объект КАК ВладелецНастроек, + | НастройкиПрав.Пользователь КАК ПользовательНастройки, + | НастройкиПрав.Право КАК НастроенноеПраво, + | ВЫБОР + | КОГДА НастройкиПрав.ПравоЗапрещено + | ТОГДА 2 + | ИНАЧЕ 1 + | КОНЕЦ КАК ЗначениеПрава + |ПОМЕСТИТЬ НастройкиПравПоВладельцам + |ИЗ + | РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав + |ГДЕ + | ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ГДЕ + | СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь + | И СоставыГруппПользователей.Пользователь = &Пользователь) + | И ТИПЗНАЧЕНИЯ(НастройкиПрав.Объект) = &ТипОбъектов + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | НастройкиПрав.Объект, + | НастройкиПрав.Пользователь, + | &ИмяДляПодпапок, + | ВЫБОР + | КОГДА МАКСИМУМ(НастройкиПрав.НаследованиеРазрешено) = ЛОЖЬ + | ТОГДА 2 + | ИНАЧЕ 1 + | КОНЕЦ + |ИЗ + | РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав + |ГДЕ + | &ЕстьИерархия + | И ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ГДЕ + | СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь + | И СоставыГруппПользователей.Пользователь = &Пользователь) + | И ТИПЗНАЧЕНИЯ(НастройкиПрав.Объект) = &ТипОбъектов + | + |СГРУППИРОВАТЬ ПО + | НастройкиПрав.Объект, + | НастройкиПрав.Пользователь + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | РассчитанныеПрава.ВладелецНастроек КАК ВладелецНастроек, + | РассчитанныеПрава.НастроенноеПраво КАК НастроенноеПраво, + | МАКСИМУМ(РассчитанныеПрава.ЗначениеПрава) КАК ЗначениеПрава + |ПОМЕСТИТЬ РассчитанныеПраваПоВладельцам + |ИЗ + | (ВЫБРАТЬ РАЗЛИЧНЫЕ + | НаследованиеНастроек.Объект КАК ВладелецНастроек, + | НастройкиПрав.Право КАК НастроенноеПраво, + | 1 КАК ЗначениеПрава + | ИЗ + | РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав + | ПО (ТИПЗНАЧЕНИЯ(НаследованиеНастроек.Объект) = &ТипОбъектов) + | И (НастройкиПрав.Объект = НаследованиеНастроек.Родитель) + | И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияПрава + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО (СоставыГруппПользователей.Пользователь = &Пользователь) + | И (СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь) + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ РАЗЛИЧНЫЕ + | НаследованиеНастроек.Объект, + | НастройкиПрав.Право, + | 2 + | ИЗ + | РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав + | ПО (ТИПЗНАЧЕНИЯ(НаследованиеНастроек.Объект) = &ТипОбъектов) + | И (НастройкиПрав.Объект = НаследованиеНастроек.Родитель) + | И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияПрава + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО (СоставыГруппПользователей.Пользователь = &Пользователь) + | И (СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь)) КАК РассчитанныеПрава + | + |СГРУППИРОВАТЬ ПО + | РассчитанныеПрава.ВладелецНастроек, + | РассчитанныеПрава.НастроенноеПраво + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | НаследованиеНастроек.Объект КАК ВладелецНастроек, + | НаследованиеНастроек.Наследовать КАК НаследованиеНастроек + |ПОМЕСТИТЬ НаследованиеНастроекПоВладельцам + |ИЗ + | РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек + |ГДЕ + | НаследованиеНастроек.Объект = НаследованиеНастроек.Родитель + | И ТИПЗНАЧЕНИЯ(НаследованиеНастроек.Объект) = &ТипОбъектов + | И ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РассчитанныеПраваПоВладельцам КАК РассчитанныеПраваПоВладельцам + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК Родители + | ПО + | Родители.Объект = РассчитанныеПраваПоВладельцам.ВладелецНастроек + | И Родители.Родитель = НаследованиеНастроек.Объект) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЗаголовкиПрав.ИмяПрава КАК ИмяПрава, + | ЗаголовкиПрав.ЗаголовокПрава КАК ЗаголовокПрава, + | ЗаголовкиПрав.ИндексПрава КАК ИндексПрава + |ПОМЕСТИТЬ ЗаголовкиПрав + |ИЗ + | &ЗаголовкиПрав КАК ЗаголовкиПрав + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ ПЕРВЫЕ 1 + | РассчитанныеПраваПоВладельцам.ВладелецНастроек КАК ВладелецНастроек, + | ЕСТЬNULL(НаследованиеНастроекПоВладельцам.НаследованиеНастроек, ЛОЖЬ) КАК НаследованиеНастроек + |ПОМЕСТИТЬ ОдинВладелецНастроек + |ИЗ + | РассчитанныеПраваПоВладельцам КАК РассчитанныеПраваПоВладельцам + | ЛЕВОЕ СОЕДИНЕНИЕ НаследованиеНастроекПоВладельцам КАК НаследованиеНастроекПоВладельцам + | ПО (НаследованиеНастроекПоВладельцам.ВладелецНастроек = РассчитанныеПраваПоВладельцам.ВладелецНастроек) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВЫБОР + | КОГДА НаследованиеНастроекПоВладельцам.ВладелецНастроек.Родитель <> &ПустойРодитель + | ТОГДА НаследованиеНастроекПоВладельцам.ВладелецНастроек.Родитель + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК РодительВладельцаИлиПользователяНастроек, + | НаследованиеНастроекПоВладельцам.ВладелецНастроек КАК ВладелецИлиПользовательНастроек, + | ПРЕДСТАВЛЕНИЕ(НаследованиеНастроекПоВладельцам.ВладелецНастроек) КАК ВладелецИлиПользовательНастроекПредставление, + | ВЫБОР + | КОГДА НаследованиеНастроекПоВладельцам.ВладелецНастроек.Родитель <> &ПустойРодитель + | ТОГДА НаследованиеНастроекПоВладельцам.ВладелецНастроек.Родитель + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК ВладелецНастроек, + | ИСТИНА КАК ЭтоВладелецНастроек + |ИЗ + | НаследованиеНастроекПоВладельцам КАК НаследованиеНастроекПоВладельцам + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | НастройкиПравПоВладельцам.ВладелецНастроек, + | НастройкиПравПоВладельцам.ПользовательНастройки, + | ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(НастройкиПравПоВладельцам.ПользовательНастройки) = ТИП(Справочник.Пользователи) + | ИЛИ ТИПЗНАЧЕНИЯ(НастройкиПравПоВладельцам.ПользовательНастройки) = ТИП(Справочник.ВнешниеПользователи) + | ТОГДА &ПредставлениеПерсонально + | КОГДА ТИПЗНАЧЕНИЯ(НастройкиПравПоВладельцам.ПользовательНастройки) = ТИП(Справочник.ГруппыПользователей) + | ТОГДА ВЫРАЗИТЬ(НастройкиПравПоВладельцам.ПользовательНастройки КАК Справочник.ГруппыПользователей).Наименование + &ПредставлениеГруппыПользователей + | КОГДА ТИПЗНАЧЕНИЯ(НастройкиПравПоВладельцам.ПользовательНастройки) = ТИП(Справочник.ГруппыВнешнихПользователей) + | ТОГДА ВЫРАЗИТЬ(НастройкиПравПоВладельцам.ПользовательНастройки КАК Справочник.ГруппыВнешнихПользователей).Наименование + &ПредставлениеГруппыВнешнихПользователей + | ИНАЧЕ &ПредставлениеНеопределено + | КОНЕЦ, + | НастройкиПравПоВладельцам.ВладелецНастроек, + | ЛОЖЬ + |ИЗ + | НастройкиПравПоВладельцам КАК НастройкиПравПоВладельцам + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВЫБОР + | КОГДА РассчитанныеПраваПоВладельцам.ВладелецНастроек.Родитель <> &ПустойРодитель + | ТОГДА РассчитанныеПраваПоВладельцам.ВладелецНастроек.Родитель + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ КАК ВладелецНастроек, + | РассчитанныеПраваПоВладельцам.ВладелецНастроек КАК ВладелецИлиПользовательНастроек, + | ИСТИНА КАК ЭтоВладелецНастроек, + | ЕСТЬNULL(НаследованиеНастроекПоВладельцам.НаследованиеНастроек, ЛОЖЬ) КАК НаследованиеНастроекВладельцем, + | ЕСТЬNULL(ЗаголовкиПрав.ЗаголовокПрава, РассчитанныеПраваПоВладельцам.НастроенноеПраво) КАК НастроенноеПраво, + | ЕСТЬNULL(ЗаголовкиПрав.ИндексПрава, 99) КАК ИндексПрава, + | РассчитанныеПраваПоВладельцам.ЗначениеПрава КАК ЗначениеПрава + |ИЗ + | РассчитанныеПраваПоВладельцам КАК РассчитанныеПраваПоВладельцам + | ЛЕВОЕ СОЕДИНЕНИЕ ЗаголовкиПрав КАК ЗаголовкиПрав + | ПО (ЗаголовкиПрав.ИмяПрава = РассчитанныеПраваПоВладельцам.НастроенноеПраво) + | ЛЕВОЕ СОЕДИНЕНИЕ НаследованиеНастроекПоВладельцам КАК НаследованиеНастроекПоВладельцам + | ПО (НаследованиеНастроекПоВладельцам.ВладелецНастроек = РассчитанныеПраваПоВладельцам.ВладелецНастроек) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | НастройкиПравПоВладельцам.ВладелецНастроек, + | НастройкиПравПоВладельцам.ПользовательНастройки, + | ЛОЖЬ, + | ЕСТЬNULL(НаследованиеНастроекПоВладельцам.НаследованиеНастроек, ЛОЖЬ), + | ЕСТЬNULL(ЗаголовкиПрав.ЗаголовокПрава, НастройкиПравПоВладельцам.НастроенноеПраво), + | ЕСТЬNULL(ЗаголовкиПрав.ИндексПрава, 99), + | НастройкиПравПоВладельцам.ЗначениеПрава + |ИЗ + | НастройкиПравПоВладельцам КАК НастройкиПравПоВладельцам + | ЛЕВОЕ СОЕДИНЕНИЕ ЗаголовкиПрав КАК ЗаголовкиПрав + | ПО (ЗаголовкиПрав.ИмяПрава = НастройкиПравПоВладельцам.НастроенноеПраво) + | ЛЕВОЕ СОЕДИНЕНИЕ НаследованиеНастроекПоВладельцам КАК НаследованиеНастроекПоВладельцам + | ПО (НаследованиеНастроекПоВладельцам.ВладелецНастроек = НастройкиПравПоВладельцам.ВладелецНастроек) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ВЫБОР + | КОГДА ОдинВладелецНастроек.ВладелецНастроек.Родитель <> &ПустойРодитель + | ТОГДА ОдинВладелецНастроек.ВладелецНастроек.Родитель + | ИНАЧЕ НЕОПРЕДЕЛЕНО + | КОНЕЦ, + | ОдинВладелецНастроек.ВладелецНастроек, + | ИСТИНА, + | ОдинВладелецНастроек.НаследованиеНастроек, + | ЗаголовкиПрав.ЗаголовокПрава, + | ЗаголовкиПрав.ИндексПрава, + | 0 + |ИЗ + | ЗаголовкиПрав КАК ЗаголовкиПрав + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОдинВладелецНастроек КАК ОдинВладелецНастроек + | ПО (НЕ ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РассчитанныеПраваПоВладельцам КАК РассчитанныеПрава + | ГДЕ + | РассчитанныеПрава.НастроенноеПраво = ЗаголовкиПрав.ИмяПрава))"; + + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + + Результат.НастройкиПравИерархия = РезультатыЗапроса[РезультатыЗапроса.ВГраница()-1].Выгрузить(); + Результат.НастройкиПравПоОбъектам = РезультатыЗапроса[РезультатыЗапроса.ВГраница()].Выгрузить(); + Результат.НастройкиПравЛегенда = НастройкиПравЛегенда(ЗаголовкиПрав, НастройкиПрав.ЕстьИерархия); + + Возврат Результат; + +КонецФункции + +Функция ЗаголовкиПрав(НастройкиПрав, ИмяДляПодпапок) + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("ИмяПрава", Новый ОписаниеТипов("Строка", + ,,, Новый КвалификаторыСтроки(60, ДопустимаяДлина.Переменная))); + Результат.Колонки.Добавить("ИндексПрава", Новый ОписаниеТипов("Число", + ,, Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный))); + Результат.Колонки.Добавить("ЗаголовокПрава", Новый ОписаниеТипов("Строка", + ,,, Новый КвалификаторыСтроки(60, ДопустимаяДлина.Переменная))); + Результат.Колонки.Добавить("ПодсказкаПрава", Новый ОписаниеТипов("Строка", + ,,, Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная))); + + Для Каждого ОписаниеПрава Из НастройкиПрав.ОписаниеПрав Цикл + ПредставленияПрава = РегистрыСведений.НастройкиПравОбъектов.ПредставлениеВозможногоПрава(ОписаниеПрава); + НоваяСтрока = Результат.Добавить(); + НоваяСтрока.ИмяПрава = ОписаниеПрава.Имя; + НоваяСтрока.ИндексПрава = ОписаниеПрава.ИндексПрава; + НоваяСтрока.ЗаголовокПрава = СтрЗаменить(ПредставленияПрава.Заголовок, Символы.ПС, " "); + НоваяСтрока.ПодсказкаПрава = СтрЗаменить(ПредставленияПрава.Подсказка, Символы.ПС, " "); + КонецЦикла; + + Если НастройкиПрав.ЕстьИерархия Тогда + ОписаниеКолонки = ОписаниеКолонкиДляПодпапок(); + НоваяСтрока = Результат.Добавить(); + НоваяСтрока.ИмяПрава = ОписаниеКолонки.Имя; + НоваяСтрока.ИндексПрава = НастройкиПрав.ОписаниеПрав.Количество(); + НоваяСтрока.ЗаголовокПрава = ОписаниеКолонки.Заголовок; + НоваяСтрока.ПодсказкаПрава = ОписаниеКолонки.Подсказка; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Функция ОписаниеКолонкиДляПодпапок() + + Результат = Новый Структура; + Результат.Вставить("Имя", "ДляПодпапок"); + Результат.Вставить("Заголовок", НСтр("ru = 'Для подпапок'")); + Результат.Вставить("Подсказка", + НСтр("ru = 'Права не только для текущей папки, но и для ее нижестоящих папок'")); + + Возврат Результат; + +КонецФункции + +Функция НастройкиПравЛегенда(ЗаголовкиПрав, ЕстьИерархия) + + Результат = ЗаголовкиПрав.Скопировать(, "ЗаголовокПрава,ПодсказкаПрава"); + + Если ЕстьИерархия Тогда + НоваяСтрока = Результат.Вставить(0); + НоваяСтрока.ЗаголовокПрава = ""; + НоваяСтрока.ПодсказкаПрава = НСтр("ru = 'Наследование прав от вышестоящих папок'"); + КонецЕсли; + + Для Каждого Строка Из Результат Цикл + Строка.ПодсказкаПрава = "- " + Строка.ПодсказкаПрава; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Процедура УстановитьОтбор(ИмяПараметра, Значение, НастройкиКомпоновки, ПользовательскиеНастройки) + + ЭлементНастройки = ПользовательскаяНастройкаПараметра(ПользовательскиеНастройки, + Новый ПараметрКомпоновкиДанных(ИмяПараметра)); + + Если ЭлементНастройки <> Неопределено Тогда + ЭлементНастройки.Использование = Истина; + ЭлементНастройки.Значение = Значение; + Возврат; + КонецЕсли; + + Параметр = НастройкиКомпоновки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если Параметр = Неопределено Тогда - НовыеНастройкиКД = КомпоновщикНастроек.Настройки; - Параметр = НовыеНастройкиКД.ПараметрыДанных.Элементы.Найти(ИмяПараметра); + НастройкиКД = КомпоновщикНастроек.Настройки; + Параметр = НастройкиКД.ПараметрыДанных.Элементы.Найти(ИмяПараметра); КонецЕсли; Параметр.Использование = Истина; - Параметр.Значение = СписокПользователей; + Параметр.Значение = Значение; + +КонецПроцедуры + +Функция ПользовательскаяНастройкаПараметра(ПользовательскиеНастройки, Параметр) + + Для Каждого ЭлементНастройки Из ПользовательскиеНастройки.Элементы Цикл + Свойства = Новый Структура("Параметр"); + ЗаполнитьЗначенияСвойств(Свойства, ЭлементНастройки); + Если Свойства.Параметр = Параметр Тогда + Возврат ЭлементНастройки; + КонецЕсли; + КонецЦикла; + + Возврат Неопределено; + +КонецФункции + +Процедура ОтключитьГруппировки(НастройкиКомпоновщика, ИменаГруппировок) + + Имена = СтрРазделить(ИменаГруппировок, ",", Ложь); + Для Каждого Группировка Из НастройкиКомпоновщика.Структура Цикл + Если Имена.Найти(Группировка.Имя) = Неопределено Тогда + Продолжить; + КонецЕсли; + Группировка.Использование = Ложь; + КонецЦикла; КонецПроцедуры diff --git a/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs b/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs index 1707f172e..7f74083ee 100644 --- a/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs +++ b/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs @@ -36,6 +36,8 @@ true + d5p1:CatalogRef.ВнешниеПользователи + d5p1:CatalogRef.ГруппыВнешнихПользователей d5p1:CatalogRef.ГруппыПользователей d5p1:CatalogRef.Пользователи @@ -223,9 +225,585 @@ xs:boolean + + ВидДоступа + ВидДоступа + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа</v8:content> + </v8:item> + + ВидДоступаПредставление + + 9a33b5dc-a8f1-496e-9961-95890984cd86 + + + + ВсеРазрешены + ВсеРазрешены + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Все разрешены</v8:content> + </v8:item> + + + xs:boolean + + + + Формат + + + ru + БЛ=Разрешенные; БИ=Запрещенные + + + + + + + ЗначениеДоступа + ЗначениеДоступа + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Значение доступа</v8:content> + </v8:item> + + + 9a33b5dc-a8f1-496e-9961-95890984cd86 + + + + ВидДоступаПредставление + ВидДоступаПредставление + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа представление</v8:content> + </v8:item> + + + xs:string + + 150 + Variable + + + + + ПравоЧтениеБезОграничения + ПравоЧтениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Право чтение без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ПравоИзменениеБезОграничения + ПравоИзменениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Право изменение без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ПравоДобавлениеБезОграничения + ПравоДобавлениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Право добавление без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ПравоБезОграничения + ПравоБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Право без ограничения</v8:content> + </v8:item> + + + xs:decimal + + 1 + 0 + Nonnegative + + + + + false + Формат + + + + + 1 + + + ru + Просмотр без ограничения + + + + + 2 + + + ru + Редактирование без ограничения + + + + + 3 + + + ru + Создание без ограничения + + + + + + ВидДоступаПравоЧтениеБезОграничения + ВидДоступаПравоЧтениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право чтение без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ВидДоступаПравоИзменениеБезОграничения + ВидДоступаПравоИзменениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право изменение без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ВидДоступаПравоДобавлениеБезОграничения + ВидДоступаПравоДобавлениеБезОграничения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право добавление без ограничения</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ВидДоступаПравоПросмотр + ВидДоступаПравоПросмотр + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право просмотр</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ВидДоступаПравоРедактирование + ВидДоступаПравоРедактирование + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право редактирование</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + + + ВидДоступаПравоИнтерактивноеДобавление + ВидДоступаПравоИнтерактивноеДобавление + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид доступа право интерактивное добавление</v8:content> + </v8:item> + + + xs:boolean + + + + false + Формат + + + + ИсточникДанных1 ПраваПользователей + + НастройкиПравПоОбъектам + + ВладелецНастроек + ВладелецНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Владелец настроек</v8:content> + </v8:item> + + + a02405f8-0a56-4b5a-a885-91715df29d5c + + + + ВладелецИлиПользовательНастроек + ВладелецИлиПользовательНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Владелец или пользователь настроек</v8:content> + </v8:item> + + + d5p1:AnyRef + + + + ЭтоВладелецНастроек + ЭтоВладелецНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Это владелец настроек</v8:content> + </v8:item> + + + xs:boolean + + + + НаследованиеНастроекВладельцем + НаследованиеНастроекВладельцем + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Наследование настроек владельцем</v8:content> + </v8:item> + + + xs:boolean + + + + НастроенноеПраво + НастроенноеПраво + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настроенное право</v8:content> + </v8:item> + + + xs:string + + 60 + Variable + + + + + ЗначениеПрава + ЗначениеПрава + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Значение права</v8:content> + </v8:item> + + + xs:decimal + + 1 + 0 + Nonnegative + + + + + + + ru + Не назначено + + + + + 1 + + + ru + Разрешено + + + + + 2 + + + ru + Запрещено + + + + + + ИндексПрава + ИндексПрава + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Индекс права</v8:content> + </v8:item> + + + xs:decimal + + 2 + 0 + Nonnegative + + + + ИсточникДанных1 + НастройкиПравПоОбъектам + + + НастройкиПравЛегенда + + ЗаголовокПрава + ЗаголовокПрава + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Заголовок права</v8:content> + </v8:item> + + + xs:string + + 60 + Variable + + + + + ПодсказкаПрава + ПодсказкаПрава + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Подсказка права</v8:content> + </v8:item> + + + xs:string + + 150 + Variable + + + + ИсточникДанных1 + НастройкиПравЛегенда + + + НастройкиПравИерархия + + РодительВладельцаИлиПользователяНастроек + РодительВладельцаИлиПользователяНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Родитель владельца или пользователя настроек</v8:content> + </v8:item> + + + a02405f8-0a56-4b5a-a885-91715df29d5c + + + + ВладелецИлиПользовательНастроек + ВладелецИлиПользовательНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Владелец или пользователь настроек</v8:content> + </v8:item> + + ВладелецИлиПользовательНастроекПредставление + + d5p1:AnyRef + + + + ВладелецНастроек + ВладелецНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Владелец настроек</v8:content> + </v8:item> + + + a02405f8-0a56-4b5a-a885-91715df29d5c + + + + ЭтоВладелецНастроек + ЭтоВладелецНастроек + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Это владелец настроек</v8:content> + </v8:item> + + + xs:boolean + + + + ВладелецИлиПользовательНастроекПредставление + ВладелецИлиПользовательНастроекПредставление + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Владелец или пользователь настроек представление</v8:content> + </v8:item> + + + xs:string + + 250 + Variable + + + + ИсточникДанных1 + НастройкиПравИерархия + + + НастройкиПравИерархия + НастройкиПравИерархия + ВладелецИлиПользовательНастроек + РодительВладельцаИлиПользователяНастроек + Неопределено + + + НастройкиПравИерархия + НастройкиПравПоОбъектам + ВладелецИлиПользовательНастроек + ВладелецИлиПользовательНастроек + + + НастройкиПравИерархия + НастройкиПравПоОбъектам + ВладелецНастроек + ВладелецНастроек + + + НастройкиПравИерархия + НастройкиПравПоОбъектам + ЭтоВладелецНастроек + ЭтоВладелецНастроек + Право Максимум(Право) @@ -252,6 +830,51 @@ ВходВПрограммуРазрешен Минимум(ВходВПрограммуРазрешен) + + ПравоБезОграничения + Максимум(ПравоБезОграничения) + ОбъектМетаданных + + + ПравоЧтениеБезОграничения + Максимум(ПравоЧтениеБезОграничения) + + + ПравоИзменениеБезОграничения + Максимум(ПравоИзменениеБезОграничения) + + + ПравоДобавлениеБезОграничения + Максимум(ПравоДобавлениеБезОграничения) + + + ВидДоступаПравоЧтениеБезОграничения + Максимум(ВидДоступаПравоЧтениеБезОграничения) + + + ВидДоступаПравоИзменениеБезОграничения + Максимум(ВидДоступаПравоИзменениеБезОграничения) + + + ВидДоступаПравоДобавлениеБезОграничения + Максимум(ВидДоступаПравоДобавлениеБезОграничения) + + + ВидДоступаПравоПросмотр + Максимум(ВидДоступаПравоПросмотр) + + + ВидДоступаПравоРедактирование + Максимум(ВидДоступаПравоРедактирование) + + + ВидДоступаПравоИнтерактивноеДобавление + Максимум(ВидДоступаПравоИнтерактивноеДобавление) + + + ЗначениеПрава + ЗначениеПрава + Пользователь @@ -261,12 +884,51 @@ </v8:item> + d4p1:CatalogRef.ВнешниеПользователи + d4p1:CatalogRef.ГруппыВнешнихПользователей d4p1:CatalogRef.ГруппыПользователей d4p1:CatalogRef.Пользователи false true + + ВидПользователей + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Вид пользователей</v8:content> + </v8:item> + + + xs:decimal + + 1 + 0 + Nonnegative + + + + false + + + + + ru + Внутренние + + + + + 1 + + + ru + Внешние + + + + + + + + + + - - - + +